2016-08-08 16 views
0

Wenn ich mich anmelde ich benutze die mysql.user aber ich kann mich nicht anmelden, wenn der Benutzer ein Passwort hat. Wenn ich mich mit einem Benutzer mit Passwort angemeldet habe, kann die Seite nicht beim anderen php angemeldet sein.Wie bekomme ich den Wert von mysql.user Passwort

Der Benutzer, der bei der Anmeldung eingegeben wurde, wird für die Verbindung für die Datenbank verwendet.

<?php session_start(); ?> 


<!DOCTYPE HTML> 
<html> 
<head> 
<title>Log in</title> 
<meta charset="UTF-8" /> 
<link rel="stylesheet" type="text/css" href="css/reset.css"> 
<link rel="stylesheet" type="text/css" href="css/structure.css"> 

<?php include('connection.php'); ?> 

</head> 

<body> 
<form class="box login" method="post"> 
    <fieldset class="boxBody"> 
     <label>Username</label> 
     <input type="text" tabindex="1" placeholder="Username" required name="username" id="username"> 
     <label><label class="rLink" tabindex="5">Optional</label>Password</label> 
     <input type="password" tabindex="2" placeholder="Password" name="password" id="password" > 
    </fieldset> 
    <footer> 
     <input type="submit" class="btnLogin" value="Login" tabindex="4" name="sent"> 
    </footer> 
</form> 

<?php 

    if (isset($_POST['sent'])) { 
    $servername = "localhost"; 
    $username = ($_POST['username']); 
    $password = ($_POST['password']); 
    $message=""; 

    // Create connection 
    $result = $conn->query("SELECT user FROM mysql.user where user='$username' and password='$password'"); 
    if ($result->num_rows > 0) {      
     $_SESSION["uname"] = "$username"; 
     $_SESSION["pass"] = "$password"; 
     echo '<script type="text/javascript">alert(<?php echo "Success!";?>)</script>'; 
     header("location: main.php"); 
    } else { 
     $message = "Successfuly entered! hi! $username"; 
     echo '<script type="text/javascript">alert(<?php echo "$message";?>)</script>'; 
    } 
}   

// Check connection 
?> 

</body> 
</html> 
+0

Sie können es einrichten, oder Sie können sich anmelden, können Sie nicht Hash-Wert von einem Hash nicht abrufen. Sie können 'SET PASSWORD FOR 'jeffrey' @ 'localhost' = PASSWORD ('Klartext Passwort') aufrufen; ' – Drew

+0

Ich nehme an, dass Sie" alarmieren "möchten, wenn Sie einen Benutzer gefunden haben oder nicht: ' if ($ result-> num_rows> 0) { $ _SESSION ["uname"] = "$ username"; $ _SESSION ["pass"] = "$ password"; echo ' alert ("")'; Kopfzeile ("location: main.php"); } else { $ message = "Erfolgreich eingegeben! Hi! $ Username"; echo ' ';} } ' Sie haben die Anführungszeichen für "alert" -Parameter vergessen. –

+0

@ BenoitNgô das Passwort auf meine Abfrage für Auswahl funktioniert nicht, – user5789297

Antwort

1

Sie besser für Datenbankfehler überprüfen würde, die hier passieren könnte

$conn->query("SELECT user FROM mysql.user where user='$username' and password='$password'"); 

Überprüfen Sie, ob die Abfrage zuerst ausgeführt wird. Es ist auch besser zu nutzen diese eine

"SELECT * FROM mysql.user WHERE user= ?" 

Nach Zeilenanzahl zu überprüfen. Sie können das aktuelle Passwort mit dem Salz des Benutzers hashen und dann prüfen, ob sie gleich sind.

Für mehr Sicherheit Einsatz vorbereitet statements.And überprüfen, ob $_POST['username'] und $_POST['password'] auch eingestellt werden (auch wenn Ihre Eingabefelder „erforderlich“)

Und Ihre Fehler für Echo können Sie einen Absatz mit Fehler-ID haben

<p id="error"></p> 

und echo diese eine

'<script> 
document.getElementById("error").innerHTML = "'.$error.'" 
</script>' 

Meine erste Antwort Entschuldigung für schlechtes Englisch.