16
1 AIDE MEMOIRE PHP Par Rabah HACHEMANI, MA-A, INTTIC Oran (2011) Requête Réponse Clients HTTP Serveur HTTP 1. Introduction PHP : Langage de script incorporé dans du HTML, s'exécutant coté serveur, soit comme CGI, soit comme un module (+ rapide). Langage interprété, Expressions régulières riches, Conversions automatiques, Déclarations optionnelles et non typées, Fin de ligne (;) obligatoires, Fonctions natives pour accéder aux SGBD (MySQL, Oracle, PostgreSQL, ODBC, ...). Connexions persistantes (à fermer !); Variables préfixées par le symbole: $ Syntaxe fonctionnelle: fopen("/home/toto/file.txt","r"); PHP est un logiciel libre. Possibilité de télécharger des fichiers depuis le client (upload). Extensions (librairies dynamiques) : gd (graphique), analyseur XML, ... Gestion des identificateurs de sessions par cookie ou par URL longue(PHP4) 1.1 Exemple : Fichier hello.php <html><head><title>Example</title> </head> <body> <?php echo "HelloWorld!"; ?> </body></html> <html><head><title>Example</title> </head> <body> <script language="php"> echo "HelloWorld! \n"; </script> </body></html> 2. Documentation Téléchargement http://www.php.net/ http://fr2.php.net/manual/fr/index.php http://www.php.net/manual/fr/ Doc en français http://dev.nexen.net/docs/php/annotee/manuel_toc.php FAQ http://www.php.net/FAQ.php 3. Développement 3.1 Généralités Commentaires par: /* ... */ ou // ... ou # .... A ne pas confondre avec les commentaires HTML <!--comment --> Edition du fichier source toto.php puis interprétation par le serveur http. Exécution sur la ligne de commande du serveur: php -toto.php Débogage manuel, par exemple: $DEBUG=1; //débogage activé dans le script function debug($msg){if($_GLOBALS['DEBUG']) echo $msg,<br>"\n";} debug("ligne".__LINE__ ." x= ".$x); //appel 3.2 Programmation modulaire Possibilité d'inclusion de fichier par require("fic.php"); ou include("fic.php");.Préférer include qui est conditionné par l'exécution de la ligne le contenant et l"exécution ne s'arrête pas si le fichier n'est pas trouvé. En PHP4, include_once() et require_once() permettent d'éviter les redéfinitions. Une extension PHP est une bibliothèque dynamique (php_xx.dll ou php_xx.so) pouvant être chargée à la volée ou incorporée à la compilation de PHP. Par exemple: dl('php_gd.so') or die('impossible de charger gd!'); GD est une extension de gestion des images gif, png.

Aide Memoire PHP

Embed Size (px)

Citation preview

Page 1: Aide Memoire PHP

1

AIDE MEMOIRE PHP Par Rabah HACHEMANI, MA-A, INTTIC Oran (2011)

Requête

Réponse

Clients HTTPServeur HTTP

1. Introduction PHP : Langage de script incorporé dans du HTML, s'exécutant coté serveur, soit comme CGI, soit comme un module (+ rapide). Langage interprété, Expressions régulières riches, Conversions automatiques, Déclarations optionnelles et non typées, Fin de ligne (;) obligatoires, Fonctions natives pour accéder aux SGBD (MySQL, Oracle, PostgreSQL, ODBC, ...). Connexions persistantes (à fermer !); Variables préfixées par le symbole: $ Syntaxe fonctionnelle: fopen("/home/toto/file.txt","r");

PHP est un logiciel libre. Possibilité de télécharger des fichiers depuis le client (upload). Extensions (librairies dynamiques) : gd (graphique), analyseur XML, ... Gestion des identificateurs de sessions par cookie ou par URL longue(PHP4) 1.1 Exemple : Fichier hello.php <html><head><title>Example</title>

</head>

<body>

<?php echo "HelloWorld!";

?>

</body></html>

<html><head><title>Example</title>

</head>

<body>

<script language="php">

echo "HelloWorld! \n";

</script>

</body></html>

2. Documentation Téléchargement http://www.php.net/ http://fr2.php.net/manual/fr/index.php http://www.php.net/manual/fr/ Doc en français http://dev.nexen.net/docs/php/annotee/manuel_toc.php FAQ http://www.php.net/FAQ.php

3. Développement 3.1 Généralités Commentaires par: /* ... */ ou // ... ou # .... A ne pas confondre avec les commentaires HTML <!--comment --> Edition du fichier source toto.php puis interprétation par le serveur http. Exécution sur la ligne de commande du serveur: php -toto.php

Débogage manuel, par exemple: $DEBUG=1; //débogage activé dans le script function debug($msg){if($_GLOBALS['DEBUG']) echo $msg,<br>"\n";}

debug("ligne".__LINE__ ." x= ".$x); //appel

3.2 Programmation modulaire Possibilité d'inclusion de fichier par require("fic.php"); ou include("fic.php");.Préférer include qui

est conditionné par l'exécution de la ligne le contenant et l"exécution ne s'arrête pas si le fichier n'est pas trouvé. En PHP4, include_once() et require_once() permettent d'éviter les redéfinitions. Une extension

PHP est une bibliothèque dynamique (php_xx.dll ou php_xx.so) pouvant être chargée à la volée ou incorporée à la compilation de PHP. Par exemple: dl('php_gd.so') or die('impossible de charger gd!');

GD est une extension de gestion des images gif, png.

Page 2: Aide Memoire PHP

2

4. Types, constantes et variables Les types sont: boolean, integer, float, string, array, object, resource, NULL. Coercition de type implicite ou explicite par (type)exp. Pas de déclaration. Les variables sont définies dans un contexte d'exécution, fonction (locales) ou script (globales). Les variables globales (script) ne sont accessibles dans une fonction que si on les déclare globales dans la fonction: global $i; Les variables statiques sont des variables locales à une

fonction mais qui sont initialisées une seule fois lors du premier appel à la fonction. Elles doivent être déclarées: static $compte=0; Les variables super globales sont des variables globales qui sont accessibles dans les

fonctions sans qu'on ait besoin de les déclarer global. ! Noms de variables sensibles à la casse (majuscule/minuscules) mais le nom des fonctions est indifférent.

4.1 Variables prédéfinies Les variables prédéfinies dépendent de la configuration de PHP: pour les connaître, le plus simple est de faire appel à la fonction phpinfo().

$PHP_SELF nom du fichier PHP en cours d'exécution; également accessible via $_SERVER["PHP_SELF"]. Un certain nombre de variables prédéfinies sont des tableaux super globaux: par exemple, $_SERVER["REQUEST_METHOD"] indique la méthode utilisée (GET ou POST ou ...);

