53
PHP ou le web dynamique

PHP - get started

Embed Size (px)

Citation preview

Page 1: PHP - get started

PHP

ou le web dynamique

Page 2: PHP - get started

généralités

• écrit par Ramsus Lerdorf en 1994 pour gérer sa page perso • actuellement stable en version 5 (5.3) et la version 6 est imminente • le P de LAMP (Linux Apache MySQL PHP) • Damien Seguy pionnier français dans la promotion du langage PHP (

nexen.net) • écrit en de C et historiquement basé sur des bibliothèques Perl • Le langage proprement dit est Zend Engine, PHP (Hypertext

Preprocessor) est la version embedded de Zend Engine • par convention l'extension est .php (éventuellement .php4, .php5 si

plusieurs version cohabitent)• PHP 4 n'est plus maintenu depuis fin 2007 • la doc officielle en français http://php.net/manual/fr/index.php

Page 3: PHP - get started

php cli VS mod_php

• 2 versions php– php cli en ligne de commandes• Chemin à mettre dans la variable

d’environnement $PATH

– mod_php • Permet d’embarquer un interpréteur php dans

les process fils du démon httpd

• 2 fichiers de configuration de php.ini• N.B certains projets utilisent maintenant

le même interpréteur (UwAmp)

Page 4: PHP - get started

php.ini

• Quelques directives– register_globals: rend les variables GET, POST, de

COOKIE et de SESSION directement accessibles (déconseillé!)

– post_max_size: taille maximale d’une requête en méthode post

– upload_max_fliesize: taille maximale des fichiers ulpoadés

– memory limit: taille de mémoire maximale allouée à PHP– extension_dir: spécifie le répertoire dans lequel PHP doit

chercher des extensions externes à charger – extension: quelles extensions doivent être chargées

Page 5: PHP - get started

Les extensions php

Quelques extensions• simpleXML (inclus en PHP5): fournit des outils très

simples et faciles à utiliser pour convertir du XML en un objet qui peut être manipulé avec ses propriétés et les itérateurs de tableaux.

• SQLite (inclus en PHP5): fait l'interface avec le moteur de base SQLite Embeddable SQL Database Engine (ne nécessite pas l'installation d'un serveur de BDD)

• MySQL: permet d'accéder aux bases de données MySQL

• Pcre: permet la compatibilité avec les expressions régulières Perl

Page 6: PHP - get started

Un standard

•supporté par de nombreux serveurs http•IIS, Netscape, Roxen, IPlanet

•multiplateforme : *nix et windows (wamp, EasyPHP, xampp) •proposé massivement par les hébergeurs

Page 7: PHP - get started

Le web statique

Page 8: PHP - get started

Le web dynamique typique

Page 9: PHP - get started

Le langage

• Dit de type embedded : le code PHP s'insère au milieu du code HTML

• <?php = début de portion de code PHP• ?> = fin de portion de code PHP• Chaque instructions se termine par le caractère ; • commentaire

– // commente une ligne entière – /* … */ commente une portion de code PHP

• PHP est sensible à la casse (il y a un distinction entre les minuscules et les majuscules)

• TRUE (1) et FALSE(0) sont deux contantes prédéfinies

Page 10: PHP - get started

Hello world!!Côté serveur

<html> <head> <title>My First PHP Script</title> </head> <body> <p> <?php echo "Hello World"; ?> </p> </body></html>

Page 11: PHP - get started

Version cgi (non embedded)

<?phpecho "<html>";echo "<head>";echo "<title>My First PHP Script</title>";echo "</head>";echo "<body>";echo "<p>Hello World</p>";echo "</body>";echo "</html>";?>

Page 12: PHP - get started

Côté client

<html> <head> <title>My First PHP Script</title> </head> <body> <p> Hello World </p> </body></html>

Page 13: PHP - get started

Les constantes

• créer une constante– define("MaConstante", 5);

• Tester si une constante existe– defined("MaConstante");

• Appeler une constante– echo MaConstante; //affiche 5

Page 14: PHP - get started

Les variables

• Toutes les variables commence par le caractère $ suivi d'une lettre ou d'un _

• Le typage est implicite, il dépend de la valeur affectée

<? $MonEntier=3; //est un entier$MonReel=1.23e-12; //est un float$MaChaine="Hello world!"; // est un string$MonEntier="3"; // est un string

?>

