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