$_REQUEST variables de tous les tableaux précédents avec la priorité définie par la directive de configuration variables_order qui vaut habituellement EGPCS (GET, POST, Cookie, Environment, Server);

Nom Description

$GLOBALS Contient toutes les variables disponibles dans l'environnement d'exécution global.

$_SERVER Contient les variables fournies par le serveur web.

$_GET Contient les variables fournies en paramètre au script via la méthode GET du protocole HTTP.

$_POST Contient les variables fournies par un formulaire via la méthode POST du protocole HTTP.

$_COOKIE Contient les variables fournies par les cookies via le protocole HTTP.

$_FILES Contient les variables fournies suite à un chargement de fichier par un formulaire via la méthode POST du protocole HTTP.

$_ENV Contient les variables fournies par l'environnement. Ce peut être des variables du Shell sous lequel s'exécute PHP, les variables CGI...

$_REQUEST Contient les variables fournies au script par n'importe quel mécanisme.

$_SESSION Contient les variables de la session en cours dans le script.

4.2 Variables de formulaire Les variables de formulaire HTML sont accessibles via les tableaux super globaux $_GET, $_POST ou $_REQUEST. Par exemple:

<form name='F' method='GET' action='<?php echo $_SERVER['PHP_SELF'];?>'>

<input type='text' name='nom'>

<select multiple name="boisson[]"><option value="Coca">CocaCola</option>

<option value="Pepsi">PepsiCola</option></select>

<input type='submit' name='bouton' value='ok'/></form>

<?php print_r($_GET['boisson']); ?>

Après saisie et validation, l'URL suivante sera utilisée: essai.php?nom=toto&boisson[]=Coca&boisson[]=Pepsi& bouton=ok

L'affichage suivant aura lieu: Array([0] => Coca [1]=> Pepsi)

4.3 Ecriture des littéraux Chaîne ’$a et ’ls’’ sans interprétation. Chaîne "$a et 'ls'" avec interprétation

Echappement \$,\\, \", \t, \n, \r sans interprétation

Numérique 123, 123.456, 2e10, \777, \xFF

Attention: $cp=06400; $cp="06400"; $codepostal=(int)$cp;

Contexte booléen '' ou 0 ou 0.0 ou "0" ou NULL ou tableau vide représentent FALSE;

Conversion contextuelle automatique chaînenumérique.

ME
Highlight
ME
Highlight
ME
Highlight
ME
Highlight
ME
Highlight
ME
Highlight
Page 3: Aide Memoire PHP

3

4.4 Constantes Macro définie grâce à la fonction define("PI",3.1415); echo K;

Attention echo "Valeur de pi=".PI; echo "La valeur de pi=PI";

Constantes "magiques" prédéfinies: TRUE valeur TRUE (différent de 0)

FALSE valeur FALSE : 0 ou "" ou "0" ou tableau vide ou objet vide.

__FILE__ nom du fichier exécuté ou $_SERVER["SCRIPT_FILENAME"]

__LINE__ numéro de ligne courante __DIR__ Dossier du fichier script courant

$php_errormsg: Le dernier message d'erreur. $http_response_header: Entête de réponse http. $argc, $argv : nombre et tableaux des arguments passés au script.

4.5 Tableaux Il n'y a que des tableaux associatifs avec une clé entière (0 … n-1) par défaut. Les tableaux ont un pointeur courant automatiquement incrémenté lors d'une affectation. La clé doit être unique sinon il y a écrasement. Définition $tab=array(1,2,6); $tvide=array();

Définition $asso=array("toto"=>1,"titi"=>8);

Affectation multiple list($i,$j)=($j,$i) ou list($i,$j)=$tab

Ajout $tvide[]="case 0"; $tvide[]="case 1";

Remise à zéro reset($tab); Remet le pointeur au début.

Fin de tableau end($tab): va pointer sur le dernier élément.

Parcours array each($tab): retourne un asso à 4 éléments ou faux si fin de tableau:

$r[0] = $r["key"] = clé courante; $r[1] = $r["value"] = valeur courante.

Exemple: reset($tab);

while(list($key,$value)=each($tab))

{echo"$key => $value";} // Affiche la clé puis la valeur.

Accès $tab[6]=$asso["toto"];

Valeur courante current($tab): faux si vide, à la fin ou valeur FALSE.

Valeur et déplacement mixed next($tab);

mixed prev($tab); retourne la valeur courante puis déplacement, faux si place vide ou fin ou début de

tableau. Taille int count($tab); ou sizeof()

Clé courante mixed key($tab)

Existence bool in_array("toto", $tab)

A 2 dimensions $et=array(array(0,0), array(0,1)); $et[i][j]

Autres fonctions des quantités ! array_intersect(), array_merge(), array_diff(),

is_array($tab) (Voir paragraphe 8.4)

5. Expressions Quasiment tout est une expression en PHP. 5.1 Opérateurs Quasiment utilisés que pour les nombres sauf la concaténation de chaîne (.) et l'affectation (chaînes et

tableaux). $$s valeur de la variable dont le nom est dans variable s.

$x++; $x--; ++$x; $y--; // Post, pré Incrémentation, décrémentation

$i==$j ? valSiVrai : ValSiFaux expression conditionnelle

Arithmétique +, -, *, /, %

Affectation =, +=, -=, *=, /=, %= ($i+=$j équivalent à $i=$i+$j)

Binaires &, |, ~, <<, >> (Bit à bit: ET, OU, NOT, Shift gauche, droite)

Logiques &&, ||, ^, ! (AND, OR, XOR, NOT)

Comparaison <, <=, ==, !=, <>, >=, >, ===, !==

Attention à la priorité des opérateurs, utiliser les parentèses. Lancer une commande système: system('dir')

Concaténation de chaine $s."toto"; $s.="toto";

L'affectation de chaîne longue est possible (PHP4) : $s=<<<FIN

blabla ..

FIN; // en début de ligne et avec un ;

Page 4: Aide Memoire PHP

4

6. Structures de contrôle Alternative avec if: if(expr) { inst1 } else { inst2 }

if(cond) instructions endif;

Choix avec if: if(e1) {inst1} elseif(e2) {inst2}

else {inst3}

Choix avec switch: switch($i)

{case val0 : inst0; break;

case val1 : inst1; break;

default : instructiond; }

Répétitives: while(cond) { instruction };

while (expression): commandes ... endwhile;

do {instruction} while(cond);

for(exp-init; exp-cond; exp-itér) {instructions}

for (i=0; i<10; i++) {echo i," ");

Ruptures possibles: break; continue;

