1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| <?php
session_start();
if (!isset($_SESSION['id'])) {
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$dbh = new PDO('mysql:host=localhost;dbname=developpez', 'developpez', 'developpez', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$login = $dbh->prepare('SELECT id FROM utilisateurs WHERE login = :login AND mot_de_passe = SHA(:mdp)');
$login->bindValue('login', $_POST['login'], PDO::PARAM_STR);
$login->bindValue('mdp', $_POST['mdp'], PDO::PARAM_STR);
$login->execute();
if ($login->rowCount() === 1) {
$util = $login->fetch(PDO::FETCH_ASSOC);
$_SESSION['id'] = $util['id'];
} else {
afficher_formulaire("Aucune correspondance");
exit;
}
} else {
afficher_formulaire();
exit;
}
} else {
$requested = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
if (is_file($requested)) {
$mime = mime_content_type($requested); // à remplacer par fileinfo si possible
#if (/* si c'est bien un script PHP ... */) {
# ... en interdire l'accès ; ne rien faire (corps vide), conduira à son interprétation
# header('HTTP/1.0 403 Forbidden', TRUE, 403);
# echo 'Forbidden';
# exit;
#} else {*/
header('Content-type: ' . $mime);
readfile($requested);
/**
* On met fin au script pour éviter toute erreur de syntaxe (fichier binaire) ou exécution de script
* malveillant. Si ça doit aussi concerner des scripts PHP à interpréter, il faudra dissocier ce cas
* et le traiter autrement
**/
exit;
#}
} else {
header('HTTP/1.0 404 Not Found', TRUE, 404);
echo 'Not Found';
exit;
}
}
function afficher_formulaire($message = '') {
?>
<html>
<form action="" method="post">
Login : <input type="text" name="login" />
<br />
Mot de passe : <input type="text" name="mdp" />
<br />
<input type="submit" value="Login" />
</form>
<?php if ($message) { echo '<p>', $message, '</p>'; } ?>
<?php
} |
Partager