36
Conception de Site Webs Interactifs Cours 8 Patrick Reuter [email protected]

Conception de Site Webs Interactifs Cours 8 Patrick Reuter [email protected]

Embed Size (px)

Citation preview

Page 1: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Conception de Site Webs Interactifs

Cours 8

Patrick Reuter

[email protected]

Page 2: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

PHP et MySQL

Page 3: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

http://fr2.php.net/manual/fr/

Page 4: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

<?php

echo "Hello World";

?>

Page 5: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Remarques

• Extension du fichier doit être .php

• Le navigateur ne comprend que l'HTML

• Le code "php" inclus dans la page HTML est transformé par le serveur php

• Le code "php" est invisible dans la page HTML affichée car il est interpreté

Page 6: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Un exemple pratique : Hello World<html> <head> <title>Ma premiere page</title> </head> <body> <h1>Hello World</h1> </body></html>

<html> <head> <title>Ma premiere page</title> </head> <body>

<h1><?php echo "Hello World";?></h1>

</body></html>

helloworld.htm

helloworld.php

Page 7: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Un exemple pratique : remarques

• Si on "éteint" le serveur web (EasyPHP)

• Si on met une extension .html au fichier php

Page 8: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

echo 'j\'utilise php'; // FAUX

echo "j'utilise php" ; // CORRECT

echo "j\'utilise php" ; // CORRECT

Page 9: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Concatenation 1

<?   

echo   "Salut"." Martin"; 

?> 

Page 10: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Interaction de PHP avec MySQL

<?php

require_once("connect_db.php");

?>

Page 11: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

<form action="enregistrer.php" enctype="multipart/form-data" method="get">

<!-- ... --></form>

ou bien

<form action="enregistrer.php" enctype="multipart/form-data" method="post">

<!-- ... --></form>

Page 12: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

PHP : $_GET et $_POST

• $_GET– Les paramètres apparaissent dans l’URL– Ils sont donc visibles par l’utilisateur– Bien pour trouver des erreurs– Ils peuvent donc être récupéré …– MAIS : Ils sont facilement modifiables (bien

pour le développement pour trouver des bugs, p.ex.)

– MAIS : nombre de caractères limités dans l’URL (256 caractères)

Page 13: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

PHP : $_GET et $_POST

• $_POST– Les paramètres n’apparaissent pas dans

l’URL • Ils sont quand meme visibles en affichant le source

de la page

– La quantité d’informations dans les formulaires est quasiment illimité

– MAIS : Ils ne sont facilement modifiables

Page 14: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

MySQL – Insérer un enregistrement

Concatenation de chaines de caractères

$chaine = "Bon" . "jour";

Page 15: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

MySQL – Insérer un enregistrement

Concatenation de chaines de caractères

$j = "jour";

$chaine = "Bon" . $j;

Page 16: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

MySQL – Insérer un enregistrement

Concatenation de chaines de caractères

$chaine = "Bonjour " . $_GET[‘nom’];

Page 17: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

MySQL – Insérer un enregistrement

Concatenation avec les données du formulaire

$login = $_POST['login'];

$mdp = $_POST['mdp'];

$sql = "INSERT INTO `users` (`pseudo` , `motdepasse`) VALUES ('" . $login. "', '" . $mdp. "' ); ";

$res = qdb($sql); // qdb est défini dans connect_db.php

Page 18: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

MySQL – Insérer un enregistrement

Concatenation avec les données du formulaire

$login = $_POST['login'];

$mdp = $_POST['mdp'];

$sql = "INSERT INTO `users` (`pseudo` , `motdepasse`) VALUES ('', '' ); ";

$res = qdb($sql); // qdb est défini dans connect_db.php

Page 19: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

MySQL – Insérer un enregistrement

Concatenation avec les données du formulaire

Exemple :

$login = "preuter";

$mdp = "l'); DELETE * FROM users;";

$sql = "INSERT INTO `users` (`pseudo` , `motdepasse`) VALUES ('preuter', 'l'); DELETE * FROM users;";

$res = qdb($sql); // qdb est défini dans connect_db.php

Page 20: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Instructions MySQL

Protéger vos champs textes :

$mdp = "l'arbre";

$mdp = mysql_escape_string($mdp);

echo $mdp; // l\'arbre

Page 21: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

MySQL – Insérer un enregistrement

Concatenation avec les données du formulaire

$login = mysql_escape_string($_POST['login']);$mdp = mysql_escape_string($_POST['mdp']);