Parcours de tableau : foreach($tab as $case) {instructions utilisant $case}

Parcours de tableau associatif: foreach($tab as $cle => $val) {instructions utilisant $cle ou $val}

7. Fonctions Un nombre impressionnant de fonctions prédéfinies! Passage des paramètres scalaires ou tableaux par valeur (PHP4 par références si précédé de & dans l'appel et la déclaration). Les variables globales ne sont pas accessibles directement. Il faut utiliser la notation: $_GLOBALS['glob'].

$_GLOBALS est le tableau associatif des variables globales. On peut aussi déclarer les variables globales dans la fonction par global $gi, $gj; Les arguments peuvent avoir une valeur par défaut (optionnels) et

être en nombre variable. Les valeurs de retour peuvent être scalaire ou tableaux. On peut supprimer l'affichage des erreurs produites par l'appel à une fonction fn par : @fn($i)

7.1 Fonctions utilisateurs Définition function fct($arg0 ="toto", $arg1)

{ instructions;

return array(1,4);

}

pointeur $pf='fct'; list($i, $j) = $pf(1, 2);

8. Fonctions prédéfinies 8.1 Fonctions diverses echo exp1, exp2, ...; affiche les expressions;

print(exp) affiche une expression; idem que echo(exp)

print_r($var) affiche la variable scalaire ou tableau ou objet récursivement;

void exit() termine le script

$l=system("dir"); exécute une commande système

void die("message") affiche le message puis termine le script

void eval("instructions PHP") il faut échapper les caractères spéciaux:

eval('$' . f($i).'= "toto";'; Ne pas oublier le point virgule ( ; )

8.2 Entrées/Sorties: système de fichiers De nombreuses fonctions de gestion du système de fichier. $s est supposé être une chaine. echo string, string... ; affiche plusieurs arguments chaînes print(string); affiche un arg. (classé dans les fonctions chaînes) $desc=fopen("fic.txt","r+"); ouverture en lecture et écriture. Modes r : Read, w

: création ou raz, w+ , a : append, a+

Page 5: Aide Memoire PHP

5

$d=fopen("c:\\data\\info.txt","r"); syntaxe

Windows avec l'antislash. filezise($fichier) taille du fichier. $d=fopen("ftp://user:[email protected]/

","w"); ouverture de session ftp

fclose($desc) fermeture du fichier. bool feof($desc) test la fin de fichier. filetype($f) Type de fichier $ligne=fgets($desc, 4096) lecture de la ligne (maxi 4096 octets). fread($f) fwrite($f) Lecture écriture dans le fichier $ligne=readline("entier SVP"); ne fonctionne pas sur le Web! fscanf($f) Lecture avec format fseek() Positionnement dans le ficher $car=fgetc($desc); lecture d'un caractère à partir du fichier fflush($file) Mise à jour disque. fputs($desc,"chaine"); écriture d'une chaîne dans le fichier; file_exist($file) Teste l'existence du fichier $s=file_get_contents($file, …) Copie le contenu du fichier dans $s file_put_contents($file, $s) Copie la chaine $s dans le fichier fgetcsv($file) fileatime($f) filectime($f) filemtime($f) Donne les dates associées au fichier filegroup() fileinode() fileowner()

fileperms() Gestion des permissions

Sous répertoires: $file=readdir($dh) lecture de l'entrée de répertoire courante. is_dir($dir) teste si $dir est un dossier. $dh=opendir("/tmp") ouvre et obtient un pointeur sur le répertoire. rewinddir($dir) Retourne à la première entrée. closedir($dir) ferme le répertoire. scandir($dir,sort) renvoie un tableau trié des fichiers du répertoire. chdir($dir) Change de dossier. getcwd() Donne le répertoire courant. chroot($dir) Change de répertoire racine. dirname($s) renvoie le nom du dossier contenant le fichier ou

répertoire $s. <?php

$dir = "/tmp/php5";

// Ouvre le dossier et liste tous les fichiers

if (is_dir($dir)) {

if ($dh = opendir($dir)) {

while (($file = readdir($dh)) !== false) {

echo "fichier : $file : type : " . filetype($dir . $file) . "\n";

}

closedir($dh);

}

}

?>

<?php

$path = "/home/httpd/html/index.php";

$file = basename ($path); // $file is set to "index.php"

$file = basename ($path,".php"); // $file is set to "index"

?>

Autres fonctions: disk_free_space($dir), disk_total_space($dir)

8.3 Types et variables boolean isset($v) vrai si $i est défini

unset($v) supprime la définition. empty($v)

string gettype($v) retourne le type (string si non défini)

Résultat possibles:boolean, integer, float, string, array, object, resource, NULL void settype($v,"integer") coercition.

Is_bool($v), is_int($v), is_integer($v), is_long($v), is_float($v), is_double($v), is_real($v), is_scalar($v), is_numeric($v), is_string($v), is_array($v), is_object($v), is_resource($v), is_null($v).

Page 6: Aide Memoire PHP

6

ctype_digit("123456.506") ? "Is a number" : "Is not a number"; var_dump($var1, var2, ...) affiche récursivement la valeur et le type.

print_r($v) affiche la valeur de la variable. get_resource_type($res)

floatval($v) intval($v) strval($v) get_defined_var()

number_format($n, dec, point, millier)

echo($s) affiche la chaine.

8.4 Fonctions sur tableaux int array_push($pile,$elem) empile à la fin et retourne la taille

mixed array_pop($pile) dépile le sommet

int array_unshift($_fo,$prem) ajoute au début

mixed array_shift($_fo) retire le premier

array array_values($asso) respectivement array_keys

void shuffle($tab) mélange les valeurs

8.5 Tri de tableau void sort($tab) tri croissant (décroissant avec rsort) selon les valeurs

void ksort($asso) tri croissant selon les clés (krsort)

void asort($asso) tri croissant selon les valeurs(arsort)

void usort($tab, moncmp) tri croissant selon la fonction de comparaison définie par l'utilisateur. (k=key,

r=reverse, a=associatif, u=user) uksort(), uasort() tri utilisateur pour les tableaux associatifs

key($asso) current($asso) next($asso) prev($asso)

8.6 Fonctions sur chaînes De très nombreuses fonctions dont voici les principales: ($s est une chaine) int strlen($s) Donne la taille de la chaine

int strcmp($s1, $s2) comparaison -1, 0, 1

string substr($s, 2, 10) sous-chaîne à partir de 2, de taille 10

$p=strpos($s,subs) donne la position de la 1ere occurrence.

string strstr($s,$c) retourne tout s à partir de la 1ère

occurrence de c

array split(';',$s,10) retourne un tableau des 10 (maxi) premiers champs séparés par des ;

string join(';',$tab) retourne la chaîne constituée des valeurs séparées par ;

string trim($s) retire les blancs de début et de fin de chaîne.

blancs: \n, \r, \t, \v, \0, espace

string chop($s) supprime les blancs de fin de chaîne

string ltrim($s) supprime les blancs de début (rtrim: de fin)

string strtolower($s) met en minuscules (resp. strtoupper) echo(!isset($str) || trim($str)=="")?"Empty":"Not empty"; if(empty($str)) echo "Chaine vide";

string nl2br($s) remplace les \n par des <br>

Autres fonctions: explode($car,$s) implode($car, $tableau) strpos($s, $ss, $decalage)

str_replace($model, $remplacement, $s) $code=ord($c) $c=chr(13) str_replace()

str_pad() str_word_count() strrev() substr_replace() substr_count() strcmp()

print() printf() vprintf() sprintf() vsprintf() sscanf() fprintf()

vfprintf() fscanf()

8.7 Expressions régulières Recherche de correspondances : int ereg( '^[^.]*\.(.*)$',$s,$tab) met dans tab la partie à droite d'un point dans s à partir de

l'indice 1. Retourne TRUE si trouvé au moins une occurrence. Remplacement de chaine: string ereg_replace("([a-z]+)", "[\\1]",$s); encadre les mots minuscules de $s. split(reg,$s), eregi(), eregi_replace(), spliti(): insensible à la casse

9. Classes Collection (tableau) de variables et de fonctions; héritage simple possible par extends; tout est public;

l'affectation se fait par recopie; pas de surcharge (utiliser un paramètre tableau).

Page 7: Aide Memoire PHP

7

Class Point{var $x,$y;

function Point($px=0,$py=0) { //constructeur

$this -> x = $px; $this -> y = $py; }

function getxy(){

return array($this -> x, $this -> y); } }

$p1 = &new Point(); // (0,0)

$p2=&new Point(3,4);

list($a,$b)=$p2 -> getxy();

10. Bases de données Les fonctions PHP d'accès aux bases de données sont nombreuses. Il existe des fonctions spécialisées pour des SGBD tels que MySQL, Oracle ou PostgreSQL, mais aussi des fonctions ODBC qui sont plus indépendantes du SGBD cible.

10.1 Fonctions pour MySQL $co = mysql_connect('hostname:port','username','passwd')

or die('Connexion au serveur impossible!'); retourne un descripteur de connexion $co. La

connexion se termine à la fin du script. $co = mysql_pconnect('hostname','username','passwd') connexion persistante: si une connexion

persistante existe déjà avec le même nom et passwd, la réutilise; ne ferme pas la connexion à la fin du script. int mysql_select_db('mabase',$co) or die('Base de données inaccessible!'); retourne

vrai si sélectionné (use) int mysql_query('select|insert|...',$co) or die('Requête impossible'); retourne faux si

impossible; retourne un entier résultat ($res) si requête SELECT; retour inutile si requête action.

int mysql_num_fields($res) retourne le nombres de colonnes du résultat d'un SELECT

string mysql_field_name($res,$i) retourne le nom de la colonne i

string mysql_field_type($res,$i) retourne le type. (mysql_field_len,flags existent également)

int mysql_num_rows($res) retourne le nombre de lignes

array mysql_fetch_assoc($res) retourne une ligne sous forme de tableau associatif (asso). Indicé par

les noms de colonnes array mysql_fetch_row($res) retourne une ligne sous forme de tableau indicé de 0 à mysql_num__elds -1

int mysql_affected_rows($co) retourne le nombre de lignes affectées par la dernière requête SQL

DELETE, INSERT, REPLACE, UPDATE int mysql_db_query('base2', 'select...', $co) sélectionne une BdD et lance une requête.

string mysql_error($co) retourne la chaîne d'erreur MySQL

int mysql_close($co) ferme la connexion (INDISPENSABLE)

10.2 Un exemple

$co=mysql_connect('sql.free.fr','login','asswd') or die('Connexion au serveur

impossible!');

mysql_select_db('mabase',$co)or die("Base de données inaccessible!");

$r=mysql_query('SELECT nom, prenom FROM matable',

$co) or die('Requête erronée'); $nc=mysql_num_fields($r);

$nl=mysql_num_rows($r); while($raw=mysql_fetch_assoc($r))

{ echo "NOM:",$raw['nom'],";Prénom:",$raw['prenom'],"<BR />";

} mysql_close($co);

11. phpMyAdmin PhpMyAdmin est un outil d'administration d'une BD MySQL écrit en PHP. Cet outil est accessible via le web et permet donc d'administrer à distance une BD. On peut: créer, supprimer, modifier (alter) des tables, interroger, ajouter, supprimer, modifier des lignes, importer des fichiers textes contenant les données...

12. Réseau socket $sock=fsockopen($hostname, $port, $timeout)

ouvrir une socket; il ne reste plus qu'à lire dedans ... et la fermer!

13. Image (gd) Nécessite d'avoir compilé avec le module GD! <?php

header("Content-type:image/png"); $larg=100; $haut=200;

$img=imagecreate($larg,$haut);

Page 8: Aide Memoire PHP

8

$red=imagecolorallocate($img,255,0,0);

$vert=imagecolorallocate($img,0,255,0);

imagefilledrectangle($img,0,0,$larg-1,$haut/2,$red);

imageline($img,0,0,$larg-1,$haut-1,$vert);

imagepng($img);//stdout

imagedestroy($im);

?>

14. Caractères spéciaux Certains caractères (anti-slash, guillemet et apostrophe) saisis dans des champs de formulaires (<input name="champ">) sont automatiquement échappés par un antislash par PHP (magic_quotes). La variable PHP correspondante global $champ; doit donc être traitée par $champ=stripslashes($champ)

pour supprimer tous les antislash générés. Lors de l'affichage d'une chaîne contenant des caractères html spéciaux (& " < ' >) dans un champ, certains caractères et ceux qui suivent ne sont pas affichés et sont perdus (cela ne sera pas posté). Pour afficher proprement une chaîne contenant ces caractères, il faut au préalable la traiter avec htmlspecialchars($champ, ENT_QUOTES)).

Par conséquent, pour un champ interactif, on écrira : echo'<input name="champ" value="'.htmlspecial

chars(stripslashes($champ),ENT_QUOTES)).'">';

Lors de l'envoi d'une requête à un SGBD, il faut parfois échapper les caractères spéciaux tels que: ', \, ",

NULL. La fonction addslashes($chaine) effectue ce travail.

De même en JavaScript, la fonction addslashes() permettra d'échapper du code.

15. Configuration de PHP Pour visualiser la configuration PHP, il suffit d'appeler la fonction phpinfo() pour voir: la version de PHP; La localisation du fichier de configuration de PHP: php.ini; Les librairies incluses et leur configuration (mysql, gd, ...). Le fichier php.ini définit notamment des variables fondamentales: register_globals=ON si ON alors les variables d'environnement, GET, POST, COOKIE, SERVEUR sont globales et les variables sont accessibles via $_POST[], ...(Sécurité+);

variables_order="EGPCS" ordre de résolution des conflits de noms de variables ENV, GET, POST,

COOKIE, SERVEUR; magic_quotes_gpc=ON permet d'anti-slasher les caractères anti-slash, guillemet et apostrophe dans les

variables GPC (Get, Post, Cookie).

16. Authentification HTTP La procédure d'authentification HTTP est associée à un nom de domaine (realm ou AuthName) et à un répertoire. Elle peut être déclenchée: soit par Apache, indépendamment de PHP, soit en utilisant PHP.

16.1 Authentification Apache L'authentification est valable pour toute une arborescence. Un fichier .htaccess spécifie les règles d'authentification valables pour ce répertoire et tous ses descendants. AuthType Basic

AuthUserFile "/nfs1/AuthApache/.htpasswd"

AuthName "LeDomainePrivé"

<limit GET POST>Require valid-user</limit>

Le fichier .htpasswd contient la liste des utilisateurs et leurs mots de passe cryptés. Il est obtenu grâce à l'utilitaire htpasswd fourni par Apache. Par exemple: htpasswd -c .htpasswd user; crée un fichier avec

l'utilisateur user. Lors de tout accès à un fichier descendant de AuthApache, Apache va envoyer un entête au navigateur client qui va afficher une fenêtre d'authentification. Par la suite, l'utilisateur reste authentifié pour LeDomainePrivé jusqu'à la fin du navigateur ou si une nouvelle authentification PHP est lancée.

16.2 Authentification PHP PHP doit être un module d'Apache. On utilise alors la fonction header pour demander une authentification ("WWW-authenticate") au client, générant ainsi l'apparition d'une fenêtre de demande d'utilisateur et de mot de passe. Une fois que les champs ont été remplis, l'URL sera de nouveau appelée, avec les variables $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'] et $_SERVER['PHP_AUTH_TYPE']

contenant respectivement le nom d'utilisateur, le mot de passe et le type d'authentification. Actuellement, seule l'authentification de type "Basic" est supportée. Si l'authentification est réalisée via Apache (.htaccess), la

Page 9: Aide Memoire PHP

9

variable $_SERVER['REMOTE_USER'] est égale à $_SERVER['PHP_AUTH_USER']. Exemple

d'authentification HTTP par PHP: <?php if(!isset($_SERVER['PHP_AUTH_USER'])||!verifierAuth())

header("WWW-Authenticate: Basic realm=\"LeDomainePrivé\"");

header("HTTP/1.0 401 Unauthorized");

echo "Texte à envoyer si le client annule \n";

exit;

else echo "Bonjour",$_SERVER['PHP_AUTH_USER'];

// suite de la page privée

} ?>

