27
Introduction Les bases du langage Transmission de donn´ ees Organisation d’un site La persistance Pr´ esentation PHP Benoˆ ıt Latinier Net7 janvier Benoˆ ıt Latinier Pr´ esentation PHP 1 / 27

Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 2: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 3: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 4: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 5: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 6: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 7: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 8: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 9: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 10: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 11: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 12: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 13: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 14: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 15: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 16: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 17: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 18: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 19: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 20: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 21: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 22: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 23: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 24: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 25: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 26: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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

Page 27: Pr´esentation PHP - ENSEEIHT...Introduction Les bases du langage Transmission de donn´ees Organisation d’un site La persistance Pr´esentation PHP Benoˆıt Latinier Net7 janvier

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