Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Presentation PHP
Benoıt Latinier
Net7
janvier
Benoıt Latinier Presentation PHP 1 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Syllabus
1 Introduction
2 Les bases du langage
3 Transmission de donnees
4 Organisation d’un site
5 La persistance
Benoıt Latinier Presentation PHP 2 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
HistoriqueClient, serveur... il est ou mon code ?En local on fait comment ?
Syllabus
1 Introduction
HistoriqueClient, serveur... il est ou mon code ?En local on fait comment ?
2 Les bases du langage
3 Transmission de donnees
4 Organisation d’un site
5 La persistance
Benoıt Latinier Presentation PHP 3 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
HistoriqueClient, serveur... il est ou mon code ?En local on fait comment ?
Historique
PHP
PHP a ete invente par Rasmus Lerdorf en 1994, pour faire sonsite personnel (pour son CV).
A l’origine PHP = Personal Home Page.
Plus tard : PHP = PHP Hypertext Preprocessor.
Derniere version en date : 5.3.4 10 decembre 2010.
PHP 6 en preparation... vaporware ? ?
Benoıt Latinier Presentation PHP 4 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
HistoriqueClient, serveur... il est ou mon code ?En local on fait comment ?
Benoıt Latinier Presentation PHP 5 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
HistoriqueClient, serveur... il est ou mon code ?En local on fait comment ?
Sous Linux
LAMP (cf doc)
XAMP
Sous Windows
XAMP
WAMP
easyPHP
Benoıt Latinier Presentation PHP 6 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
HistoriqueClient, serveur... il est ou mon code ?En local on fait comment ?
Net7 vous aime
Net7 vous fourni un joli LAMP deja pret.
Placez les fichiers dans www public de votre espace.
Accedez a votre site via http ://www.bde.enseeiht.fr/∼login/
Acces au www public
Sur les PCs de Net7 (ou du bde)
Via FTP http ://www.bde.enseeiht.fr/doc/ftp/
Benoıt Latinier Presentation PHP 7 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Les tags PHPAffichage et commentairesVariablesStructures de controle
Syllabus
1 Introduction
2 Les bases du langage
Les tags PHPAffichage et commentairesVariablesStructures de controle
3 Transmission de donnees
4 Organisation d’un site
5 La persistance
Benoıt Latinier Presentation PHP 8 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Les tags PHPAffichage et commentairesVariablesStructures de controle
Ce qui est bien
<?php et ? >
Ce qui est mal ! ! ! (Bouh c’est le mal ! !)
Les short tags
<?
<? =
A bannir car conflit avec les tags xml. Desactive par defaut dansPHP6 ( ?).
Benoıt Latinier Presentation PHP 9 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Les tags PHPAffichage et commentairesVariablesStructures de controle
Affichage
Plusieurs solutions :
echo ”ma chaine” ;
print(”ma chaine”) ;
On fait plutot echo traditionnellement.
Commentaires
Deux solutions :
Commentaire inline : //pipo
Commentaire block : /* pouet */
Benoıt Latinier Presentation PHP 10 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Les tags PHPAffichage et commentairesVariablesStructures de controle
Nature
Toutes les variables en PHP sont precedees d’un $.
Aucune declaration n’est requise.
Le typage est dynamique.
Consequence
Possible de faire des choses tres tres souples.
Un comportement anormal est plus vite arrive que corrige...
Exemple
1 <?php
2 $a = 1; // Ici a est un int
3 $a = "Coucou c’est moi"; /* a est un string */
4 ?>
Benoıt Latinier Presentation PHP 11 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Les tags PHPAffichage et commentairesVariablesStructures de controle
if
1 <?php
2 if($someBool){
3 //quelques instructions 1
4 }
5 elseif($otherBool){
6 //quelques instructions 2
7 }
8 else{
9 //quelques instructions 3
10 }
11 ?>
Benoıt Latinier Presentation PHP 12 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Les tags PHPAffichage et commentairesVariablesStructures de controle
for
1 <?php
2 for($i=$init; $i<$max; $i++){
3 //quelques instructions 1
4 }
5 ?>
while
1 <?php
2 while($someCond){
3 //quelques instructions 1
4 }
5 ?>
Benoıt Latinier Presentation PHP 13 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
PreambuleLes super-globalesPassage par urlPassage par formulaire
Syllabus
1 Introduction
2 Les bases du langage
3 Transmission de donnees
PreambuleLes super-globalesPassage par urlPassage par formulaire
4 Organisation d’un site
5 La persistance
Benoıt Latinier Presentation PHP 14 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
PreambuleLes super-globalesPassage par urlPassage par formulaire
Les tableaux
Quelque proprietes :
Association et/ou indexes
Peuvent contenir plusieurs type differents
Taille ”illimite” (pas de declaration)
Exemple
1 <?php
2 $a1 = array(1, "PIPO", 3.14);
3 $a1[2] = 3.14159;
4 $a1[] = "zouip";
5 $a1[’randomNumber’] = 42;
6 $a1 = array("key" => "value");
7 ?>
Benoıt Latinier Presentation PHP 15 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
PreambuleLes super-globalesPassage par urlPassage par formulaire
Les super-globales les plus courantes (on passe vite)
$_GET : variables passees par url.
$_POST : variables passees par formulaire.
$_SESSION : variables stockees en session.
$_SERVER : variables diverse concernant l’utilisateur (IP ...).
Benoıt Latinier Presentation PHP 16 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
PreambuleLes super-globalesPassage par urlPassage par formulaire
Page envoyant les donnees
1 <a href="cible.php?var1=pipo&var2=42">Send data</a>
Page cible
1 <?php
2 echo "var1 vaut ".$_GET[’var1’]." et var2 vaut ".$_GET[’
var2’];
3 ?>
Resultat : var1 vaut pipo et var2 vaut 42
Benoıt Latinier Presentation PHP 17 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
PreambuleLes super-globalesPassage par urlPassage par formulaire
Page envoyant les donnees
1 <form method="post" action="cible.php">
2 Texte : <input type="text" name="normal" /><br />
3 Mdp : <input type="password" name="pass" /><br />
4 Texte long : <br/>
5 <textfield name="txtLong"></textfield><br />
6 <input type="hidden" name="cache" value="42" />
7 <input type="submit" value="Envoyer" />
8 </form>
Page cible
1 <?php
2 echo "var1 vaut ".$_POST[’var1’]." et var2 vaut ".$_POST[’
var2’];
3 ?>
Resultat : var1 vaut pipo et var2 vaut 42Benoıt Latinier Presentation PHP 18 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
PreambuleLes super-globalesPassage par urlPassage par formulaire
Page cible
1 <?php
2 //get the data :
3 $data = array();
4 $data[’txt’] = $_POST[’normal’];
5 $data[’mdp’] = $_POST[’pass’];
6 $data[’cache’] = $_POST[’cache’];
7 $data[’txt2’] = $_POST[’txtLong’];
8 echo "<pre>";
9 var_dump($data);
10 echo "</pre>";
11 ?>
Benoıt Latinier Presentation PHP 19 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Syllabus
1 Introduction
2 Les bases du langage
3 Transmission de donnees
4 Organisation d’un site
5 La persistance
Benoıt Latinier Presentation PHP 20 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Schematiquement
Un request dispatcher
Des modules :
Un modeleUn controleurUne vue
Schema MVC
Benoıt Latinier Presentation PHP 21 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Par les sessionsPar base de donneePar ecriture dans un fichier
Syllabus
1 Introduction
2 Les bases du langage
3 Transmission de donnees
4 Organisation d’un site
5 La persistance
Par les sessionsPar base de donneePar ecriture dans un fichier
Benoıt Latinier Presentation PHP 22 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Par les sessionsPar base de donneePar ecriture dans un fichier
Une page
1 <?php
2 //This MUST BE the beginning of the file
3 session_start();
4 $_SESSION[’username’] = "pipo";
5 $_SESSION[’score’] = 42;
6 ?>
Une autre page
1 <?php
2 //This MUST BE the beginning of the file
3 session_start();
4 echo $_SESSION[’username’].", score: ".$_SESSION[’score’];
5 ?>
Benoıt Latinier Presentation PHP 23 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Par les sessionsPar base de donneePar ecriture dans un fichier
Exemple par PDO
PDO = PHP Data Object
1 <?php
2 /* Connexion a une base ODBC avec l’invocation de pilote
*/
3 $dsn = ’mysql:dbname=testdb;host=127.0.0.1’;
4 $user = ’dbuser’;
5 $password = ’dbpass’;
6
7 try {
8 $dbh = new PDO($dsn, $user, $password);
9 } catch (PDOException $e) {
10 echo ’Connexion echouee : ’ . $e->getMessage();
11 }
12 ?>
Benoıt Latinier Presentation PHP 24 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Par les sessionsPar base de donneePar ecriture dans un fichier
Exemple par PDO (suite)
1 <?php
2 /* Execute une requete preparee en passant un tableau de
valeurs */
3 $req = $dbh->prepare(’SELECT nom, couleur, calories
4 FROM fruit
5 WHERE calories < :cal AND couleur = :coul’);
6 $req->execute(array("cal" => 150, ":coul" => ’rouge’));
7 while($res = $req->fetch()){
8 echo $res[’nom’]." ".$res[’couleur’]." ".$res[’
calories’];
9 }
10 ?>
Benoıt Latinier Presentation PHP 25 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Par les sessionsPar base de donneePar ecriture dans un fichier
Quelque primitive pour exploiter des fichiers
fopen
fread
fwrite
fgets
fclose
file exists
...
Benoıt Latinier Presentation PHP 26 / 27
IntroductionLes bases du langage
Transmission de donneesOrganisation d’un site
La persistance
Par les sessionsPar base de donneePar ecriture dans un fichier
Mieux que PHP?
Tout le reste... Des frameworks :
CakePHP
Zend
Des CMS :
Drupal
D’autres langages
Python → Django
Ruby → RubyOnRails
Benoıt Latinier Presentation PHP 27 / 27