Académique Documents
Professionnel Documents
Culture Documents
EP 32 : PHP / MySQL
Durée : 1h30
Documents manuscrits ou issus de la plate-forme Spiral autorisés
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Accès au site protégé</title>
</head>
<body>
<h1> Accès au site protégé </h1>
<form method="POST" action="page1.php">
Identifiant : <input type="text" name="id"/><br />
Mot de passe : <input type="password" name="pass"/><br />
<input type="submit" value="OK"/>
</form>
</body>
</html>
Avec un GET, les données apparaissent "en clair" sur l'URL, Avec un POST, en effet, on ne voit pas les
données dans la barre d'adresse du navigateur
3. Quelle est l’instruction PHP qu’il faut utiliser pour démarrer une session ? rappelez
le principe de fonctionnement des sessions.
2- sans inclure, l'utilisateur peut accéder à n'importe quelle page, On va donc mémoriser dans une
session PHP, l'identifiant et le mot de passe de l'utilisateur
3- Session_start()
Lors du premier appel à session_start(), le serveur crée un cookie de session, et le poste vers le
navigateur.
Les variables de session sont enregistrées sur le serveur, dans un fichier qui porte le nom de la variable
de session.
Lors des accès suivants, le client renvoie la valeur du cookie de session vers le serveur. Les appels à
session_start() vont alors restaurer la valeur de la variable $_SESSION, à partir du fichier stocké sur le
serveur
4. Donnez les instructions qui permettent de définir les variables PHP $id et
$passe correspondant au contenu que l’utilisateur a saisi dans le formulaire
d’identification (on prendra soin de vérifier que l’utilisateur est passé par un
formulaire pour arriver sur la page courante).
On suppose dans un premier temps qu’il y a un unique couple valide identifiant / mot de
passe, partagé entre tous les utilisateurs du site, qui est mémorisé de manière permanente
(« en dur ») dans le script « auth.php ».
Fichier « auth.php »
<?php
session_start(); // démarrage de la session
if (isset($_POST["id"]) && isset($_POST["pass"])) { // si on vient du formulaire
$id = $_POST["id"]; // on récupère l'identifiant saisi dans le formulaire
$_SESSION["id"] = $id; // on mémorise cet identifiant dans la session
$pass = $_POST["pass"]; // pareil pour le mot de passe
$_SESSION["pass"] = $pass; // on mémorise ce mot de passe dans la session
} elseif (isset($_SESSION["id"]) && isset($_SESSION["pass"])){ // sinon, peut-être que la session a
déjà été ouverte
// (on vient d'une page où on était identifié)
$id = $_SESSION["id"]; // on restaure $id à partir de la session
$pass = $_SESSION["pass"]; // on restaure $pass à partir de la session
} else {
$id = ""; // sinon : on initialise id et pass avec des valeurs bidon
$pass = "";
}
if (! (($id == "vciel") && ($pass == "VCIEL")))
header("Location: id.html"); // redirection sur la page d'identification
?>
Fichier « page1.php »
<?php
include "auth.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Page 1</title>
</head>
<body>
<H1> Page 1 </H1>
Ceci est la première page du site.
Cliquez <a href="page2.php">ici</a> pour aller à la page 2.<BR />
Cliquez <a href="close.php">là</a> pour fermer la session
</body>
</html>
//$host="localhost";
//$utilisateur="root";
//$motdepasse="";
//$base="acces";
try{
$connexion = new PDO('mysql:host=localhost;dbname=acces,'root','');
}
catch(Exception $erreur){
die('Erreur de connexion'. $erreur->GetMessage() );
}
$requete = ‘select * from logins where id=$_SESSION["id"] ‘;
try {
$reponse = $connexion->query($requete) ;
}
catch (Exception $e) {
die("Erreur à l'exécution de la requête $requete" . $e->getMessage() );
}
If (($ligne = $reponse->fetch(PDO::FETCH_OBJ) ) {
if ($ligne->pass != $_SESSION["passe"]) {
// mot de passe incorrect
header("Location: id.html");
}
}
Else{
// identifiant inconnu
header("Location: id.html");
}
//$host="localhost";
//$utilisateur="root";
//$motdepasse="";
//$base="acces";
try{
$connexion = new PDO('mysql:host=localhost;dbname=acces,'root','');
}
catch(Exception $erreur){
die('Erreur de connexion'. $erreur->GetMessage() );
}
$requete = ‘select id,nb_pages from logins ‘;
try {
$reponse = $connexion->query($requete) ;
}
catch (Exception $e) {
die("Erreur à l'exécution de la requête $requete" . $e->getMessage() );
}
$i=0 ;
while ($ligne = $reponse->fetch(PDO::FETCH_OBJ) ) {
$tab_id[$i]= $ligne->id;
$tab_pages[$i]= $ligne->nb_pages;
$i++ ;
}
$lignes = 500;
$colonnes = 500;
$image = imageCreate($lignes, $colonnes);
$fond = imagecolorallocate($image, 255, 255, 0); // la couleur de fond... ici : jaune !
$barre = imageColorAllocate($image, 255, 0, 0); // la couleur des barres... ici : rouge !
$text = imageColorAllocate($image, 0, 0, 0); // la couleur des barres... ici : noir !
$nb_lignes = count($tab_id);
$barre_height = intval ( ($colonnes - $nb_lignes*2)/ $nb_lignes );
header("Content-type: image/png");
imagepng($image);