$sql = "INSERT INTO `users` (`pseudo` , `motdepasse` ) VALUES ('" . $login. "', '" . $mdp. "' ); ";

$res = qdb($sql); // qdb est défini dans connect_db.php

Page 22: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

• $a = stripslashes("l\'arbre");

• (resultat : l'arbre)

Page 23: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Récapitulatif

• HTML/XHTML

• CSS

• PHP

• MySQL

Page 24: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Mini-projets

1. Site de rencontre– (utilisateurs, rechercher un correspondant)

2. Messagerie privée– (éventuellement à combiner avec 1.)

3. Gestion d’une équipe de sport4. Forum de discussion5. Gestion de salles de cours6. Site de vente aux enchères7. Albums de photos8. Carnet d’adresses et liste de mailings9. Gestionnaire de DVD10. Jeux de bourse

Page 25: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

• Jeu à jardin de plantes

• Actualisation web

• Mailing list

• Reminder web de evenement

• Creation statistiques

• Gestionnaire division sportive

• Planning

Page 26: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Transférer des fichiers vers votre hebergeur

• FTP (File transfer protocol)

• Client FTP : Filezilla, FTP Expert, SmartFTP, … • _______

• ftp.numericable.fr• ftp.membres.lycos.fr• ftp.wanadoo.fr

• Nom d'utilisateur• -----------------

• preuter

• Mot de passe• -----------------

Page 27: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr
Page 28: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Terminologie

• Base de données (database)

• Table (table)

• Enregistrement (record)

• Champ (field)

Page 29: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Table PERSONNE

PERSONNE

PersID nom prénom date_naiss ville_naiss

1 Dupont bob 01-01-1950 1

2 yyyy meurise 29-04-1999 2

3 zzzz codd 26-12-2000 1note : ici ville_naiss est une clé étrangère (Table VILLE)

Page 30: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Table VILLE

VILLE

VilleID nom population superficie region

1 Paris 123456 123456 12

2 Lyon 12345 12345 22

3 Grenoble 1234 1234 22note : ici region est une clé étrangère (table REGION)

Page 31: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

• Relation 1 : n

Page 32: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Types de relations

• Relation de type 1:1

• Relation de type 1:n

• Relation de type n:m

Page 33: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Relation de type 1:1

Une entité est partenaire de exactement une autre entité

Exemples:• Mariage : Une personne est marié avec exactement une

autre personne ⇒ Personne 1:1 Personne

• Immatriculation : Une véhicule à exactement une immatriculation

⇒ Véhicule 1:1 Immatriculation• Stade : Dans notre exemple, un club a exactement un

stade ⇒ Club 1:1 Stade

Page 34: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Relation de type 1:n

Une entité d'un côté est en relation avec un ou plusieurs entités de l'autre côté.

Exemples :• Art : Un tableau se trouve (à un moment donné) dans un

musée. Par contre, dans un musée il y a plusieurs tableaux.

⇒ Musée 1:n Tableaux • Famille: Un enfant à exactement une mère biologique.

Mais une mère peut avoir plusieurs enfants. ⇒ Mère 1:n Enfants

Page 35: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

Relation n:mDans les deux côtés de la relation il y a un nombre arbitraire d'entités.

Attention : Ne pas écrire n:n ! (n ≠ m) Exemples :

• Etudiant ↔ Professeur: Un professeur enseigne plusieurs étudiants. Un étudiant va en cours de plusieurs professeurs.

⇒ Professeur m:n Etudiant• Immobilier : Un immobilier peut appartenir à plusieurs propriétaires.

Un propriétaire peut posséder plusieurs immobiliers. ⇒ Propriétaire n:m Immobilier

• joueurs ↔ clubs anciens : Un joueur peut avoir plusieurs clubs anciens. Un club a plusieurs joueurs.

Page 36: Conception de Site Webs Interactifs Cours 8 Patrick Reuter preuter@labri.fr

RéalisationRelation 1:1• La clé primaire d'une entité est la clé étrangère d'une autre entité

dans un champs supplémentaire.

Relation 1:n• La table de l'entité du côté n aura un champs supplémentaire qui a

comme clé étrangère la clé primaire du côté 1.

Relation n:m

• Création d'une table de jointure qui contient deux clés étrangères qui sont les clés primaires des deux tableaux.

• Les relations n:m seront toujours converties en deux relations, une relation 1:n, et une relation 1:m.