Connexion à un espace membre en PDO
Posté : 20 mars 2013, 03:00
Bonjour,
Je recrée tous mes codes mysql classique en PDO (qui est plus rapide) et j'ai un problème avec le formulaire de connexion à l'espace membre :
- J'ai ce message d'erreur au submit :
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in /public_html/ajax/login.php on line 16
- Voici la ligne 16 : $req->execute();
J'aimerais aussi rendre cette requête sécurisée, mais ce n'est pas la même méthode en PDO.
Je recrée tous mes codes mysql classique en PDO (qui est plus rapide) et j'ai un problème avec le formulaire de connexion à l'espace membre :
- J'ai ce message d'erreur au submit :
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in /public_html/ajax/login.php on line 16
- Voici la ligne 16 : $req->execute();
J'aimerais aussi rendre cette requête sécurisée, mais ce n'est pas la même méthode en PDO.
session_start();
require('../include/functions.inc.php');
if (isset($_SESSION['pseudo'])) :
header('Location: ../index.php');
exit();
endif;
$pseudo = $_POST['pseudo'];
$pass = $_POST['password'];
if (isset($_POST['submit'])) :
if (!empty($pseudo) && !empty($pass)) :
$req = $sql->prepare('SELECT id FROM wa_communaute WHERE pseudo = :pseudo AND pass = :password');
$req->execute();
$result = $req->rowCount($sql);
if($result == 1) :
$_SESSION['id'] = $result['id'];
$_SESSION['pseudo'] = $_POST['pseudo'];
$id = mysql_insert_id();
setcookie("pseudo", $_POST["pseudo"], time() + 90 * 24 * 60 * 60, "/");
header('Location: ../index.php');
elseif ($result == 0) :
$error = '<div class="error">Vos identifiants sont incorrects !</div>';
endif;
$req ->closeCursor () ;
$req = null;
else:
$erreur = '<div class="error">Veuillez remplir tous les champs !</div>';
endif;
endif;
Pour information, mon formulaire classique fonctionne comme ça : session_start();
require('../include/functions.inc.php');
if (isset($_SESSION['pseudo'])) {
header('Location: ../index.php');
exit();
}
$pseudo = $_POST['pseudo'];
$pass = $_POST['password'];
if (isset($_POST['submit'])) {
if (!empty($pseudo) && !empty($pass)) {
$sql = connect_sql();
$sql = 'SELECT id FROM wa_communaute WHERE pseudo="'.mysql_real_escape_string($_POST['pseudo']).'" AND pass="'.mysql_real_escape_string(md5($_POST['password'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);
if ($nb == 1) {
$data = mysql_fetch_array($req);
$_SESSION['pseudo'] = $_POST['pseudo'];
$_SESSION['id'] = $data['id'];
$id = mysql_insert_id();
setcookie("pseudo", $_POST["pseudo"], time() + 90 * 24 * 60 * 60, "/");
header('Location: ../index.php');
}
elseif ($nb == 0) {
$erreur = '<div class="erreur-form">Vos identifiants sont incorrects !</div>';
}
mysql_free_result($req);
mysql_close();
}
else {
$erreur = '<div class="erreur-form">Veuillez remplir tous les champs !</div>';
}
}
Merci d'avance pour votre aide