La fonction booléenne verifierAuth() utilisera tout moyen nécessaire à la vérification du nom et du mot de passe (Base de données, ...). Remarquons que les variables $_SERVER['PHP_AUTH_...'] sont utilisables

même si l'authentification n'a pas été effectuée par le module PHP. Les variables d'authentification PHP sont valables pour tous les fichiers descendants du répertoire. Par contre, tout fichier html ou PHP ne testant pas l'authentification est accessible, contrairement à l'authentification par .htaccess (Apache) qui sécurise tout le répertoire.

16.3 Dés-authentification PHP Le navigateur écrase le cache d'authentification client d'un domaine quand il reçoit une nouvelle demande d'authentification. Cela permet de déconnecter un utilisateur, pour le forcer à entrer un nouveau nom et son mot de passe. Si l'utilisateur annule l'authentification, il est alors dés-authentifié! Penser à recharger la page. Certains programmeurs changent dynamiquement le nom de domaine pour donner un délai d'expiration, ou alors, fournissent un bouton de réauthentification.

16.4 Autres authentifications L'authentification HTTP est de moins utilisée au profit d'un formulaire d'authentification HTML et de la sauvegarde des informations d'authentification dans un cookie ou une session. En effet, le fonctionnement des différents navigateurs varie en ce qui concerne le cache d'authentification.

