Frage zu Ausgabe echo""
friedrich
- php
0 Nixwisser0 friedrich0 Ingo Turski
Hallo.
Ich habe ein Kontaktformular (html), der Button Senden löst die Aktion mailer.php aus. In dieser File werden die Eingaben überprüft, etc.. In den verschiedenen echos"" habe ich verschiedene "Antwortseiten", je nach Erfolg oder Misserfolg der Übermittlung.. Nun sorgen die ""(im Gegensatz zu '') ja dafür, dass echo versucht, den Inhalt zu interpretieren..
Heißt das, ich kann hier tatsächlich meinen ganzen Quellcode der Webseite einbauen (von <Doctype... bis ...../html, mit entsprechender Ausgabe im Bereich Content), oder gibts es mit komplexen Seiten da Probleme, sprich sollte ich stattdessen eine einfache (leere File mit kurzem Satz und Zurückbutton)als Antwortseite verwenden?
Gibt es die Möglichkeit, in das Echo auch ein Redirct (header..) einzubauen, also einen Verweis (das wäre mir am liebsten)?
Zweite Frage.. Meine phpscripts liegen in einem anderern Ordner als der tatsächliche Inhalt der Webseite (den .html-files).. Wenn durch Senden nun mailer.php aktiv (daten/phpscripts/mailer.php) wird und ich dort ein echo"" ausgebe, befinde ich mich dann immer noch im Verzeichnis, wo die Webseite liegt (/) oder im Verzeichnis /daten/phpscripts/mailer.php (was ein Problem wäre)?
Ich hoffe, ich konnte mein Problem verständlich darlegen..
Danke.
MfG.
Nun sorgen die ""(im Gegensatz zu '') ja dafür, dass echo versucht, den Inhalt zu interpretieren..
Nein, es wird lediglich versucht, Variablen zu erkennen (was IMHO schon schlimm genug ist, aber das tut hier nichts zur Sache).
Heißt das, ich kann hier tatsächlich meinen ganzen Quellcode der Webseite einbauen
Die Herleitung verstehe ich nicht ganz, aber davon abgesehen: Große HTML-Stücke kannst in in PHP-Skripten auch dadurch einbauen bzw. ausgeben, dass Du den PHP-Bereich vorübergehend mit ?> und <?php verlässt. Folgende zwei Beispiele wären also in der Funktionsweise identisch:
<?php
if ($a == 1) {
?>
A ist 1!
<?php
}
else {
?>
A ist nicht 1
<?php
}
<?php
if ($a == 1) {
echo "A ist 1!";
}
else {
echo "A ist nicht 1";
}
Gibt es die Möglichkeit, in das Echo auch ein Redirct (header..) einzubauen, also einen Verweis (das wäre mir am liebsten)?
Eine Weiterleitung installierst Du mittels der Funktion header(), nicht mit echo. Beachte aber die Vorgaben bezüglich der Statuscodes und Zielangabe (namentlich: absolute URL mitsamt http:// angeben, keine relative). Für die Antwort auf Formulardaten ist eigentlich nur 303 vorgesehen.
Wenn durch Senden nun mailer.php aktiv (daten/phpscripts/mailer.php) wird und ich dort ein echo"" ausgebe, befinde ich mich dann immer noch im Verzeichnis, wo die Webseite liegt (/) oder im Verzeichnis /daten/phpscripts/mailer.php (was ein Problem wäre)?
Wer soll sich wo befinden? Das PHP-Skript arbeitet in dem Verzeichnis, in dem es liegt, der HTML-Code bzw. der Browser arbeitet in dem Verzeichnis, das sich aus der aktiven URL ergibt. Das kann, muss aber nicht dasselbe sein.
Du müsstest schon genauer sagen, wer "ich" sein soll (PHP-Interpreter oder Webbrowser) und in welchem Umfeld "ich" agiert.
Hallo.
<?php
if ($a == 1) {
?>
A ist 1!
<?php
}
else {
?>
A ist nicht 1
<?php
}<?php
if ($a == 1) {
echo "A ist 1!";
}
else {
echo "A ist nicht 1";
}
Aha. Interessant.
Eine Weiterleitung installierst Du mittels der Funktion header(), nicht mit echo. Beachte aber die Vorgaben bezüglich der Statuscodes und Zielangabe (namentlich: absolute URL mitsamt http:// angeben, keine relative). Für die Antwort auf Formulardaten ist eigentlich nur 303 vorgesehen.
Also zB: ... if ($errormsg) { header ("Location: absoluteURL")}.. So?
Danke dir auf jeden Fall mal für die Antwort.
Ich habe mich mittlerweile dafür entschieden, diesen Formmailer von Patrick Canterino zu verwenden.
Nun hierzu auch wieder Fragen: Muss ich die Datei dann als .php (nehme ich mal an) oder als .html speichern?
Und: was ruft die Angabe action="<?php print $_SERVER['PHP_SELF']; ?>" auf?
Dankeschön.
MfG.
Hi,
Hallo.
<?php
if ($a == 1) {
?>
A ist 1!
<?php
}
else {
?>
A ist nicht 1
<?php
}
Aha. Interessant.
aber schlechter Stil wegen der überkreuzten Verschachtelung und damit auch Unübersichtlichkeit.
Also zB: ... if ($errormsg) { header ("Location: absoluteURL")}.. So?
Nein. Dann wird nicht der Statuscode für die Meldung eines Fehlers gesendet - den musst Du schon selbst mitsenden.
Ich habe mich mittlerweile dafür entschieden, diesen Formmailer von Patrick Canterino zu verwenden.
Nun hierzu auch wieder Fragen: Muss ich die Datei dann als .php (nehme ich mal an) oder als .html speichern?
Das kommt auf die Konfigurierung Deines Servers an. I.d.R. werdeen *.html Dateien nicht nach PHP-Code geparsed.
Und: was ruft die Angabe action="<?php print $_SERVER['PHP_SELF']; ?>" auf?
Normalerweise die gerade angezeigte URL, also die aktuelle Seite (Stichwort "Affenformular", das sich solange selbst aufruft, bis alle Eingaben ok sind). Besser wäre allerdings $_SERVER['SCRIPT_NAME'], da diese Angabe nicht vom User manipulierbar ist.
freundliche Grüße
Ingo
<?php
if ($a == 1) {
?>
A ist 1!
<?php
}
else {
?>
A ist nicht 1
<?php
}Aha. Interessant.
aber schlechter Stil wegen der überkreuzten Verschachtelung und damit auch Unübersichtlichkeit.
Die Übersichtlichkeit nimmt rapide wieder zu, sobald dutzendweise HTML-Zeilen ausgegeben werden sollen. Für eine Zeile lohnt sich das natürlich nicht, aber es war auch nur ein Beispiel.
Also zB: ... if ($errormsg) { header ("Location: absoluteURL")}.. So?
Nein. Dann wird nicht der Statuscode für die Meldung eines Fehlers gesendet - den musst Du schon selbst mitsenden.
Jein, header() zusammen mit Location: führt automatisch zu einer 301-Weiterleitung. Für eine 303-Weiterleitung müsste es aber in Tat so aussehen:
header("HTTP/1.0 303 See other");
header("Location: http://example.com/bla/fasel/");
Hi,
aber schlechter Stil wegen der überkreuzten Verschachtelung und damit auch Unübersichtlichkeit.
Die Übersichtlichkeit nimmt rapide wieder zu, sobald dutzendweise HTML-Zeilen ausgegeben werden sollen. Für eine Zeile lohnt sich das natürlich nicht, aber es war auch nur ein Beispiel.
auch für 100 Zeilen finde ich das unübersichtlicher, als z.B.
echo '
html-code
html-code
html-code
...
';
und es ist ja nicht nur die (Un)übersichtlichkeit, sondern auch die (Un)logik dieser überkreuzten Schachtelung.
freundliche Grüße
Ingo