• Aucun résultat trouvé

(1)Prof: [email protected] Dans le cours

N/A
N/A
Protected

Academic year: 2022

Partager "(1)Prof: [email protected] Dans le cours"

Copied!
1
0
0

Texte intégral

(1)

Prof: [email protected] Dans le cours:

- PHP

- MySQL

- Ce qu'il n'y a pas ds les livres - Créer une soumission - Sécurité

- Gestion de session

- Comparaison PHP avec ASP, JSP - Requêtes au BD avec PHP - Mises-à-jour de formulaires HTML - Validation de formulaire

- etc.

Livre: voir 3.1 du plan de cours

Pour voir les documents sur le serveur: /home/www-desi/usagers/grenonni/HTML/ (j'ai fait un lien www) http://www-desi.iro.umontreal.ca/~grenonni/

Dans les TPs, utiliser les droits suivant: directory  711 files  644

CSS – Feuilles de style:

1- Feuille externe 2- Balise conteneur 3- attribut à une balise

<div> et <span> permettent de limiter l'étendue d'une feuille de style…

PHP require

(2)

Ouverture de code PHP: <?PHP

Fermeture: ?>

require: si fichier non dispo, arrête l'exécution.

require_once: le once évite une relecture dans une boucle par exemple.

include: si fichier non dispo, continue l'exécution.

include_once: " "

Variables commencent par $, pas d'initialisation.

== vérifie l'égalité même si pas le même type. ("123" == 123  true)

=== vérifie l'égalité sans ajuster le type. ("123" === 123  false) !== est l'inverse On concatène deux chaînes avec un point ( . ) ex.: echo "bonjour" . $a;

echo accepte une liste de paramètre: ex.: echo "bonjour", $a;

… valable aussi: ex.: echo "bonjour $a"; \$ pour le $

echo "{$a}bonjour";

Pour afficher litéralement: echo 'bonjour $a'  «bonjour $a»

Les // de commentaires ne sont pas générés vers le html, ben entendu.

Débogage: Voir page 10, chap. 4  Penser à ajouter le error_reporting(E_ALL) 

Tableau de valeurs: $a = array(1,2,3,4,5);

for ($i=0; $i < sizeof($a); $i++) … [sizeof == count]

for ($i=0, $nb=sizeof($a); $i < $nb; $i++) … foreach ($a as $val) echo $val;

$tab = array(

"nom" => "Tremblay", ou "nom" => $a; (val)

"prenom" => "Mario" ou "nom" => &$a; (ptr) );

echo $tab['nom'];

$cles = arrey_key($tab);  "nom", "prenom", … ou

foreach ($tab as $cle => $val) …

nota: <pre> </pre> pour afficher tel quel en html !

strnatcmp permet de classer les chaînes selon a5, a10, a20 (et non pas a10, a20, a5 de strcmp)

Tri: $tab = array (100, 3, 5);

sort($tab);

ksort a trier les clés (en conservant les associations, évidemment) explode: explode(",", "bla,ble,bli,blo,blu");  array …

(il existe aussi implode)

fonction, voir fontionporte.php pour passage par valeur / référence.

Lecture d'un fichier: file();  $monFichier = file("bla.txt");  array par ligne … (avec les \n, [trim]) fopen/fclose fgetcsv …

voir file.php *** penser à utiliser is_readable …

Appel d'une page php avec paramètres:_GET contient un array associatif.

 Analyser ce qui est passé comme valeur !!! if (array_key_exists('bla', $_GET)) …

if (ctype_digit($_GET['bla']) … if < sizeof && >= 0

(3)

exemple objet php4:

class Coord {

var $_x; // Le _ signifie que le «x» est private (même si tjrs public ds php4) var $_y;

// Mon constructeur function Coord() {

$this->_x = 0; // «this» est obligatoire

$this->_y = 0;

}

setX($x) {

$this->_x = $x }

getY() {

return $this->_y;

}

function _stoc … }

$c =& new Coord(); // Le & permet d'évite de copier le nouvel objet 2 fois

$c->setX(1);

echo $c->getY();

nota: Appel statique: LaClasse::laMethode();

exemple pratique, page HTML: voir répertoire cours3

nota: Appels par paramètre, penser à mettre &amp; plutôt que & tout cout dans bla.php?a1=1&a2=2 … Formulaires

intéressant: http://livehttpheaders.mozdev.org

Penser à: Pour les chekbox, utiliser comme nom un truc du genre: name="bla[ ]"

nota: Les appels de nction peuvent avoir un paramère manquant, s'il a été défini avec une valeur par défaut.

Expression régulière, exemple: ^.+@[-0-9A-Z._]+\.[A-Z]{2,4} (pour courriel) ereg versus eregi // Le i rend le case insensitive

note importante TP2: penser à la fonction scripttags

(4)

Intéressant pour valider un formulaire … (dans PEAR: HTML_quickform)

htmlentities, fonction qui encore le texte pour être affichae sans problème dans une page web.

Génération automatique de vignettes 1- extension = gd.dll dans php.ini

2- header (attention de rien envoyer avant l'image ni après. par exemple des lignes vides début/fin) 3- attention au type de l'image (jpeg != gif)

Serveur MySQL UdeM: europa.iro.umontreal.ca

mysql –u dift1147 –p –h europa.iro.umontreal.ca show databases like 'dift1147_%';

use dift1147_Cinema;

show tables;

describe Acteur;

describe Role;

etc. voir notes

select * from Acteur, Role; énorme

select * from Acteur, Role where Acteur.acteurID=Role.acteurID;

select * from Acteur, Role where Acteur.acteurID=Role.acteurID and Film.filmID=Role.filmID;

select * from Acteur, Role where Acteur.acteurID=Role.acteurID and Film.filmID=Role.filmID and titre="Les Boys";

select nom, prenom from Acteur, Role where Acteur.acteurID=Role.acteurID and Film.filmID=Role.filmID and titre="Boys";

select nom, prenom from Acteur order by nom asc;

select nom, prenom from Acteur order by nom limit 5; 5 éléments select nom, prenom from Acteur order by nom desc limit 1;

select nom, prenom from Acteur order by nom asc limit 2,1; 1 item à partir du 2e select * from Acteur where prenom like '%a%'; case insensitive select * from Acteur where prenom like binary '%a%'; case sensitive select count(*) from Acteur;

select count(*) from Acteur where left(nom, 1)='C';

select concat(nom, ', ', prenom) from Acteur;

select concat(nom, ', ', prenom) from Acteur AS nomPrenom;

select filmID+acteurID from Role;

nota: \g à la fin permet de changer l'affichage.

in: peut servir pour créer une énumération. bla bla in (2, 4, 6)

(5)

select Acteur * from Acteur LEFT JOIN Role ON Acteur.acteurID=Role.acteurID WHERE insnull(Role.acteurID) cle primaire: peut pas se répéter, ne peut être null.

clé unique:

clé multiple: peut se répéter, peut être null.

explain select … : permet d'expliquer comment la recherche se ferait et combien d'étapes seraient nécessaires…

 penser à faire le mysqladmin pour changer mon pass? Mot de passe MySQL: recette initiale.

Par php, utiliser un login différent (grenonni_web) et un pass indépendant…

exemple intéressant: select1.php select1_pear.php select2.php

mysql_escape_string: permet de préparer la string afin que le code soit valide en MySQL (backslash devant ")

Cours 6, 7 juin 2005

mysql_escape_string, pour nettoyer une requête de ses caractères dangereux.

$_SERVER contient les login et pass de type http (.htaccess)

La fonction header() de php permet d'envoyer un code 401 qui force le navigateur à demander une auth.

md5() permet un encryptage à sens unique.

crypt($a) retourne une chaîne cryptée DES (changeante)

Si crypt($a,chaineEncryptee) == chaineEncryptee, alors on a le bon pass…

On sauvegarde donc ds la DB crypt($login . $pass) et on compare ensuite le doublons donné crypté comme ça return(crypt($clair, $mdp.db) == $mdp.db)

Cours 7, 14 juin 2005

En accompagnant le cookie du SessionID par un autre «secret» changé aléatoirement à chaque "tour", dès qu'un de ces cookie secret est répéter, on ferme la sesion!

Avec ini_set, on peut changer session.name pour modifier le nom du cookie SESSIONID et d'autres bidules utiles.

session.gc_probability, en % à ajuster à 100% pour être sur de la fermeture…? (bas si gros site, hau si petit site)

$_SESSION["maVar"] = …;

unset($_SESSION["maVar"];

Cours 8, 21 juin 2005

Pour exécuter uen commande sur le serveur: exec XML: - une seule racine

- style html tag

Références

Documents relatifs

Question 5 : Roue en rotation uniforme (3 points) Une roue de vélo est maintenue avec un axe sans masse incliné d'un angle θ par rapport à la verticale.. La vitesse angulaire

Le système est constitué de quatre corps : une bascule ayant la forme d’un demi- disque (de rayon R, de masse M) est posée sur une planche (de longueur L, de masse m, d’épaisseur

La roue arrière a une masse M’, un rayon R’, et son centre de gravité est en D sur l'axe de rotation de la roue arrière par rapport au cadre; idem pour la roue avant (M’,

Elle s’appuie sur un disque circulaire de masse M, de rayon R et de centre C de manière telle qu’il y a roulement sans glissement entre les deux solides, alors que le disque peut

Question 3 : Système de deux barres (4 points) La tige OA, de longueur L, de masse m, peut osciller dans le plan vertical Oxy autour du point fixe O.. Un couple de force

Ce chasse- neige est constitué d’une roue S 1 (de centre C, de rayon R, de masse m répartie uniformément sur la circonférence par rapport à son axe) et d’une partie S 2 (en forme

Les centres des deux masses sont reliés par une corde inextensible et sans masse, passant (sans glisser) par une poulie cylindrique (de masse m et de rayon r) lié au sol par

Avec le théorème de la résultante cinétique appliqué au système, nous ne devons pas tenir compte du choc entre les deux sphères (=force interne).. On peut appliquer le principe