Page 15: PHP - get started

Les types

• Boolean : Booléen • Integer : Entier • Réel : Double • String : Chaîne de caractères • Array : Tableau • Object : Objet • Tester le type d’une variable

– gettype($var);• Typer explicitement

– settype($var, "type");

Page 16: PHP - get started

Opérations sur les variables

• Tester le type d’une variable– gettype($var);

• Typer explicitement– settype($var, "type");

• Tester si une variable existe– isset($var);

• Détruire une variable et libérer la mémoire qui lui était allouée– unset($var);

• Tester si une variable est non affectée (i.e. =0 ou ="")– empty($var);

Page 17: PHP - get started

transtypage

<?php$foo = 10; // $foo est un entier$bar = (double) $foo; // $bar est un double

?>

• (int) , (integer) - type entier • (bool) , (boolean) - booléen • (double) , (float) , (real) - type double • (string) - type chaîne de caractère • (array) - type tableau • (object) - type objet

Page 18: PHP - get started

Les stringsles délimiteurs "..."

• toutes les variables contenues entre ces délimiteurs seront évaluées– $MyColor="rouges";

echo "Mes souliers sont $MyColor";– affiche Mes souliers sont rouges

• caractères échappés – \\ pour afficher le caractère \ – \$ pour afficher le caractère $ – \" pour afficher le caractère "

Page 19: PHP - get started

Les stringsles délimiteurs ‘...’

• aucune des variables contenues entre ces délimiteurs ne sera évaluée– $MyColor="rouges";

echo 'Mes souliers sont $MyColor';– affiche Mes souliers sont $MyColor

• caractères échappés – \\ pour afficher le caractère \ – \' pour afficher le caractère '

Page 20: PHP - get started

Les stringscaractères non imprimables

• \n nouvelle ligne • \r retour à la ligne • \t tabulation • spécificité

– "\r\n" sous windows – "\n" sous *nix– "\r " sous mac

Page 21: PHP - get started

Fonctions d’affichage

• écrit sur la sortie standard print('hello '.$nom);– echo("hello $nom");– print('hello '.$nom);

• écrit de manière formatée comme en C sur la sortie standard – printf("hello %s", $nom);

• écrit de manière lisible les variables complexes, notamment les tableaux et les objets– print_r($tableau);

Page 22: PHP - get started

Opérateursarithmétiques

• + pour l'addition

• - pour la soustraction

• * pour la multiplication

• / pour la division

• % pour la division entière

Page 23: PHP - get started

Opérateursd’affectation

• $y est affecté à $x – $x = $y

• $y est additionné à $x– $x += $y <=> $x = $x + $y

• $y est soustrait de $x – $x -= $y <=> $x = $x - $y

• $x est multiplié par $y – $x *= $y <=> $x = $x * $y

• $x est divisé par $y – $x /= $y <=> $x = $x / $y

• $y le reste de $x/$y est affecté à $x – $x %= $y <=> $x = $x % $y

Page 24: PHP - get started

Opérateursde comparaisons

• égalité de $x et $y – $x == $y

• égalités des valeurs et des types de $x et $y– $x === $y

• $x est strictement inférieur à $y – $x < $y

• $x est strictement supérieur à $y – $x > $y

• $x est inférieur ou égal à $y – $x =< $y

• $x est supérieur ou égal à $y – $x => $y

Page 25: PHP - get started

Opérateurs logique & concaténation

• logique– && et logique – || ou logique – ! négation

• concaténation : – . concatène deux chaines de caractères

Page 26: PHP - get started

Les tableaux

• le constructeur permettant de créer un tableau est array()

• par défaut l'indexation d'un tableau commence à 0 – $langages = array('français','english','deutsch');

• il est possible de créer un tableau en lui affectant des valeurs – $langages[] = 'français';– $langages[] = 'english';– $langages[] = 'deutsch';

Page 27: PHP - get started

Les tableaux

• spécifier explicitement les indices– $langages[0] = 'français';– $langages[1] = 'english';– $langages[2] = 'deutsch';

• indexer des tableaux avec des chaînes de caractères (tableaux associatifs)

