2016-04-06 14 views
0

Ich verwende eine Sitzungsvariable, um zu überprüfen, ob der Benutzer angemeldet ist. Aber das erste Mal, wenn Sie das Anmeldeformular die Sitzungsvariable ist irgendwie nicht festgelegt, aber ONLY das erste Mal.Sitzungsvariable nicht beim ersten Versuch festgelegt

Wenn ich das Anmeldeformular zweimal abschicke, funktioniert es.

Oder lassen Sie uns sagen, ich habe das Formular zweimal eingereicht, um sich einzuloggen. Dann abmelden. Jetzt brauche ich nur ein einziges Mal das Formular abzuschicken eingeloggt

Hier ist der Code im ist mit der Benutzerkennung anmelden.

<?php 
 
session_start(); 
 
define('DB_NAME', 'madsanker_dk_db'); 
 
define('DB_USER', 'madsanker_dk'); 
 
define('DB_PASSWORD', ''); 
 
define('DB_HOST', 'mysql43.unoeuro.com'); 
 

 
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD); 
 

 
if (!$link) { 
 
die('Could not connect: ' .mysqli_error()); 
 
} 
 

 
$db_selected = mysqli_select_db($link, DB_NAME); 
 

 
if (!$db_selected) { 
 
die('Could not connect: ' .mysqli_connect_error()); 
 
} 
 

 
$username = $_POST['username']; 
 
$password = $_POST['password']; 
 
$username = mysqli_real_escape_string($link,$username); 
 
$password = mysqli_real_escape_string($link,$password); 
 
$password = md5($password); 
 
$sql = "SELECT * FROM mainLogin WHERE username = '$username'"; 
 

 
$result = mysqli_query($link, $sql); 
 

 
$count=mysqli_num_rows($result); 
 
    if($count==1){ 
 
    $row = mysqli_fetch_assoc($result); 
 
    if ($password == $row['password']){ 
 
SETTING THE VARIABLE HERE --> $_SESSION['login'] = $username; 
 
     echo "<script> window.location.assign('http://www.madsanker.dk'); </script>"; 
 
     return true; 
 
    } 
 
    else { 
 
     echo "<script> window.location.assign('http://www.madsanker.dk/loginpage'); </script>"; 
 
     return false; 
 
    } 
 
}else{ 
 
    echo "<script> window.location.assign('http://www.madsanker.dk/loginpage'); </script>"; 
 
    return false; 
 
} 
 
mysqli_close($link); 
 
?>

Ich bin sicher, dass die Variable sein wird setze das erste Mal, denn wenn ich die Variable echo und tun exit(); direkt nachdem es eingestellt wurde es richtig angezeigt.

Die Seite, die ich wie folgt aussieht bin Umleiten:

<?php 
 
session_start(); 
 
$_SESSION['activePage'] = "home"; 
 
?> 
 
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>Madsanker</title> 
 
     <link rel="stylesheet" href="main.css" name="pageStyle" type="text/css"> 
 
     <?php include "nav-bar.php"; ?> 
 
    </head> 
 
    <body> 
 
     <h2>Welcome to Madsanker.dk</h2> 
 
     <?php include "chatIframe.php" ?> 
 
    </body> 
 
</html>

Auch wenn ich var_dump($_SESSION['login']); exit(); es sagt, es zeigt am oberen Rand des Dokuments setzen NULL das erste und das zweite Mal, der Benutzername richtig.

Ich habe versucht, dies für etwa eine Stunde zu beheben, und ich kann wirklich sehen, warum das nicht funktioniert.

+0

'md5' ist keine sichere Möglichkeit, Ihre Passwörter zu hashen. Überlege, ob du zu [password_hash] wechseln willst (http://stackoverflow.com/questions/14992367/using-php-5-5s-password-hash-and-verify-function-am-i-doing-it-right) – Machavity

+3

versuche es Verwenden Sie php 'header' Funktion, um statt js' window.location.assign' umzuleiten, wenn der Benutzer eingeloggt ist und das Ergebnis sehen –

Antwort

0

Bitte überprüfen Sie, ob Sie das erste Mal auf Ihre Website zugreifen, ohne www., weil das zweite Mal, dass Sie auf www.madsanker.dk umleiten, so sind die zwei verschiedenen Domänen.

Hoffe, dass hilft: D

+0

Ja, das ist es. Vielen Dank. Wird dies als richtig markieren, sobald es mich lässt. –

Verwandte Themen