2016-05-15 5 views
-5

ich auf einer Authentifizierungsform arbeite, und das ist der HTML-Code:

<input type="text" class="form-control" name="matriculeAgent" placeholder="Compte matriculaire"> 

<input type="password" class="form-control password" name="motdepasseAgent" placeholder="mot de passe"> 

Dies ist der PHP-Code, wo ich die matriculeAgent und motdepasseAgent mit den Informationen der Datenbank vergleichen:

$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"; 
} 

Das sind die Fehler, die ich bin immer:

Notice: Undefined index: matriculeAgent in C: \ Users \ admin \ Dropbox \ EasyPHP-DevServer-14.1VC9 \ data \ localweb \ esmcm \ dossier \ makeLogin.php on line 25

Hinweis: Undefinierter Index: motdepasseAgent in C: \ Benutzer \ admin \ Dropbox \ EasyPHP-DevServer -14.1VC9 \ data \ localweb \ esmcm \ dossier \ makeLogin.php on line 27

+4

Mögliche Duplikat http://stackoverflow.com/questions/26339949/post-undefined-index-php-error?s=5|2.4276 und viele Andere. –

+1

Mögliches Duplikat von [PHP: "Notice: Undefinierte Variable" und "Notice: Undefined Index"] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Kara

Antwort

0

es sieht aus wie $ row ['matriculeAgent'] ist nicht gesetzt. Dies könnte durch mehrere Ursachen verursacht werden. Ich habe einige Probleme in Ihrem Code festgestellt, die ich hier zu erklären versuche.

vor allem, wenn Sie Sie wollen prepared statements, nicht Ihre Parameter direkt im stmt- include> prepare() Funktionsaufruf, Verwendung bind-param statt:

$stmt = $bdd->prepare("SELECT `matriculeAgent`, `motdepasseAgent` FROM `utilisateurs` WHERE `matriculeAgent` = ? AND `motdepasseAgent` = ?"); 
$stmt->bind_param("ss", $matricule_verif, $motdepasse_verif); 

dann kann ein anderes Problem sein dass Sie die Anweisung nicht ausgeführt haben, oder Sie es nicht in der Post angezeigt haben.

$stmt->execute(); 

danach, können Sie einfach Ihre Ergebnisse holen, sollte es dann richtig gefüllt werden:

$result = $stmt->get_result(); 

eine andere Art und Weise nach execute(): wie Sie bereits vorbereitete Anweisungen verwenden, können Sie hier verwenden auch bind_result(), die gewünschten Variablen bevölkern:

$varA = ''; 
$varB = ''; 
$stmt->bind_result($varA, $varB); 
$stmt->fetch();