Heim > Artikel > Backend-Entwicklung > PHP-Anfängerfehler festgelegt
Bitte aktivieren Sie alle Fehleraufforderungen für die Entwicklung: error_reporting = E_ALL |.
Das Blockieren von Fehleraufforderungen ist gleichbedeutend damit, Ihre Ohren zu verstecken und die Glocke zu stehlen.
Durch das standardisierte Schreiben von Code werden Fehler um die Hälfte reduziert.
1: Warum kann ich die Variable nicht abrufen?
Ich POSTE den Datennamen von einer Webseite auf eine andere Webseite. Warum kann ich keinen Wert erhalten, wenn ich $name ausgebe?
In PHP4.2 und späteren Versionen ist register_global standardmäßig ausgeschaltet
Wenn Sie die Variablen von einer anderen Seite übermittelt bekommen möchten:
Methode 1: Suchen Sie register_global in PHP.ini und legen Sie es fest es zu aktivieren.
Methode 2: Platzieren Sie diesen extract($_POST);extract($_GET); an der Vorderseite der empfangenden Webseite (beachten Sie, dass Session_Start() vor extract($_SESSION) stehen muss).
//extract ( array $var_array [, int $extract_type [, string $prefix ]] )
//Diese Funktion wird verwendet, um Variablen aus dem Array in die aktuelle Symboltabelle zu importieren. Akzeptiert das assoziative Array var_array als Argument und verwendet den Schlüssel //name als Variablennamen und den Wert als Variablenwert. Für jedes Schlüssel/Wert-Paar wird in der aktuellen Symboltabelle eine Variable erstellt, die von den Parametern //extract_type und prefix beeinflusst wird.
//import_request_variables (string $types [, string $prefix]) ist super global und hat Lücken in $_ $*
Methode 3: Variablen einzeln lesen $a=$_GET["a "];$b=$_POST["b"] usw. Diese Methode ist zwar problematisch, aber sicherer.
2: Debuggen Ihres Programms
Sie müssen etwas wissen, wenn Sie What ausführen ist der Wert der Variablen. Das habe ich gemacht, eine Datei debug.php mit folgendem Inhalt erstellt:
PHP-Code:------------------------ -------------------------------------------------- ------
Code kopieren
Ob_Start();
Session_Start();
Echo "
";<br> Echo "Machen Sie weiter Seite Die _GET-Variablen sind: ";<br> Print_R($_GET);<br> Echo "Die auf dieser Seite erhaltenen _POST-Variablen sind:";<br> Print_R($_POST);<br> Echo "Diese Seite ist erhalten Die _COOKIE-Variablen sind: ";<br> Print_R($_COOKIE);<br> Echo "Die auf dieser Seite erhaltenen _SESSION-Variablen sind: ";<br> Print_R($_SESSION);<br> Echo "</ pre>";<br><br><br><br>---------------------------------- -------------------------------------------------- <br><br>Dann setzen Sie include_path = "c:/php" in php.ini und legen Sie debug.php in diesem Ordner ab. <br> Sie können diese Datei in Zukunft in jede Webseite einbinden und die erhaltenen Variablennamen überprüfen und Wert.<br><br>3: So verwenden Sie die Sitzung<br><br>Alles, was mit der Sitzung zu tun hat, müssen Sie vorher die Funktion session_start() aufrufen;<br><br>Das Bezahlen des Werts für die Sitzung ist sehr einfach. wie zum Beispiel:<br><br><br>PHP-Code:----------------------------------- ----- ----------------------------------------<br><br> in php4.2 Danach können Sie direkt für die Sitzung bezahlen: <br><br>PHP-Code:------------------------ ------- ----------------------------------------<br> <br>[php]<br>Session_Start();<br>$_SESSION["name"]="value";<br>[/php]<br><br>-------- - ------------------------------------------------- - --------<br><br>Brechen Sie die Sitzung wie folgt ab:<br><br>PHP-Code:------- - ------------------------------------------------- - -----------------------<br><br>[php]<br>session_start();<br>session_unset();<br> session_destroy( );<br>[/php]<br><br>--------------------------------- -------------------------------------------------<br><br><br>Es gibt einen FEHLER beim Abbrechen einer bestimmten Sitzungsvariablen in PHP4.2 und höher.<br><br><br><br>Hinweis:<br><br>1: Das kann nicht sein jede Ausgabe vor dem Aufruf von Session_Start(). Beispielsweise ist Folgendes falsch.<br>============================== =========== ==<br>1 Zeile<br>2 Zeilen [php]<br>3 Zeilen Session_Start();//In der ersten Zeile wurde bereits vor<br>4 ausgegeben Zeilen....<br>5 Zeilen[ /php]<br>================================ =========<br><br><br>Tipp 1:<br><br>Jedes Mal, wenn „.....headers bereits gesendet.....“ angezeigt wird, bedeutet dies, dass ein gesendet wird Nachricht an den Browser vor Session_Start() Ausgabeinformationen.<br>Es ist normal, wenn Sie die Ausgabe entfernen (Dieser Fehler tritt auch in COOKIE auf und die Fehlerursache ist dieselbe)<br><br>Tipp 2:<br><br>Wenn Ihr Session_Start() in einer Schleifenanweisung platziert ist und es schwierig ist zu bestimmen, wo die Informationen zuvor an den Browser ausgegeben wurden, können Sie die folgende Methode verwenden: <br>1 Zeile [php ] Ob_Start(); [/php]<br>.....Hier ist das Programm...<br><br><br><br>2: Was ist der Fehler<br><br>Warnung : session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) fehlgeschlagen:... .<br>Weil Sie den Speicherpfad der Sitzungsdatei nicht angegeben haben.<br><br>Lösung: <br>(1) Erstellen Sie die Ordner tmp auf dem Laufwerk C<br>(2) Öffnen Sie php.ini und suchen Sie den Sitzungsspeicherpfad, geändert in session.save_path= "c:/tmp"<br><br><br><br>4: Warum Wenn ich Variablen auf eine andere Webseite übertrage, erhalte ich nur die erste Hälfte und alle, die mit Leerzeichen beginnen, gehen verloren <br><br><br>PHP-Code:------------- ---------------------------- -------- --------------------<br><br>[php ]<br>$Var="hello php";//Ändern zu $Var="hello php "; Versuchen Sie, das Ergebnis zu erhalten<br>$post= "receive.php?Name=".$Var;<br>header("location:$post");<br>[/php]<br><br>--------- -------------------------------------------------- -------<br><br>receive.php content:<br><br>PHP code:-------- - ------------------------------------------------- - ----------------------<br><br>[php]<br>Echo "<pre class="brush:php;toolbar:false">";<br>Echo $_GET[" Name"];<br>Echo "";
“;<br>Echo „Hier werden alle vom System unterstützten Funktionen und benutzerdefinierten PHPN-Funktionen angezeigt“;<br>print_r($arr);<br>echo „“;
Sie haben eine Datei hochgeladen:“;
echo $_FILES[ 'upload_file'][ 'name'];
echo "
";
//Der ursprüngliche Name der Client-Maschinendatei.
Echo „Der MIME-Typ der Datei ist:“;
echo $_FILES['upload_file']['type'];
//Der MIME-Typ der Datei, den der Browser benötigt um diese Informationen bereitzustellen Unterstützt, wie zum Beispiel „image/gif“.
echo "
";
Echo "Dateigröße hochladen:";
echo $_FILES['upload_file']['size'];
//Hochgeladene Datei Die Größe in Bytes.
echo „
“;
Echo „Die Datei wird vorübergehend gespeichert als:“;
echo $_FILES['upload_file']['tmp_name'];
//Der temporäre Dateiname, der nach dem Hochladen der Datei auf dem Server gespeichert wird.
echo "
";
$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
case 0 :
Echo „Upload erfolgreich“; break;
case 1:
Echo „Die hochgeladene Datei überschreitet den durch die Option upload_max_filesize in php.ini begrenzten Wert“;
case 2:
Echo „Die Größe der hochgeladenen Datei überschreitet den durch die Option MAX_FILE_SIZE im HTML-Formular angegebenen Wert.“; break;
Fall 3:
Echo „Die Größe der hochgeladenen Datei überschreitet den in der Datei angegebenen Wert.“ Option MAX_FILE_SIZE im HTML-Formular. -------------------------------------------------- -------------- ----------------------------------- --------------- --------
14: So konfigurieren Sie die GD-Bibliothek
Das Folgende ist mein Konfigurationsprozess
1: Verwenden Sie den DOS-Befehl (Sie können dies auch manuell tun, indem Sie alle DLL-Dateien im DLLs-Ordner in das System32-Verzeichnis kopieren) c:phpdlls*.dll c:windowssystem32 kopieren
2: Öffnen Sie php.ini
und setzen Sie extension_dir = "c:/php/extensions /";
3:
extension=php_gd2.dll; Entfernen Sie das Komma vor der Erweiterung php_gd2.dll, das Gleiche gilt für php_gd.dll. Stellen Sie sicher, dass diese Datei c:/php/extensions/php_gd2 .dll existiert.
4: Führen Sie das folgende Programm zum Testen des
PHP-Codes aus: ----------------------------- --------------------- -------------- -
[php]
Ob_end_flush();
/ /Beachten Sie, dass vorher keine Informationen an den Browser ausgegeben werden können. Achten Sie darauf, ob auto_prepend_file gesetzt ist.
header ("Content- type: image/png");
$im = @imagecreate (200, 100 )
oder sterben („Bild kann nicht erstellt werden“);
$background_color = imagecolorallocate ($im, 0,0, 0 );
$text_color = imagecolorallocate ($im, 230, 140, 150) ;
imagestring ($im, 3, 30, 50, "A Simple Text String", $text_color);
imagepng ( $im);
[/php]
-- --------------------------------------------- ------------------- ----------------
Klicken Sie hier, um die Ergebnisse anzuzeigen
15: Was ist UBB-Code?
UBB-Code ist eine Variante von HTML und Ultimate Bulletin Board (ein ausländisches BBS-Programm, in dem dieses Programm auch verwendet wird). An vielen Orten in China wird ein spezieller TAG verwendet. Auch wenn die Verwendung von HTML verboten ist, können Sie UBBCode trotzdem verwenden Durch die Verwendung von HTML ist die Verwendung sicherer, da weniger Code erforderlich ist.
Q3boys UBB enthält Beispiele und Sie können den Test direkt ausführen
16: Ich denke, Ändern Sie MySQL Benutzer und Passwort
Zunächst muss festgestellt werden, dass für die Änderung von MySQL in den meisten Fällen Root-Berechtigungen in MySQL erforderlich sind,
daher können normale Benutzer das Passwort nur ändern, wenn sie den Administrator dazu auffordern.
Methode 1
Verwenden Sie phpmyadmin. Dies ist die einfachste Methode. Ändern Sie die Benutzertabelle der MySQL-Bibliothek.
Vergessen Sie jedoch nicht, die PASSWORT-Funktion zu verwenden.
Methode 2
Bei Verwendung von mysqladmin handelt es sich um einen bereits erwähnten Sonderfall.
Mysqladmin -u root -p Passwort mypasswd
Nach Eingabe dieses Befehls müssen Sie das ursprüngliche Passwort von Root eingeben. Anschließend wird das Root-Passwort in mypasswd geändert.
Ändern Sie „root“ im Befehl in Ihren Benutzernamen, und Sie können Ihr eigenes Passwort ändern.
Wenn Ihr MySQL-Administrator natürlich keine Verbindung zum MySQL-Server herstellen kann oder Sie MySQL-Administrator nicht ausführen können,
dann ist diese Methode ungültig.
Und mysqladmin kann das Passwort nicht löschen.
Die folgenden Methoden werden an der MySQL-Eingabeaufforderung verwendet und müssen über Root-Berechtigungen für MySQL verfügen:
Methode drei
mysql> '%','jeffrey',PASSWORD('biscuit'));
mysql> Genauer gesagt handelt es sich um das Hinzufügen eines Benutzers mit dem Benutzernamen jeffrey und dem Passwort cookie.
Dieses Beispiel gibt es im „MySQL Chinese Reference Manual“, also habe ich es aufgeschrieben.
Achten Sie darauf, die PASSWORT-Funktion zu verwenden, und verwenden Sie dann FLUSH PRIVILEGES.
Methode 4
Gleich wie Methode 3, außer dass die REPLACE-Anweisung verwendet wird
mysql> REPLACE INTO mysql.user (Host, Benutzer, Passwort)
VALUES('%',' jeffrey ',PASSWORD('biscuit'));
mysql>
Methode 5
Verwenden Sie die SET PASSWORD-Anweisung,
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
Sie müssen auch die Funktion PASSWORD() verwenden,
, es ist jedoch nicht erforderlich, FLUSH PRIVILEGES zu verwenden.
Methode 6
Verwenden Sie die GRANT... IDENTIFIED BY-Anweisung
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
Hier ist das PASSWORT( )-Funktion ist unnötig und es besteht keine Notwendigkeit, FLUSH PRIVILEGES zu verwenden.
Hinweis: PASSWORD() führt die Passwortverschlüsselung [nicht] auf die gleiche Weise durch wie die Unix-Passwortverschlüsselung.
17: Ich möchte wissen, über welche Website er mit dieser Seite verbunden ist
PHP-Code:------------ -------------------------------------------------- -------------------
[php]
//Sie müssen über eine Superverbindung eintreten, um eine Ausgabe zu erhalten
Echo $_SERVER[' HTTP_REFERER' ];
[/php]
--------------------------------- -------------------------------------------------
18: Worauf sollten Sie achten, wenn Sie Daten in die Datenbank eingeben und sie zur Anzeige auf der Seite herausnehmen?
Bei der Eingabe in die Datenbank
$str= addslashes($str);
$sql=" insert into `tab` (`content`) Values('$str')";
Beim Verlassen der Bibliothek
$str=stripslashes($str) ;
Bei der Anzeige
$str=htmlspecialchars( nl2br($str)) ;
fügt die Funktion addslashes() einen Backslash vor den angegebenen vordefinierten Zeichen hinzu.
Diese vordefinierten Zeichen sind:
Einfaches Anführungszeichen (')
Doppeltes Anführungszeichen (")
Backslash ()
NULL
Stripslashes ()-Funktion Entfernt den durch die Funktion addslashes() hinzugefügten Backslash.
Die Funktion htmlspecialchars() wandelt einige vordefinierte Zeichen in HTML-Entitäten um.
19: So lesen Sie die aktuellen Adressleisteninformationen
PHP-Code:---------------- -------------------------------------
[php ]
$s="http://{$_SERVER['HTTP_HOST']}:{$_SERVER["SERVER_PORT"]}{$_SERVER['SCRIPT_NAME']}";
$se='' ;
foreach ($_GET as $key => $value) {
$se.=$key."=".$value."&"; .*)&$/","$1",$se);
$se?$se="?".$se:"";
echo $s."?$se ";
[/php]
--------------------------- - -----------------------------------------
20: Ich habe auf die Schaltfläche „Zurück“ geklickt. Warum sind die Dinge, die ich zuvor ausgefüllt habe, verschwunden?
Das liegt daran, dass Sie die Sitzung verwendet haben.
Lösung:
PHP-Code :- ------------------------------------------------ -- ------------
[php]
session_cache_limiter('private, Must-revalidate' ) ;
session_start();
.....
.....
[/php]
- ------------ -------------------------------------- ------------ --------------
21: So zeigen Sie die IP-Adresse in Bildern an
PHP-Code:--- -------------------------------------- ------------ ------------------------------
[php ]
Header("Content-type: image /png");
$img = ImageCreate(180,50);
$ip = $_SERVER['REMOTE_ADDR'];
ImageColorTransparent($ img,$bgcolor);
$bgColor = ImageColorAllocate($img, 0x2c,0x6D,0xAF); // Hintergrundfarbe
$shadow = ImageColorAllocate($img, 250,0,0); // Schattenfarbe
$textColor = ImageColorAllocate($img, oxff ,oxff,oxff); // Schriftfarbe
ImageTTFText($img,10,0,78,30,$shadow,"d:/windows/fonts/Tahoma .ttf",$ip);
ImageTTFText($img,10,0,25,28,$textColor,"d:/windows/fonts/Tahoma.ttf","your ip is". $ip); // IP anzeigen
ImagePng ($img);
imagecreatefrompng($img);
ImageDestroy($img);
[/php]
-- ------------ -------------------------------------- ------------ -
22: So erhalten Sie die echte IP des Benutzers
PHP-Code:- --------------------------------------- ----------- -----------------------------
[php]
function iptype1 () {
if (getenv("HTTP_CLIENT_IP")) {
return getenv("HTTP_CLIENT_IP");
}
else {
return "none";
}
}
function iptype2 () {
if (getenv("HTTP_X_FORWARDED_FOR")) {
return getenv("HTTP_X_FORWARDED_FOR");
}
else {
return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
return getenv("REMOTE_ADDR");
}
else {
return "none" ;
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2 ! = "none" && $ip2 != "unknown") {
return $ip2;
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown ") {
return $ip3;
}
else {
return "none";
}
}
Echo ip();
[ /php]
---------------- ------ ------------------------------------
23: So lesen Sie alle Datensätze innerhalb von drei Tagen aus der Datenbank
Zunächst muss in der Tabelle ein DATETIME-Feld vorhanden sein, um die Uhrzeit aufzuzeichnen,
im Format „2003-7“. -15 16:50:00'
SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3;
24: So stellen Sie eine Remote-Verbindung zur MySQL-Datenbank her
In der MySQL-Tabelle gibt es ein Hostfeld zum Hinzufügen von Benutzern. Ändern Sie es in „%“ oder geben Sie die IP-Adresse an, die die Verbindung zulässt, damit Sie dies tun können Ferngespräche führen.
$link=mysql_connect("192.168.1.80:3306","root","");
25: So verwenden Sie reguläre Ausdrücke
Klicken Sie hier
Sonderzeichen in regulären Ausdrücken
26: Nach der Verwendung von Apache erscheint die Homepage verstümmelt
Methode 1:
AddDefaultCharset ISO-8859-1 Change Methode 2 für AddDefaultCharset aus
:
AddDefaultCharset GB2312
============================== =========================
Tipp:
Wenn Sie den Code posten, wird GB2312 interpretiert als????? ?
Ändern Sie es so und es wird nicht passieren
GB2312
10: So vergleichen Sie die Anzahl der Tage zwischen zwei Daten (einfacherer Algorithmus)
PHP-Code: ------------------------------ ------ ----------------------------------
[php]
$Date_1="2003-7-15";//Es kann auch sein: $Date_1="2003-7-15 23:29:14";
$Date_2="1982-10-1";
$d1=strtotime($Date_1) ;
$d2=strtotime($Date_2);
$Days=round(($d1-$d2)/3600/24);
Echo " Ich habe seit $Days Tagen gekämpft^_^" ;
[/php]
------------------------- ----------------------- ------------- -----------------------
round(123.456 ,2) = 123.46
ROUND ( numeric_expression , length )
round (123,456,-2) =100
Wenn die Länge eine positive Zahl ist, wird numeric_expression auf die durch die Länge und Anzahl der Ziffern angegebene Dezimalzahl gerundet. Wenn die Länge eine negative Zahl ist, wird numeric_expression auf die linke Seite des durch die Länge angegebenen Dezimalpunkts gerundet. - ------ 123,45), CEILING(-123,45), CEILING(0,0)
Das Folgende ist die Ergebnismenge:
------- -- - --------- - -- ----------------
124 =========== ==================================== ==
27: Warum Einfache Anführungszeichen und doppelte Anführungszeichen werden auf der Akzeptanzseite zu ('")?
Lösung:
Methode 1: In php.ini festlegen: magic_quotes_gpc = Off
Methode 2: $str= stripcslashes($str)
28: So halten Sie das Programm am Laufen, anstatt nach 30 Sekunden anzuhalten
set_time_limit(60)//Die maximale Laufzeit beträgt eine Minute
set_time_limit(0)//Laufen, bis das Programm von selbst endet, oder manuell stoppen
29: Berechnen Sie die Anzahl der Personen, die derzeit online sind
Beispiel 1: Verwenden Sie Text, um
PHP-Code implementieren:--------------------------------- ------- -------------------------------------------
[ php]
//Zunächst müssen Sie die Berechtigung zum Lesen und Schreiben von Dateien haben
//Dieses Programm kann direkt ausgeführt werden. Wenn ein Fehler zum ersten Mal gemeldet wird, kann es später ausgeführt werden
$online_log = "count.dat" ; //Datei mit der Anzahl der Personen speichern,
$timeout = 30; //Keine Aktion innerhalb von 30 Sekunden, sie gilt als offline
$entries = file($online_log );
$temp = array ();
für ($i=0;$i
if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time ())) {
array_push($temp,$entry[0].",".$entry[1]."n"); //Informationen anderer Viewer abrufen, die Timeout-Viewer entfernen und speichern it in $temp
}
}
array_push($temp,getenv('REMOTE_ADDR').",".(time() ($timeout))."n"); /Viewer-Zeit aktualisieren
$users_online = count($temp); //Anzahl der Personen online berechnen
$entries = implode("",$temp);
//In Datei schreiben
$fp = fopen($online_log,"w");
flock($fp,LOCK_EX); //flock() funktioniert in NFS und anderen Netzwerkdateisystemen nicht richtig
fputs($fp , $entries);
flock($fp,LOCK_UN);
fclose($fp);
echo „Derzeit gibt es“.$users_online.“Menschen sind online“;
[/php]
------------------------------------------------------ ----- -------------------------------------
Beispiel 2 : Verwenden Sie
Datenbankimplementierung für Online-Benutzer
30: Was ist eine Vorlage und wie wird sie verwendet
Hier finden Sie mehrere Artikel über Vorlagen
Ich verwende die phplib-Vorlage
Im Folgenden sind die Verwendungen mehrerer Funktionen aufgeführt
$T->Set_File("Any definition", "Template file.tpl");
$T->Set_Block( „Definiert in set_file“, „“, „Nach Belieben definiert“);
$T->Parse(“ Definiert in Set_Block"," ",true);
$T->Parse("Geben Sie das Ergebnis nach Ihren Wünschen aus", "Definiert in Set_File") ;
Stellen Sie das Schleifenformat auf:
Wie um eine statische Webseite aus einer Vorlage zu generieren
PHP-Code:-------------------------------- --------------------------------------------------- ----
[php]
// Hier wird die phplib-Vorlage verwendet
............
........ ....
$tpl->parse("output","html ");
$output = $tpl->get("output");// $output ist die gesamte Webseite content
function wfile($file,$content,$mode= 'w') {
$oldmask = umask(0);
$fp = fopen($file, $ mode);
if (!$fp) return false;
fwrite($fp ,$content);
fclose($fp);
umask($oldmask);
return true ;
}
// In Datei schreiben
Wfile($FILE, $output);
header("location:$FILE");//Zur generierten Webseite weiterleiten
}
[/php]
---------- ------------------------------ -------------------- -------------------
phplib-Download-Adresse Smarty-Download-Adresse
31: So verwenden Sie PHP, um Zeichen zu interpretieren
Zum Beispiel: Geben Sie 2 2*(1 2) ein und geben Sie automatisch 8 aus
. Sie können die Eval-Funktion
PHP-Code verwenden: ----------- ------------------------ -------------------------- -------------------