17. Téléchargement Du site web vers le client: download ou déchargement; Du client vers le site web : upload ou chargement;

17.1 Déchargement Réaliser un lien référençant le fichier à décharger, par exemple: <a href="Public/toto.pdf"> Cliquer ici</a>. Si le type du fichier est affichable par le navigateur, il

sera affiché (donc déchargé), sinon il sera proposé à l'utilisateur soit de sauver le fichier, soit de lancer l'application associée. Remarquons que tout lien peut être enregistré en utilisant le bouton droit de la souris sur le lien.

17.2 Chargement Réaliser un formulaire de chargement envoyant une requête POST. L'action effectuée (script) après soumission doit vérifier que le fichier chargé est du bon type et de la bonne taille puis l'afficher depuis la zone temporaire (tmp/) ou il est chargé. Le fichier temporaire sera automatiquement effacé de la zone à la fin du script, s'il n'a pas été déplacé ou renommé. Par exemple, le formulaire sera :

<FORM ENCTYPE="multipart/form-data" ACTION="traitement.php" METHOD="POST">

<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" value= "1000">

Envoyez ce fichier: <INPUT NAME="fichier" TYPE="file" SIZE=15>

<INPUT TYPE="submit" VALUE="Envoyer le fichier">

</FORM>

Dans le script traitement.php on a accès à différentes variables (différentes selon les versions de PHP) : $_FILES['fichier']['name'] le nom du fichier original Chez le client;

$_FILES['fichier']['type'] le type mime du fichier "image/gif, text/plain, ..."; $_FILES['fichier']['size'] la taille du fichier chargé;

$_FILES['fichier']['tmp_name'] le nom du fichier temporaire sur le serveur;

_$_FILES['fichier']['error'] le code d'erreur (PHP 4.2.0). Remarquons que tous les navigateurs ne vérifient pas le MAX_FILE_SIZE.

18. Les sessions HTTP n'étant pas un protocole orienté connexion, chaque nouvelle requête semble être la première. Depuis PHP4, les sessions PHP permettent de conserver de l'information du côté serveur sur la suite de requêtes émises par le même client (navigateur). Les variables enregistrées dans le tableau $_SESSION doivent être de

Page 10: Aide Memoire PHP

10

