Kapitel 50. PHP benutzen

Diese Rubrik behandelt die beim Schreiben von PHP-Skripten am häufigsten auftretenden Fehler .

1. Ich möchte ein PHP-Skript schreiben, das Daten von beliebigen Formularen verarbeiten kann. Woher weiß ich, welche Variablen über die POST-Methode verfügbar sind?
2. Ich möchte alle einfachen Anführungszeichen (') in einen Backslash gefolgt von einem einfachen Anführungszeichen konvertieren. Wie kann ich das mit einem regulären Ausdruck machen?
3. Wenn ich den folgenden Code ausführe, wird die Ausgabe in der falschen Reihenfolge ausgegeben:



Woran liegt das?
4. Wo sind meine Zeilenumbrüche geblieben?
 
pre

 
?php

 
echo

 
"

 
Das

 
soll

 
die

 
erste

 
Zeile

 
sein

 
."

 
;

 
?

 
?php

 
echo

 
"Das

 
soll

 
nach

 
dem

 
obigen

 
Zeilenumbruch

 
erscheinen

 
."

 
;

 
?

 
/

 
pre



5. Ich bekommen die Meldung 'Warning: Cannot send session cookie - headers already sent...' oder 'Cannot add header information - headers already sent...'.
6. Wie kann ich auf Informationen aus dem Request-Header zugreifen?
7. Wenn ich versuche, Authentifikation mit IIS zu nutzen, bekomme ich die Meldung 'No Input file specified'.
8. Mein PHP-Skript funktioniert unter IE und Lynx, aber unter Netscape fehlt ein Teil meiner Ausgabe. Wenn ich mir den Quelltext anschaue, sehe ich die Ausgabe unter IE, aber nicht unter Netscape.
9. Wie kann ich XML und PHP mischen? PHP beschwert sich über meine ?xml -Tags!
10. Wie kann ich mit PHP mit Frontpage oder einem anderen HTML-Editor, der meinen Code verschiebt, benutzen?
11. Wo kann ich eine komplette Liste der mir zur Verfügung stehenden Variablen finden und warum sind diese Variablen nicht in der PHP-Dokumentation zu finden?
12. Ich versuche, auf eine der Standard-CGI-Variablen (wie $DOCUMENT_ROOT oder $HTTP_REFERER) in einer selbst-definierten Funktion zuzugreifen, aber anscheinend kann ich nicht darauf zugreifen. Was mache ich falsch?

Stellen Sie sicher , dass track_vars in Ihrer php.ini aktiviert ist ( Standardeinstellung seit PHP 4.0.3 ) . Wenn track_vars aktiviert ist , erstellt PHP einige assoziative Arrays . Das wichtige Array ist in diesem Fall $_POST ( in PHP-Versionen vor 4.1.0 war der Name hierfür $HTTP_POST_VARS ) . Wenn Sie ein PHP-Skript schreiben möchten , das die Variablen , die über die POST-Methode verfügbar sind , verarbeitet , dann müssen Sie ähnlich wie im folgenden Beispiel vorgehen :






Die Funktionen header( ) , setcookie( ) und die Session-Funktionen müssen Header dem Output-Stream hinzufügen . Header können aber nur gesendet werden , wenn Sie vor allen anderen Daten gesendet werden . Prüfen Sie also , ob Ihr Skript Header sendet , nachdem bereits irgendetwas ausgegeben wurde .

Wie kann ich auf Informationen aus dem Request-Header zugreifen ?

Wenn Sie PHP als Apache-Modul laufen lassen , liefert Ihnen die getallheaders( ) -Funktion die gewünschten Informationen . Der folgende Code gibt alle Request-Header aus :






Netscape verarbeitet HTML-Tags ( z.B . Tabellen ) strenger als der IE . Meist ist es hilfreich , wenn Sie Ihre HTML-Ausgabe mit einem HTML-Validator ( z.B . validator.w3.org ) prüfen . Z.B . kann ein fehlendes / table den Fehler verursachen .

IE und Lynx ignorieren auch NULs ( \0 ) im HTML-Stream , Netscape nicht . Um dies zu überprüfen , kompilieren Sie am besten die Kommandozeilen -Version von PHP ( auch bekannt als die CGI-Version ) und führen Sie Ihr Skript auf der Kommandozeile aus . Unter Unix pipen Sie es durch od -c und schauen Sie nach \0 Zeichen . Unter Windows müssen Sie einen Editor oder ein anderes Programm benutzen , das es Ihnen ermöglicht , binäre Dateien anzuschauen . Wenn Netscape ein NUL in einer Datei findet , gibt es normalerweise in dieser Zeile nichts mehr aus , während IE und Lynx die Zeile normal ausgeben .

Wie kann ich XML und PHP mischen ? PHP beschwert sich über meine ?xml -Tags !

Sie müssen die Kurzform der öffnenden PHP-Tags abschalten , indem Sie in Ihrer php.ini short_tags Sie müssen die Kurzform der öffnenden PHP-Tags abschalten , indem Sie in Ihrer php.ini short_tags auf 0 setzen oder indem Sie die gleichwertige Apache-Direktive benutzen . Sie können dies auch innerhalb einer File -Sektion machen .

Wie kann ich mit PHP mit Frontpage oder einem anderen HTML-Editor , der meinen Code verschiebt , benutzen ?

Die einfachste Möglichkeit ist , ASP-Tags in Ihrem PHP-Code zu aktivieren . Sie können dann % und % zur Begrenzung Ihres Codes verwenden . Viele HTML-Editoren verarbeiten solche Code-Blöcke intelligenter . Um die ASP-Tags zu aktiveren , müssen Sie in Ihrer php.ini asp_tags auf On setzen oder die gleichwertige Apache-Direktive verwenden .