Aujourd'hui, je vais vous donner un résumé des maux de tête des débutants PHP. Les 14 questions soulevées ci-dessous espèrent être utiles aux débutants PHP.
1. Les variables
get, post et session ne peuvent pas être transférées entre les pages. Dans la dernière version de PHP, les variables globales automatiques sont désactivées, donc pour obtenir les variables soumises à partir de la page précédente, utilisez $_GET['foo'], $_POST. [ 'foo'],$_SESSION['foo'] pour obtenir. Bien entendu, vous pouvez également modifier les variables globales automatiques pour qu'elles soient activées (php.ini est remplacé par register_globals = On) ; compte tenu de la compatibilité, il vaut mieux se forcer à se familiariser avec la nouvelle méthode d'écriture.
2. Lorsque Apache2 utilise la méthode get pour transmettre les paramètres chinois sous Win32, une erreur se produira.
Test.php?a=Hello&b=Hello
La transmission des paramètres provoquera une erreur interne
. Solution : "test.php?a=".urlencode. (Bonjour)."&b=".urlencode (de rien)
...
3. La session sous win32 ne fonctionne pas correctement.
php.ini est par défaut session.save_path = /tmp
C'est évidemment la configuration sous Linux. Sous win32 Impossible de lire et d'écrire le fichier de session, ce qui rend la session inutilisable
. Il suffit de le remplacer par un chemin absolu, par exemple session.save_path = c:windowstemp
4. Afficher les informations d'erreur
lorsque display_errors = On et. error_reporting = E_ALL dans php.ini, toutes les erreurs et invites seront affichées. Il est préférable de l'activer pendant le débogage pour corriger les erreurs. Si vous utilisez la méthode d'écriture PHP précédente, la plupart des messages d'erreur concerneront des variables non définies. Il y aura une invite lorsqu'une variable est appelée avant qu'une valeur ne lui soit attribuée. La solution est de la détecter ou de la protéger.
Par exemple, pour afficher $foo, vous pouvez if(isset($foo)) echo $foo ou echo @$foo
5. Mail() ne peut pas envoyer d'e-mails sous Win32
. Sendmail configuré sous Linux peut envoyer. appelez le serveur smtp. Pour envoyer des emails, modifiez le SMTP de php.ini = ip //ip est un serveur SMTP sans fonction de vérification (difficile à trouver sur Internet. La meilleure solution pour envoyer des emails en PHP est d'utiliser socket to). envoyer directement au serveur de messagerie de l'autre partie au lieu du serveur de transfert.
6. Si le mot de passe n'est pas défini pour l'installation initiale de MySQL, vous devez utiliser
update mysql.user set password="yourpassword" où user="root"
pour modifier le mot de passe
. 7.
L'en-tête d'erreur déjà envoyé se produit généralement lorsque vous. utiliser HEADER. Il peut y avoir plusieurs raisons : 1. Vous faites PRING ou ECHO avant d'utiliser HEADER 2. Il y a une ligne vide devant votre fichier actuel 3. Vous avez peut-être INCLUS un fichier et il y a une ligne vide à la fin de le fichier ou cette erreur se produira dans la sortie.
8. S'il n'y a aucun changement après avoir modifié php.ini,
redémarrez le serveur Web, tel que IIS, Apache, etc., puis les derniers paramètres seront appliqués.
9. PHP est installé en 2003 (la méthode d'installation d'ISAPI est)
.demandé par les experts pour obtenir des conseils).
Le php4isapi.dll de PHP4 semble être en conflit avec 2003, et il ne peut être installé qu'en mode CGI :
Étape 1, téléchargez d'abord un programme d'installation sous www.php.net , j'ai installé : php-4.2.3-installer.exe, vous pouvez également trouver la dernière version, assurez-vous que votre IIS6.0 est démarré et accessible avant d'installer php-4.2.3-installer.exe. Après l'installation, accédez au site Web par défaut -> Configuration de l'application ;
Étape 2 : Cliquez sur Extension du service Web -> Nouvelle extension du service Web ;
Étape 3 : Extension -> php, puis ajoutez ;
Étape 4 : Recherchez php.exe Ajouter ; le chemin ;
Étape 5 : Confirmez simplement ;
Étape 6 : Sélectionnez l'extension du service PHP et cliquez sur Autoriser.
10. Parfois, l'instruction SQL ne fonctionne pas.
Le moyen le plus simple de déboguer l'échec de l'opération de base de données est de faire écho à la phrase SQL et de voir si la valeur de la variable peut être obtenue.
11. La différence entre include et require.
Il n'y a pas beaucoup de différence entre les deux. Si le fichier à inclure n'existe pas, include vous avertit, puis continue d'exécuter l'instruction suivante, require une erreur fatale et se termine en conséquence. d'après mes tests, ils sont tous deux sous la plate-forme win32. Il est d'abord inclus puis exécuté, il est donc préférable de ne pas avoir d'instructions include ou require dans les fichiers inclus, ce qui entraînerait une confusion dans les répertoires. La situation est peut-être différente dans *nux. Elle n'a pas encore été testée.
Si un fichier ne souhaite pas être inclus plusieurs fois, vous pouvez utiliser include_once ou require_once## pour lire et écrire les données du document :
fonction r($nom_fichier) {
$filenum=@fopen($file_name,"r ");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name ));
@fclose($filenum);
renvoie $file_data ;
}
fonction w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method );
troupeau ($ filenum, LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
renvoie $file_data ;
}
www.devdao.com
12. La différence entre isset() et empty() est
que les deux sont utilisés pour tester des variables.
Mais isset() teste si une variable a reçu une valeur, et empty() teste si une variable à laquelle une valeur a été affectée est vide. Si une variable est référencée en PHP sans qu'une valeur lui soit attribuée, elle est autorisée, mais il y aura une invite de notification. Si une variable reçoit une valeur nulle, $foo="" ou $foo=0 ou $foo=false, alors vide($foo) renvoie vrai et isset($foo) renvoie également vrai, ce qui signifie que l'attribution d'une valeur nulle sera pas se déconnecter d'une variable.
Pour désenregistrer une variable, utilisez unset($foo) ou $foo=NULL.
13. L'instruction de requête mysql contient des mots-clés
lorsque PHP interroge mysql, parfois le nom de la table mysql ou le nom de la colonne contient des mots-clés. Il y aura des erreurs dans la requête à ce moment-là. Par exemple, si le nom de la table est order, une erreur se produira lors de la requête. Le moyen simple consiste à ajouter « [au-dessus de la touche de tabulation] au nom de la table ou au nom de la colonne dans l'instruction SQL pour le distinguer,
par exemple select * from « order ».
14. Il existe deux façons de télécharger plusieurs fichiers en même temps via le protocole HTTP
, qui sont deux implémentations de la même méthode. Les procédures spécifiques doivent être conçues par vous-même :
1. Configurez plusieurs zones de saisie de fichiers dans le formulaire et nommez-les avec des tableaux, comme suit :
<form action="" méthode=post>
<type d'entrée=nom de fichier=usefile[]>
<type d'entrée=nom de fichier=usefile[]>
<type d'entrée=nom de fichier=usefile[]>
</form>
De cette façon, faites le test suivant côté serveur
echo "<pré>" ;
print_r($_FILES);
echo "</pre>";
2. Définissez plusieurs zones de saisie de fichiers dans le formulaire, mais avec des noms différents, comme suit :
<form action="" method=post>
<type d'entrée=nom de fichier=usefile_a>
<type d'entrée=nom de fichier=usefile_b>
<type d'entrée=nom de fichier=usefile_c>
</form>
Faites le même test côté serveur :
echo "<pré>" ;
print_r($_FILES);
echo "</pre>";