type string. Pour les variables de type tableau, elles doivent être sérialisées. La communication des identifiants de sessions est réalisée par cookie ou par URL de manière transparente pour le programmeur. Par défaut, la durée de vie du cookie est égale à la durée de vie du navigateur. bool session_start() démarre une session; doit être réalisé en tout début de script avant tout en-tête! bool session_register("x", "y", ... ) démarre une session si pas encore faite et y enregistre $x et $y; string session_id() retourne l'identifiant de session $_SESSION["z" ]="contenu"; ajoute une variable de session; echo $_SESSION["x" ]; affiche le contenu d'une variable de session; bool session_is_registered("mavar") teste si $mavar a été sauvée; bool session_unregister("x") supprime la variable de session x; bool session_destroy() supprime toutes les données de la session; le cookie de session sera supprimé dès la prochaine page. string serialize(mixed) retourne une chaîne composée des différents champs de l'objet ou du tableau; mixed unserialize(string) retourne la valeur de la variable d'origine;

19. Les Cookies Les cookies sont stockés du côté client par le navigateur et contiennent des variables. Quand celui-ci envoie une requête à une URI d'un domaine et d'un chemin dont il possède un cookie, toutes les variables du cookie sont envoyées au serveur. Un cookie a une durée de vie (expire) par défaut égale à la durée de vie de la session. int setcookie("x","Hello!",int expire, string path, string domain, int secure) doit être exécutée avant toute chose et permet de positionner la variable x avec la valeur "Hello!"; attention le cookie ne sera renvoyé au serveur qu'à la prochaine requête; $_COOKIE["x"] accès à une variable de cookie;

setcookie("x","",time()-1000) efface la variable x du cookie; setcookie("y", $value,

time()+3600); expire dans une heure;

20. Redirection La fonction PHP header doit être exécutée avant toute chose et permet de nombreuses choses dont: la redirection vers une autre URL en plaçant des éléments dans l'entête du fichier HTML: header("Location: http://www.php.net/"); /* Redirige le client */

exit(); /* rien après */

L'erreur header("Status: 404 Not Found");

L'expiration header("Expires:Mon, 26 Jul 2003 05:00:00 GMT");

La date de mise à jour: header("Last-Modified: ".gmdate("D,dM Y H:i:s")." GMT");

La non mise en cache: header("Cache-Control: no-cache, must-revalidate");

Le type mime: header("Content-type:application/pdf");

Le nom du fichier : header("Content-Disposition: attachment; filename=toto.pdf");

21. PDO (PHP Data Object extension, PHP5) PDO est une interface commune pour l'accès aux données. $con=new PDO($co,$user, $pass);

/* $cc=Chaine de connexion:

mysql:host=localhost; dbname=cars

sqlite:/path/to/cars.db

pgsql:host=localhost dbname=cars

*/

$q = $con->query("SELECT * FROM lecteurs ORDER BY nom");

$q->setFetchMode(PDO::FETCH_ASSOC);

while($r = $q->fetch())

{ echo $ligne['No'].' '.$ligne['nom'].' '.$ligne['prenom'].'<br>';

}

$lecteurs = $q->fetchAll(PDO::FETCH_ASSOC);

foreach($lecteurs as $r)

{ echo $ligne['No'].' '.$ligne['nom'].' '.$ligne['prenom'].'<br>';

}

$q->columnCount(); $q->rowCount();

Exemple:

Page 11: Aide Memoire PHP

11

<?php $co = mysql_connect('bib.ito.dz', 'login', 'password'); mysql_select_db('LaBase',$co); $res = mysql_query('SELECT * FROM lecteurs'); $nb = mysql_num_rows($res); echo 'Il y a '.$nb.' enregistrement(s) dans la table lecteurs.<br>';

echo 'Voici la liste:<br>';

echo '<table><tr><td>No</td><td>Nom</td><td>Prénom</td></tr>';

while($ligne=mysql_fetch_assoc($res);)

{echo"<tr><td>$ligne['No']</td><td>$ligne['nom']</td><td>$ligne['prenom']

</td></tr>";

} echo '</table>'; mysql_close($co); ?>

Upload de fichiers classique <html><head><title>Upload de fichier</title></head>

<body>

<?php // affiche le formulaire pour uploader un fichier

if (!$_POST['submit']) {

?>

<form enctype="multipart/form-data" action="<?php=$_SERVER['PHP_SELF']?>"

method="post">

<input type="hidden" name="MAX_FILE_SIZE" value="8000000">

Choisir le fichier:

<input type="file" name="data">

<input type="submit" name="submit" value="Upload File">

</form>

<?php

} else { // check uploaded file size

if ($_FILES['data']['size'] == 0) {

die("ERROR: fichier uploadé vide (0 octet)");

}

// Vérifier si type de fichier autorisé.

$allowedFileTypes = array("image/gif", "image/jpeg", "image/pjpeg");

if (!in_array($_FILES['data']['type'], $allowedFileTypes)) {

die("ERROR: Type de fichier non permis");

} // Vérifier si l'upload est valide

if (!is_uploaded_file($_FILES['data']['tmp_name'])) {

die("ERROR: Fichier non valide");

} // Défini le nom et le répertoire de destination

$uploadDir = "./uploads/";

// copie du fichier dans le répertoire

move_uploaded_file($_FILES['data']['tmp_name'], $uploadDir .

$_FILES['data']['name']) or die("Impossible de copier le fichier");

// Affiche un message de succès

echo "Fichier transféré avec succès dans:" . $uploadDir .$_FILES['data']['name'];

}

?>

</body></html>

Upload avec utilisation de la classe HTML quickform

<html><head><title>Upload avec quickform<title></head>

<body>

<?php

// include HTML_Quickform class

include "HTML/QuickForm.php";

// initialize form object

$form = new HTML_QuickForm("uploadFile");

// add file upload element

$file =& $form->addElement("file", "filedata", "Select image file:");

// add submit button

$form->addElement("submit", null, "Upload Image");

// add file input validation rules

Page 12: Aide Memoire PHP

12

$form->addRule("filedata", "Please select a file for upload", "uploadedfile");

$form->addRule("filedata", "Please upload only images","mimetype",

array("image/gif", "image/jpeg", "image/pjpeg"));

// validate file input

if ($form->validate()) {

// if valid upload

// move file to upload area

// print success message

$uploadDir = "./uploads/";

if ($file->isUploadedFile()) {

$info = $file->getValue();

$file->moveUploadedFile($uploadDir);

echo "Fichier copié vers $uploadDir ".$info['name'];

} else { echo "Fichier non valide "; }

exit;

}

// render and display form

$form->display();

?>

</body> </html>

Page 13: Aide Memoire PHP

