2016-09-30 7 views
-3

Ich arbeite an einem PHP-Login basierend auf Mysql-Tabelle. Es funktioniert alles gut in Chrome, aber in Firefox und Edge, wenn ich einen Benutzernamen und ein Passwort eintippe, werde ich nur auf die Login-Seite gebracht. (Mit richtigen oder falschen Anmeldeinformationen)Warum funktioniert mein PHP-Anmeldeskript in Chrome, aber nicht in FireFox oder Edge?

Hier mein PHP-Code ist ..

<?php session_start(); 
if(isset($_POST['login'])) { 

$uname = $_POST['uname']; 
$pass = $_POST['pass']; 
$sel_user = $con->prepare("SELECT id, username, pass, gid FROM employees WHERE gid!=4 AND username=?"); 
$sel_user->execute([$uname]); 
$check_user = $sel_user->fetch(); 
if(count($check_user)>0 && password_verify($pass, $check_user['pass'])) { 
    $_SESSION['username']=$check_user['username']; 

    header("Location: xadmin.php"); 
    exit; 
} 

else { 

    echo "<script>alert('Email or password is not correct')</script>"; 
}};?> 

Hier ist das HTML-Formular ist ..

<form action="login.php" method="post"> 
    <table width="100%" border="0"> 
     <tbody> 
      <tr> 
       <td bgcolor="#3B3B3B" height ="35" class="BodyTxtB" align="center">Administrator Login</td></tr> 
      <tr height="20"><td></td></tr> 
      <tr> 
       <td class="BodyTxtB" align="center">Username</td> 
      </tr> 
      <tr> 
       <td class="BodyTxtB" align="center"><input type="text" class="BodyTxtBC" name="uname" required="required"/></td> 
      </tr> 
      <tr height="20"><td></td></tr> 
      <tr> 
       <td class="BodyTxtB" align="center">Password</td> 
      </tr> 
      <tr> 
       <td class="BodyTxtB" align="center"><input type="password" class="BodyTxtBC" name="pass" required="required"/></td> 
      </tr> 
      <tr height="20"><td></td></tr> 
      <tr height="35"><td align="center"><input type="image" src="images/btn_login.jpg" name="login" value="Login"/></td></tr> 
      <tr height="20"><td></td></tr> 
     </tbody> 
    </table> 
    </form> 

Hier ist die Validierung von xadmin.php

<?php session_start(); 

if (!isset($_SESSION['username'])) 
{ 
header("Location: login.php?e=access_denied"); 
exit(); 
} 
?> 

Weiß jemand, was das Problem verursachen könnte?

UPDATE: Obwohl nicht relevant für die Erstausstellung oder die Antworten, habe ich diesen Beitrag aktualisiert die Ausgabe der von mysql Injektion und Passwort-Verschlüsselung

+5

Stopp Sortier Passwörter im Klartext! –

+0

Ich bin immer noch in Tests und nicht um Klartext-Passwort besorgt. Bitte bleiben Sie bei der Frage – craisondigital

+3

'session_start()' missing ';' dafür. Als Tippfehler geschlossen. –

Antwort

3

Firefox/Kante nicht durch die name von <input type="image" ... /> passieren zu beheben

Wenn Sie eine print_r($_POST) tun und senden Sie das Formular mit Firefox erhalten Sie:

Array 
(
    [login_x] => 0 
    [login_y] => 0 
) 

machen Sie dasselbe mit Chrome jedoch:

Array 
(
    [login_x] => 8 
    [login_y] => 8 
    [login] => Login 
) 

... und da haben Sie es.

Sie könnten durch Login als verstecktes Formularfeld übergeben:

<input type="image" src="images/btn_login.jpg" /> 
<input type="hidden" name="login" value="Login" /> 
+0

'" versteckt "? das sollte "submit" sein. –

+0

Nah '' ist ein 'submit' Button - es wird nur eine Grafik darauf angewendet. – CD001

Verwandte Themen