Heute gebe ich Ihnen einen Überblick über die Probleme, die PHP-Anfängern bereiten. Die 14 unten aufgeworfenen Fragen sollen für PHP-Anfänger hilfreich sein.
1. Variablen
get, post und session können nicht zwischen Seiten übertragen werden. In der neuesten PHP-Version sind automatische globale Variablen deaktiviert. Um die übermittelten Variablen von der vorherigen Seite abzurufen, verwenden Sie $_GET['foo'], $_POST [ 'foo'],$_SESSION['foo'] zum Abrufen. Natürlich können Sie auch die automatischen globalen Variablen so ändern, dass sie aktiviert sind (php.ini wird in register_globals = On geändert). Aus Kompatibilitätsgründen ist es besser, sich mit der neuen Schreibmethode vertraut zu machen.
2. Wenn Apache2 die get-Methode zum Übergeben chinesischer Parameter unter Win32 verwendet, tritt ein Fehler auf:
Test.php
?a=Hello&b=Hello.
Die Übergabe von Parametern führt zu einem internen Fehler
(Hallo)."&b=".urlencode (gern geschehen)
...
3. Die Sitzung unter win32 funktioniert standardmäßig nicht
auf session.save_path = /tmp.
Dies ist offensichtlich die Konfiguration unter Linux unter win32 Die Sitzungsdatei kann nicht gelesen und geschrieben werden, wodurch die Sitzung unbrauchbar wird
. Ändern Sie sie einfach in einen absoluten Pfad, z. B. session.save_path = c:windowstemp
4.
Wenn display_errors = On und error_reporting = E_ALL in php.ini. Es ist am besten, es während des Debuggens zur Fehlerkorrektur zu aktivieren. Wenn Sie die vorherige PHP-Schreibmethode verwenden, beziehen sich die meisten Fehlermeldungen auf undefinierte Variablen. Wenn eine Variable aufgerufen wird, wird eine Eingabeaufforderung angezeigt, bevor ihr ein Wert zugewiesen wird. Die Lösung besteht darin, sie zu erkennen oder abzuschirmen.
Um beispielsweise $foo anzuzeigen, können Sie if(isset($foo)) echo $foo oder echo @$foo
5 verwenden. Mail() kann keine E-Mails unter Win32 senden
. Unter Win32 ist dies erforderlich Rufen Sie den SMTP-Server auf. Ändern Sie das SMTP von php.ini = ip //ip ist ein SMTP-Server ohne Überprüfungsfunktion (im Internet schwer zu finden). Die beste Lösung zum Senden von E-Mails in PHP ist die Verwendung von Socket to Senden Sie direkt an den E-Mail-Server der anderen Partei statt an den Weiterleitungsserver.
6. Wenn das Passwort für die Erstinstallation von MySQL nicht festgelegt ist, sollten Sie
update mysql.user set password="yourpassword" where user="root"
verwenden,um das Passwort zu ändern
. 7.
Der bereits gesendete Fehlerheader tritt normalerweise auf, wenn Sie Verwenden Sie HEADER. Es gibt mehrere Gründe: 1. Sie PRING oder ECHO, bevor Sie HEADER verwenden. 2. Vor Ihrer aktuellen Datei befindet sich eine Leerzeile. 3. Möglicherweise haben Sie eine Datei eingefügt, und am Ende steht eine Leerzeile Andernfalls tritt dieser Fehler in der Ausgabe auf.
8. Wenn nach der Änderung von php.ini keine Änderung erfolgt,
starten Sie den Webserver wie IIS, Apache usw. neu. Anschließend werden die neuesten Einstellungen angewendet.
9. PHP wird auf 2003 installiert (die Installationsmethode von ISAPI ist)
.(von Experten um Rat gefragt).
Die php4isapi.dll von PHP4 scheint einen Konflikt mit 2003 zu haben und kann nur im CGI-Modus installiert werden:
Schritt 1, laden Sie zuerst ein Installationsprogramm unter www.php.net herunter, das ich installiert habe : php-4.2.3-installer.exe, Sie können auch die neueste Version finden. Stellen Sie sicher, dass Ihr IIS6.0 gestartet und zugänglich ist, bevor Sie php-4.2.3-installer.exe installieren. Gehen Sie nach der Installation zur Standard-Website -> Anwendungskonfiguration.
Schritt 3: Klicken Sie auf „Erweiterung“
-> „PHP“ und fügen Sie dann
„php.exe“
hinzuden Pfad;
Schritt 5: Bestätigen Sie einfach;
Schritt 6: Wählen Sie die PHP-Diensterweiterung aus und klicken Sie auf Zulassen.
10. Manchmal funktioniert die SQL-Anweisung nicht.
Der einfachste Weg, den Fehler bei der Datenbankoperation zu beheben, besteht darin, den SQL-Satz zu wiederholen und zu prüfen, ob der Wert der Variablen abgerufen werden kann.
11. Der Unterschied zwischen include und require
besteht nicht. Wenn die einzuschließende Datei nicht vorhanden ist, führt die Ausführung der folgenden Anforderung zu einem schwerwiegenden Fehler Meinem Test zufolge sind sie beide auf der Win32-Plattform verfügbar. Sie werden zuerst eingebunden und dann ausgeführt. Daher ist es am besten, keine include- oder require-Anweisungen in den eingebundenen Dateien zu haben, da dies zu Verzeichnisverwirrungen führen würde. Möglicherweise ist die Situation in *nux anders. Es wurde noch nicht getestet.
Wenn eine Datei nicht mehrmals eingebunden werden soll, können Sie include_once oder require_once## verwenden, um Dokumentdaten zu lesen und zu schreiben:
Funktion r($file_name) {
$filenum=@fopen($file_name,"r ");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name ));
@fclose($filenum);
return $file_data;
}
Funktion w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method );
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
www.devdao.com
12. Der Unterschied zwischen isset() und empty() besteht darin
, dass beide zum Testen von Variablen verwendet werden.
Aber isset() testet, ob einer Variablen ein Wert zugewiesen wurde, und empty() testet, ob eine Variable, der ein Wert zugewiesen wurde, leer ist. Wenn in PHP auf eine Variable verwiesen wird, ohne dass ihr ein Wert zugewiesen wurde, ist dies zulässig, es wird jedoch eine entsprechende Meldung angezeigt. Wenn einer Variablen ein Nullwert zugewiesen wird, $foo="" oder $foo=0 oder $foo=false, dann gibt empty($foo) true zurück und isset($foo) gibt ebenfalls true zurück, was bedeutet, dass ein Nullwert zugewiesen wird keine Variable abmelden.
Um die Registrierung einer Variablen aufzuheben, verwenden Sie unset($foo) oder $foo=NULL.
13. Die MySQL-Abfrageanweisung enthält Schlüsselwörter.
Wenn PHP MySQL abfragt, enthält der MySQL-Tabellenname oder der Spaltenname manchmal Schlüsselwörter. Zu diesem Zeitpunkt werden Fehler in der Abfrage auftreten. Wenn der Tabellenname beispielsweise „order“ lautet, tritt bei der Abfrage ein Fehler auf. Der einfache Weg besteht darin, „[über der Tabulatortaste]“ zum Tabellennamen oder Spaltennamen in der SQL-Anweisung hinzuzufügen, um ihn zu unterscheiden,
z. B. „select *“ aus „order“.
14. Es gibt zwei Möglichkeiten, mehrere Dateien gleichzeitig über das HTTP-Protokoll hochzuladen
. Dabei handelt es sich um zwei Implementierungen derselben Methode. Die spezifischen Verfahren müssen von Ihnen selbst entworfen werden:
1. Richten Sie mehrere Dateieingabefelder im Formular ein und benennen Sie sie wie folgt mit Arrays:
<form action="" method=post>
<Eingabetyp=Dateiname=Verwendungsdatei[]>
<Eingabetyp=Dateiname=Verwendungsdatei[]>
<Eingabetyp=Dateiname=Verwendungsdatei[]>
</form>
Führen Sie auf diese Weise den folgenden Test auf der Serverseite durch
echo „<pre>“;
print_r($_FILES);
echo "</pre>";
2. Legen Sie mehrere Dateieingabefelder im Formular fest, jedoch mit unterschiedlichen Namen, wie folgt:
<form action="" method=post>
<Eingabetyp=Dateiname=usefile_a>
<Eingabetyp=Dateiname=usefile_b>
<Eingabetyp=Dateiname=usefile_c>
</form>
Führen Sie den gleichen Test auf der Serverseite durch:
echo „<pre>“;
print_r($_FILES);
echo "</pre>";