13

Liste des variables du serveur Ces variables sont référencées dans le tableau superglobal $_SERVER. $_SERVER['PHP_SELF']

Nom Description

argv Tableau des arguments passés au script dans le cas où celui-ci est lancé en ligne de commande depuis un Shell.

argc Nombre de paramètres passés au script (dans le cas ligne de commande).

DOCUMENT_ROOT Racine à partir de laquelle est exécuté le script.

PHP_SELF Nom du fichier du script en cours par rapport au DOCUMENT_ROOT.

REQUEST_METHOD Méthode de la requête invoquée pour accéder à la page. Avec le protocole HTTP/1.0, les méthodes possibles sont : GET, POST, HEAD, PUT.

REQUEST_URI URI (Uniform Resource Identifier) qui a été fournie pour accéder à la page.

QUERY_STRING Question posée au script (si elle existe). Ce sont les paramètres passés au script.

SCRIPT_FILENAME Chemin absolu jusqu'au script courant.

SCRIPT_NAME Nom du script courant. Utilisé dans le champ method des formulaires pour que le script s'appelle lui-même.

PATH_TRANSLATED Chemin de la page dans le système de fichier réel du serveur. Est différent du chemin virtuel traduit pour l'extérieur.

GATEWAY_INTERFACE Numéro de révision de l'interface CGI du serveur.

SERVER_NAME Nom du serveur qui exécute le script. Ce peut-être un hôte virtuel. Tel que défini par la directive VIRTUAL_HOST d'Apache.

SERVER_SOFTWARE Chaîne de caractères d'identification du serveur. Contenu du champ Server de l'entête HTTP. Par exemple : Apache/1.3.9 (Unix) Debian/GNU.

SERVER_PROTOCOL Nom et révision du protocole utilisé pour transférer au client la page issue du script. En général : HTTP/1.0 ou HTTP/1.1.

SERVER_ADMIN Identifiant de l'administrateur du serveur tel que défini par la directive SERVER_ADMIN d'Apache.

SERVER_PORT Numéro de port utilisé sur le serveur. Traditionnellement, vaut 80.

SERVER_SIGNATURE Chaîne de caractères contenant le numéro de version du serveur ainsi que le nom d'hôte virtuel.

HTTP_ACCEPT Contenu du champ Accept de l'entête HTTP. C'est la liste des types MIME. Par exemple : text/html, application/xml, image/gif.

HTTP_ACCEPT_CHARSET Contenu du champ Accept-Charset de l'entête HTTP. C'est le type d'encodage des caractères utilisé.

HTTP_ACCEPT_ENCODING Contenu du champ Accept-Encoding de l'entête HTTP. C'est le type d'encodage des données utilisé. C'est en général de la compression. Par exemple : gzip.

HTTP_ACCEPT_LANGUAGE Contenu du champ Accept-Language de l'entête HTTP. C'est la langue utilisée. Par exemple : fr.

HTTP_CONNECTION Contenu du champ Accept-Connection de l'entête HTTP. C'est le type de la connexion établie entre le client et le serveur (persistante ou non), par exemple : Keep-Alive ou close.

HTTP_HOST Contenu du champ Host de l'entête HTTP en cas de virtual hosting.

HTTP_REFERER Adresse de la page qui a conduit le client à la page courante.

HTTP_USER_AGENT

Contenu du champ User-Agent de l'entête HTTP. C'est le nom et la version du navigateur utilisé par le client pour consulter la page en cours. Ainsi que le système d'exploitation et autres informations. Par exemple : Mozilla/5.0 Galeon/1.0.2 (X11;Linux i686; U;) Gecko/20011224.

REMOTE_ADDR Adresse IP du client qui demande la page.

REMOTE_PORT Le numéro de port utilisé sur la machine cliente pour établir la communication avec le serveur.

Page 14: Aide Memoire PHP

14

Liste des fonctions PHP pour MySQL

$nb=mysql_affected_rows($res) — Retourne le nombre de lignes affectées mysql_client_encoding — Retourne le nom du jeu de caractères utilisé mysql_close($co) — Ferme la connexion MySQL $co=mysql_connect($host, $user, $pass) — connexion à un serveur mysql_create_db($b) — Crée une base de données MySQL mysql_data_seek — Déplace le pointeur interne de résultat MySQL mysql_db_name — Lit les noms des bases de données $res=mysql_db_query($sql) — Envoie une requête MySQL au serveur mysql_drop_db($base) — Efface une base de données MySQL mysql_errno() — Retourne le numéro d'erreur de la dernière commande mysql_error() — Retourne le texte associé avec l'erreur générée mysql_escape_string — Protège les caractères spéciaux SQL $line=mysql_fetch_array($res) — Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux $line=mysql_fetch_assoc($res) — Lit une ligne de résultat MySQL dans un tableau associatif mysql_fetch_field — Retourne les données enregistrées dans une colonne MySQL sous forme d'objet mysql_fetch_lengths — Retourne la taille de chaque colonne d'une ligne de résultat MySQL mysql_fetch_object — Retourne une ligne de résultat sous forme d'objet $tab=mysql_fetch_row($res) — Retourne une ligne de résultat dans un tableau mysql_field_flags — Retourne des détails sur une colonne MySQL mysql_field_len — Retourne la taille d'un champ de résultat MySQL mysql_field_name — Retourne le nom d'une colonne dans un résultat MySQL mysql_field_seek — Déplace le pointeur de résultat vers une position mysql_field_table — Retourne le nom de la table MySQL où se trouve une colonne mysql_field_type — Retourne le type d'une colonne MySQL spécifique mysql_free_result($res) — Libère le résultat de la mémoire mysql_get_client_info — Lit les informations sur le client MySQL mysql_get_host_info — Lit les informations sur l'hôte MySQL mysql_get_proto_info — Lit les informations sur le protocole MySQL mysql_get_server_info — Lit les informations sur le serveur MySQL mysql_info — Lit des informations à propos de la dernière requête MySQL mysql_insert_id — Retourne l'identifiant généré par la dernière requête mysql_list_dbs — Liste les bases de données disponibles mysql_list_fields — Liste les champs d'une table MySQL mysql_list_processes — Liste les processus MySQL mysql_list_tables — Liste les tables d'une base de données MySQL mysql_num_fields — Retourne le nombre de champs d'un résultat MySQL mysql_num_rows($res) — Retourne le nombre de lignes d'un résultat mysql_pconnect($host, $user, $pass) — Ouvre une connexion persistante à un serveur MySQL mysql_ping — Vérifie la connexion au serveur MySQL et s'y reconnecte mysql_query($sql) — Envoie une requête à un serveur MySQL mysql_real_escape_string — Protège les caractères spéciaux de SQL mysql_result — Retourne un champ d'un résultat MySQL mysql_select_db($base) — Sélectionne une base de données MySQL mysql_set_charset — Définit le jeu de caractères du client MySQL mysql_stat — Retourne le statut courant du serveur MySQL mysql_tablename — Lit le nom de la table qui contient un champ mysql_thread_id — Retourne l'identifiant du thread MySQL courant mysql_unbuffered_query — Exécute une requête SQL sans mobiliser les résultats MySQL