$langages = array( 'fr' => 'français', 'en' => 'english', 'de' => 'deutsch‘);

• sans le constructeur – $langages['fr'] = 'français';– $langages['en'] = 'english';– $langages['de'] = 'deutsch';

Page 28: PHP - get started

Fonctions sur les tableaux

• compte les éléments du tableau $langages– count($langages);

• renvoit TRUE si la chaîne caractère 'deutsch' est un élément du tableau– in_array('deutsch', $langages);

• ajoute l'élémént 'chinese' à la fin du tableau (empile)– array_push($langages, 'chinese');

• renvoit le dernier élément du tableau (dépile) – array_pop($langages);

• il existe de nombreuses fonctions sur les tableaux

Page 29: PHP - get started

Structure conditionnelle

if( $cpt > 0 && $cpt < 4 )

{echo $cpt. “est dans l’intervalle ]0;4[“;

}

elseif( $cpt >= 4 && $cpt < 10)

{echo $cpt. “est dans l’intervalle [4;10[“;

}

else

{ echo $cpt. “est dans l’intervalle ]10;+∞)“;

}

Page 30: PHP - get started

structure de choix

swicth($animal){

case 'chien' : echo " ouaf ouaf "; break; case 'chat' : echo " miaou miaou "; break; default : echo $Animal." n’est pas un animal domestique ";

}

instruction break est nécessaire si les actions qui le suivent n'ont pas être exécutées

Page 31: PHP - get started

structure de boucle

$NbDeCoup=6;$i=0;While($i != $NbDeCoup)

{ $CoupAJouer = $NbDeCoup - $i; echo "il vous reste ". $CoupAJouer. " à jouer"; $i++;}

Page 32: PHP - get started

structure de boucle inversée

$NbDeCoup=6; $i=0; do {

$CoupAJouer = $NbDeCoup - $i;echo "il vous reste ". $CoupAJouer. " à jouer";$i++;

} While($i != $NbDeCoup); echo “la partie est finie“;

Page 33: PHP - get started

structure de boucle itérative

$tab=Array(2,4,8,9,0);for ( $i = 1 ; $i <= 4 ; $i++ )

{ echo " élément numéro ".$i; echo “contient la valeur".$tab[i];}

Page 34: PHP - get started

structure de parcours de tableau

$langages = array('fr' => ' français', 'en' => 'english', 'de' => 'deutsch');foreach ( $langages as $libelle){

echo "<li>".$libelle."</li>";}

affichera • français • english • deutsch

foreach ( $langages as $key => $libelle){echo "<li>".$key." : ".$libelle."</li>";

}affichera • fr : français • en : english • de : deutsch

Page 35: PHP - get started

sortie forcée de boucle

l'instruction break pemet de quitter prématurément une boucle

foreach($langages as $libelle){

if($libelle == "english"){break;

}}

stoppera le parcours du tableau dés que la valeur "english" est rencontrée

Page 36: PHP - get started

passage forcé à l'itération suivante

Continue permet de passer à l’itération suivante d’une boucle sans exécuter le code qui suit cette instruction dans le bloc de la boucle

foreach($langages as $libelle){

if($libelle == "english"){continue;

}echo "<li>".$libelle."</li>";

}

affichera tous les éléments du tableau langages sauf la valeur english

Page 37: PHP - get started

Inclusion / factorisation

• inclure et exécuter le code de file.php si le fichier existe– include(file.php);

• inclure et exécuter le code de file.php si le fichier existe et s’il n’a pas déjà été inclus par le script courant– include_once(file.php);

• inclure et exécuter le code de file.php (ce fichier doit exister sinon require renverra un message d’erreur)– require(file.php);

• inclure et exécuter le code de file.php (ce fichier doit exister sinon require renverra un message d’erreur) si le fichier n’a pas déjà été inclus par le script courant– require_once(file.php);

Page 38: PHP - get started

Ouvrir / écrire un fichier

Ouvrir un fichier• fopen ( string $filename , string $mode)

– Renvoie un identifiant de ressource. $mode peut être ‘r’, ‘w’, ‘r+’ …

Écrire dans un fichier• fwrite ( resource $handle , string $string)

Lire length octe d’un fichier• fread ( resource $handle , int $length )

Lire un fichier en entier• fread ($handle, filesize ($filename))

Fermer un fichier• fclose ($handle)

Page 39: PHP - get started

fonctions

• Les fonctions sont des portions de code (entre { … })associés à un nom

• Les fonctions peuvent prendre des arguments dont il n’est pas nécessaire de spécifier le type

• La liste des arguments est entre (…) , séparés par des virgules

• le mot clé function : indique le début d’une déclaration de fonction

• le mot clé return : spécifie le résultat à renvoyer

Page 40: PHP - get started

Fonction typique

<? function somme ($a,$b) { return $a + $b; }

?>

Page 41: PHP - get started

Appel d’une fonction

<? $Total=234; $SousTotal=123; $Total=somme ($Total,$SousTotal); echo $Total;// affiche 357

?>

Page 42: PHP - get started

Paramètres par défaut

• Il est possible d’attribuer des valeurs par défaut aux arguments d’une fonction

• Une valeur par défaut ne peut être qu’une constante

• Les arguments ayant une valeur par défaut doivent être placés après les arguments qui n’en ont pas

Page 43: PHP - get started

Exemple d’utilisation de paramètres par défaut

<?function ServirApero($Contenant, $Boisson = "ricard"){

return " Servir un ".$Contenant. " de ".$Boisson;}echo ServirApero("verre");//Affiche Servir un verre de ricardecho ServirApero("chaudron", "bourbon");//Affiche Servir un chaudron de bourbon?>

Page 44: PHP - get started

Portée des variables

• Une variable définie dans une fonction a une portée locale à la fonction

<? function somme ($a,$b) { return $b = $a + $b; }

?>

Page 45: PHP - get started

Variables locales à la fonction

<? $a=2; $b=4; echo somme ($a,$b);//Affiche 6 echo $a; //Affiche 2 echo $b; //Affiche 4

?>

Page 46: PHP - get started

le mot clé global

<? function somme () { global $a, $b; return $b = $a + $b; }

?>

Page 47: PHP - get started

Variables globales au script

• Toutes les variables globales du script

<? $a=2; $b=4; echo somme ();//Affiche 6 echo $a; //Affiche 2 echo $b; //Affiche 6

?>

Page 48: PHP - get started

Variables prédéfinies: $GLOBALS

• $GLOBALS est un tableau associatif contenant les références sur toutes les variables globales du script.

• Les noms des variables sont les index du tableau. • Cette fonction est strictement équivalente à la

précédente

function somme ()

{$GLOBALS["b"]=$GLOBALS[“a"]+$GLOBALS["b"];

}

Page 49: PHP - get started

Variables prédéfinies: $_SERVER

• $_SERVER est un tableau contenant des informations comme les en-têtes, dossiers et chemins du script.

• $_SERVER ['REQUEST_METHOD']– get, post, head, put

• $_SERVER ['QUERY_STRING']– La chaîne de requête, si elle existe, qui est utilisée pour accéder à la page.

• $_SERVER ['HTTP_REFERER']– L'adresse de la page (si elle existe) qui a conduit le client à la page courante.

• $_SERVER ['HTTP_USER_AGENT']– une chaîne qui décrit le client HTML utilisé pour voir la page courante

• $_SERVER [‘REMOTE_ADDR']– L'adresse IP du client qui demande la page courante.

• $_SERVER [‘REMOTE_HOST']– Le nom de l'hôte qui lit le script courant (résolution DNS inversée).

Page 50: PHP - get started

Variables prédéfinies: $_COOKIE

• Un tableau associatif des valeurs passées au script courant via les cookies HTTP

• Si la directive register_globals (c'est mal) est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global.

Page 51: PHP - get started

Variables prédéfinies: $_SESSION

• Un tableau associatif des valeurs stockées dans les sessions, et accessible au script courant.

• Si la directive register_globals (c'est mal) est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global.

Page 52: PHP - get started

Variables prédéfinies: $_POST, $_GET, $_REQUEST• $_GET : Un tableau associatif des valeurs

passées au script courant via le protocole HTTP et la méthode GET

• $_POST : Un tableau associatif des valeurs passées au script courant via le protocole HTTP et la méthode POST

• $_REQUEST : Un tableau associatif des valeurs passées au script courant via le protocole HTTP et les méthodes GET et POST

• Si la directive register_globals est active (c'est mal), alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global.

• Toutes les super globales et leur valeurs sont affichées par la commande phpinfo()

Page 53: PHP - get started

Appel dynamique de fonctions

call_user_func ($func, $arg)

• Permet d’appeler dynamiquement la fonction $func avec $arg en paramètre

• $arg peut être un tableau PHP, une chaîne de caractères (séparée par des virgules)