Vos commentaires sur ce code
Posté : 17 févr. 2010, 15:09
Bonne rencontre,
Je débute en PHP et je désire faire les choses dans les règles de l'art. On progesse dans un langage en regardant la documentation, les sources des autres et en ossant exposer son propre code pour qu'il soit critiquer.
J'attends donc un retour de votre part me disant tu aurais du faire comme ça ou il faut surtout pas faire ça. L'objectif ici est une page de login qui je l'espère est protégé par des attaques de type injection.
J'utilise une connexion en PDO.
Cerbere.
Je débute en PHP et je désire faire les choses dans les règles de l'art. On progesse dans un langage en regardant la documentation, les sources des autres et en ossant exposer son propre code pour qu'il soit critiquer.
J'attends donc un retour de votre part me disant tu aurais du faire comme ça ou il faut surtout pas faire ça. L'objectif ici est une page de login qui je l'espère est protégé par des attaques de type injection.
J'utilise une connexion en PDO.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="description" content="Page de Login." />
<link href="style/stylesauth.css" media="all" rel="stylesheet" type="text/css" />
<title>Login</title>
</head>
<body>
<div id="authentification">
<?php
$check=false;
if(!empty($_POST['envoyer']))
{
// Evalué à faux si $_POST['login'] est vide
if (!empty($_POST['login'])) {
// Evalué à faux si $_POST['password'] est vide
if (!empty($_POST['password'])) {
$login= $_POST['login'];
$password = $_POST['password'];
//Traitement contre injection
$login= str_replace("'"," ",$login);
$password= str_replace("'"," ",$password);
//On ouvre la connexion
include_once('connexion/connect.inc.php');
$conn = ouvreConnexion();
try{
$stmt = $conn->prepare('SELECT Sel,Password FROM Agence WHERE Mail= :login');
$stmt->execute(array(':login'=> $login));
}
catch(PDOException $e){
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
while($row = $stmt->fetch(PDO::FETCH_BOTH)){
$sal = $row[0];
$passwordDb = $row[1];
}
print $sal . "\t";
print $password. "\t";
print $passwordDb . "\t";
//On crée une chaine SHA pour la comparé à la DB
$secure_password = sha1($sal . sha1($password));
print $secure_password . "\t";
if ($secure_password === $passwordDb)
{
//traitement récupere les données et on les stock dans une session
try{
$stmt = $conn->prepare('SELECT IDAgence,Nom,Langue FROM Agence WHERE Mail= :login');
$stmt->execute(array(':login'=> $login));
}
catch(PDOException $e){
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
while($row = $stmt->fetch(PDO::FETCH_BOTH)){
session_start();
$_SESSION['user_id'] = $row[0];
$_SESSION['user_nom'] = $row[1];
$_SESSION['user_langue'] = $row[2];
$check=TRUE;
}
//Traitement on met a jour un champ
try{
$stmt = $conn->prepare('UPDATE Agence SET DateDerniereConnexion=now() WHERE Mail= :login');
$stmt->execute(array(':login'=> $login));
}
catch(PDOException $e){
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
}
else
{
echo 'Error : The password does not match !';
}
// On ferme la connexion
fermeConnexion($conn);
}else {echo 'Error : Please insert password !'; }
}else {echo 'Error : Please insert login !'; }
}
if($check === false)
{
?>
<img class="imgLogo"/>
<br /><br />
<form method="post" action="index.php">
<label for="login" class="mesLabel">Username</label>
<input type="text" name="login" id="login"/>
<br /><br />
<label for="password" class="mesLabel">Password</label>
<input type="password" name="password" id="password"/>
<br /><br />
<input type="submit" value="Send" name="envoyer" class="boutonAuth"/>
</form>
</div>
<?php
}
else
{
//On effectue la redirection vers la partie sécurisée.
//header('Location: /myserver/service/container.php');
}
?>
</body>
</html>
D'avance, merci pour votre retour.Cerbere.