Page 15: Aide Memoire PHP

15

PHP: Les fonctions mathématiques integer abs(integer X) Valeur absolue de X, double abs (double X) Valeur absolue de X :

echo abs(–543); //affiche 543. double acos(double X) Arc cosinus de X, qui doit être compris entre – 1 et + 1. Le résultat est en radians :

echo acos(0.5); // affiche 1.0471975511966. double acosh(double X) Arc cosinus hyperbolique de X. Ne fonctionne pas sous Windows. double asin (double X) Arc sinus de X, qui doit être compris entre – 1 et + 1. Le résultat est en radians:

echo asin(0.5); // affiche 0.5235987755983. double asinh(double X) Arc sinus hyperbolique de X. Ne fonctionne pas sous Windows. double atan(double X) Arc tangente de X. Le résultat est en radians :

echo atan(5); //affiche 0.46364760900081. double atan2(double Y, double X ) Arc tangente du rapport Y/X. Le résultat est en radians. (Y <> 0). double atanh(double X) Arc tangente hyperbolique de X. double exp(double X) Exponentielle de X, soit ex. double expm1 (double X) Retourne l’exponentielle de X – 1, soit ex –1. double floor (double X) Retourne la partie entière de X, soit l’entier immédiatement inférieur à X. double fmod (double X, double Y) Retourne le reste de la division de Y par X pour le type double. double log(double X, double B) Logarithme népérien (de base e) du nombre X. double log10(double X) Logarithme décimal (de base 10) de X. double log1p(double X) Logarithme népérien de (1 + X). double/integer max(double/integer X, double/integer Y) Retourne la valeur maximale de X et de Y. double/integer min(double/integer X, double/integer Y) Retourne la valeur minimale de X et de Y. double pi (void) Retourne la valeur de pi. double/integer pow(double/integer X,double/integer Y) Calcule X à la puissance Y.

Les paramètres peuvent être entiers ou décimaux. double sin (double X) Sinus de X exprimé en radians. double sinh (double X) Sinus hyperbolique de X. double sqrt(double X) Racine carrée de X (qui doit être positif). double tan(double X) Tangente de X qui doit être en radians. double tanh(double X) Tangente hyperbolique de X. double ceil(double X) Retourne l’entier immédiatement supérieur à X. double round(double X, integer N) Arrondit X avec N décimales. double cos(double X) Cosinus de X qui doit être exprimé en radians. double cosh(double X) Cosinus hyperbolique de X. double hypot(double X, double Y) Retourne la valeur de l’hypoténuse d’un triangle rectangle dont les côtés de l’angle droit sont X et Y, donc la valeur de la racine carrée de (X2 + Y2 ). Conversions: double rad2deg (double X) Convertit X de radians en degrés. string base_convert(string N, integer B1, integer B2) Convertit le nombre N contenu dans une chaîne de la base B1 dans la base B2. integer bindec(string X) Convertit un nombre binaire X contenu dans une chaîne en base 10. string decbin(integer X) Convertit X de la base 10 en binaire. string dechex(integer X) Convertit X de la base 10 en hexadécimal. string decoct(integer X) Convertit X de la base 10 en octal. double deg2rad (double X) Convertit X de degrés en radians. integer hexdec(string CH) Convertit la chaîne hexadécimale CH en décimal. integer octdec (string CH) Convertit un nombre octal contenu dans la chaîne CH en base 10. boolean is_finite(double X) Retourne TRUE si la valeur X est finie, c’est-à-dire dans l’intervalle des valeurs admises pour un double, et FALSE dans le cas contraire. boolean is_infinite( double X) Retourne TRUE si la valeur X est supérieure à la valeur maximale admise pour un double, et FALSE dans le cas contraire. boolean is_nan(double X) Retourne TRUE si la valeur X n’est pas un nombre, et FALSE dans le cas contraire. Nombres aléatoires: void srand(integer N) Initialise le générateur de nombres aléatoires de la fonction rand(). Le paramètre N est un entier quelconque. void mt_srand( integer N) Initialise le générateur de nombres aléatoires pour la fonction mt_rand(). Le paramètre N est un entier quelconque. integer getrandmax(void) Indique la valeur maximale retournée par la fonction rand(). integer mt_getrandmax(void) Retourne la plus grande valeur que peut retourner mt_rand(). integer mt_rand( integer Min, integer Max) Génère un résultat compris entre Min et Max ou entre 0 et la constante RAND_MAX si vous omettez les paramètres. integer rand(integer Min, integer Max) Retourne un nombre aléatoire $r tel que Min <= $r <= Max. double lcg_value (void) Retourne un nombre aléatoire compris entre 0 et 1.

Page 16: Aide Memoire PHP

16

Les principaux codes d’erreur que peut retourner un serveur web

Code Signification

100-199 Les informations sont retournées.

200-299 La requête a été traitée avec succès.

200 Aucun incident à signaler.

204 Le "document" retourné est vide.

300-399 Demande de redirection.

300 Le serveur a besoin de plus d’informations.

301 Le document demandé a été déplacé définitivement.

302 Le document demandé a été déplacé temporairement (les requêtes suivantes ne nécessiteront pas forcément de redirection).

303 Le document doit être demandé à une autre adresse. 400-499 La requête est incomplète.

400 La requête n’est pas valide.

401 L’authentification a échoué. Si ce n’est pas le résultat attendu, sous Apache, vérifiez que les fichiers .htaccess et .htpasswd (le nom peut être différent) contiennent bien le nom et mot de passe que vous saisissez.

403 Accès interdit.

404 La page demandée au serveur n’a pu être trouvée.

405 La méthode utilisée est refusée par le serveur.

406 Authentification proxy exigée.

407 Authentification proxy exigée.

408 Délai d’attente de la requête du client dépassé.

411 Le serveur a besoin de la longueur de la requête.

413 La requête est trop longue. 500-599 Indique une erreur du serveur HTTP.

500 500 Erreur interne du serveur. Assurez-vous de ne pas avoir créé une boucle comme, par exemple, une série infinie de redirections (ce qui peut arriver lors des traitements automatiques des erreurs).

504 Délai d’attente dépassé.