PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Als Resultat HTML zurückgeben...



bischi
20-03-2004, 08:07
Hallo zusammen,

ich hab leider absolut keine Ahnung von PHP, möchte aber ein Skript für meine Bedürfnisse abändern. Dieses Skript überprüft die Eingaben eines Formulars und sendet dieses an eine Mail-Adresse. Folgende Zeile wird ausgegeben, falls alles korrekt ist.


$nachricht_OK="Bestellung gesendet!";

So kommt einfach eine weisse Seite, die dann oben links den schwarzen Text hat.

So, nun meine Frage: Anstatt dieser hässlichen weissen Seite mit dem schwarzen Text möchte ich lieber einen HTML-Formatierten Text ausgeben (beispielsweise erstes Wort in Rot und zweites Wort in Grün, alles zentriert).

Wenn ich anstatt den String HTML-Code eingebe, so erscheint dieser bereits auf der Formularseite, was wenig Sinn macht. Kann mir jemand sagen, wie ich das abändern muss? (hab leider mit suchen keine brauchbare Lösung gefunden)

MfG Bischi

undefined
20-03-2004, 08:55
Eine Html Mail wird durch den Header oder auch content-type bestimmt.
http://de3.php.net/manual/de/function.mail.php

bischi
20-03-2004, 09:21
Sorry, du hast mich falsch verstanden: Ich möchte nicht das Mail formatieren, sondern die Bestätigung, dass das Mail erfolgreich verschickt wurde (und die nach dem klicken auf den absenden-Button direkt im Browser erscheint).

MfG Bischi

offe
20-03-2004, 10:45
Du suchst in dem Script nach : "Bestellung gesendet!".

dann esetzt du :

echo "...Bestellung gesendet!...";


durch


?>
<html>
...
<font color="#FF0000">$nachricht_OK</font>=<font color="#0000FF">"Bestellung gesendet!"</font>;
...
</body>
<?php


Offe

bischi
20-03-2004, 16:59
Das funktioniert so nicht - der Text wird bereits am Anfang oben auf das Formular geschrieben...

Ich versuchs nochmals zu erklären:

Anstatt den in der Variablen


$nachricht_OK="Bestellung gesendet!";

gespeicherten Text der beim klicken des Absenden-Buttons in einer leeren HTML-Seite angegeben wird, möchte ich den selben Text ausgeben, nur HTML-formatiert (beispielsweise fett, rot und zentriert). Ich erhalte logischerweise einen Fehler, da ich für HTML-Tags Anführungzeichen (") brauche, die die Zuweisung der Variabeln frühzeitig beenden und den restlichen Code stören.

Damit dieser Text erscheint, ist im Skript folgende Anweisung vorhanden:


echo "$nachricht_OK";

Wie kann ich die Variable so anpassen, dass anstatt des Textes ein HTML-formatierter Text zu sehen ist?

MfG Bischi

magpie
20-03-2004, 18:09
Die Anführungszeichen musst du Escapen. Das heist, du musst vor jedes Anführungszeichen ein Backslash machen


<?php
<html>
...
<font color=\"#FF0000\">$nachricht_OK</font>;
...
</body>
?>


Damit die Meldung nicht schon am Anfang erscheint, solltest du sie in eine IF-Abfrage stellen. Diese überprüft ob das Formular abgesendet wurde.



if(isset($send)){
// HTML-Teil
}

$send ist die der name des Sendebuttons.
Ich denk das ist das was du suchst.

magpie

sixfriends
21-03-2004, 02:09
$send ist dummerweise nur verfügbar, wenn register_globals auf on steht (sollte man nicht machen), daher statt $send einfach $_REQUEST['send'] einfügen.

Was den String angeht:
Bei Strings in " " müssen ziemlich viele Zeichen escaped werden, daher würde ich dir empfehlen den String stattdessen in ' ' zu setzen, da muss nur das Zeichen ' escaped werden (durch \\' ), wird dann um einiges übersichtlicher

bischi
21-03-2004, 12:33
@ magpie: Das war genau, was ich gesucht hab!!!


Die Anführungszeichen musst du Escapen. Das heist, du musst vor jedes Anführungszeichen ein Backslash machen

Hab mir schon so was gedacht, wusste aber nicht, wie das unter PHP gemacht wird und hab leider auch keinen eigenen PHP-Server, wo ich das ausprobieren könnte. Das mit der if-Anweisung ist bereits realisiert - wie gesagt: Ich wollte nur ein bestehendes Skript für nen Kollegen abändern.

MfG Bischi

Noch so ne Frage: Gibt es eigentlich eine Längenbegrenzung für diese Art von String unter PHP? Kennt jemand einen guten Free-Host mit PHP-Unterstützung (hab keine Lust was dafür zu zahlen und mir selbst nen lokalen Server einzurichten bin ich zu faul...)

sixfriends
21-03-2004, 13:14
Kannst ja mal unter http://www.kostenlos.de nachgucken, Link: Internet.

Falls du einen Webserver zum lokalen testen brauchst, kann ich dir http://www.apachefriends.org/ nur wärmstens empfehlen. xampp ist apache, mysql, php und perl vorinstalliert, nur irgendwo hin entpacken und läuft (falls nicht, readme lesen)

magpie
21-03-2004, 22:22
Original geschrieben von sixfriends
$send ist dummerweise nur verfügbar, wenn register_globals auf on steht (sollte man nicht machen), daher statt $send einfach $_REQUEST['send'] einfügen.


Das ist mir schon klar. Ich hab das nur nicht beachtet in dem Beispiel.