我正在处理身份验证表单,这是HTML代码:
<input type="text" class="form-control" name="matriculeAgent" placeholder="Compte matriculaire">
<input type="password" class="form-control password" name="motdepasseAgent" placeholder="mot de passe">
这是PHP代码,我将matriculeAgent
和motdepasseAgent
与数据库的信息进行比较:
$matricule_verif = $_POST["matriculeAgent"] ;
//password:
$motdepasse_verif = $_POST["motdepasseAgent"] ;
if ((isset($_POST["matriculeAgent"])==true) && (isset($_POST["motdepasseAgent"])==true)){
$req = $bdd->prepare("SELECT `matriculeAgent`, `motdepasseAgent` FROM `utilisateurs` WHERE `matriculeAgent` ='".$matricule_verif.'"AND `motdepasseAgent` = "'.$motdepasse_verif."'");
// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($req)==0)
{
echo "Aucun utilisateurs ayant le mot de passe saisi existe. Reéssayer";
}
// SI LE LOGIN ET MOT DE PASSE SONT EXACTES
else
{
$_SESSION['matriculeAgent'] = $row['matriculeAgent'];
$_SESSION['motdepasseAgent'] = $row['motdepasseAgent'];
// REDIRECTION VERS UNE PAGE PROTEGEE
header("Location:accueil.php");
// selection de lenregistrement saisie a la page login.php
}
}
else{
echo "veuillez saisir le motdpass";
}
这是我得到的错误:
注意:未定义的索引:第25行的C:\ Users \ admin \ Dropbox \ EasyPHP-DevServer-14.1VC9 \ data \ localweb \ esmcm \ dossier \ makeLogin.php中的matriculeAgent
注意:未定义的索引:第27行的C:\ Users \ admin \ Dropbox \ EasyPHP-DevServer-14.1VC9 \ data \ localweb \ esmcm \ dossier \ makeLogin.php中的motdepasseAgent
答案 0 :(得分:0)
看起来好像没有设置$ row ['matriculeAgent']。这可能是由多种原因引起的。我注意到你的代码中有几个问题,我试着在这里解释一下。
首先,如果你想要prepared statements,不要直接在stmt-&gt; prepare()函数调用中包含你的参数,请改用bind-param:
$stmt = $bdd->prepare("SELECT `matriculeAgent`, `motdepasseAgent` FROM `utilisateurs` WHERE `matriculeAgent` = ? AND `motdepasseAgent` = ?");
$stmt->bind_param("ss", $matricule_verif, $motdepasse_verif);
然后,另一个问题可能是你没有执行该声明,或者你没有在帖子中显示它。
$stmt->execute();
之后,您可以简单地获取结果,然后应该正确填充:
$result = $stmt->get_result();
执行()之后的另一种方式:因为你已经在使用预准备语句,所以你也可以在这里使用bind_result(),它将填充你想要的变量:
$varA = '';
$varB = '';
$stmt->bind_result($varA, $varB);
$stmt->fetch();