2016-11-27 4 views
0

Ich versuche, die Benutzer-ID eines angemeldeten Benutzers abzurufen und in der Sitzung zu speichern, sodass, wenn ein Benutzer etwas einreicht, ich seine Benutzer-ID zur Übermittlung an die hinzufügen kann Datenbank. Ich habe eine sehr grobe Login-Seite, bitte sei nett, denn ich bin sehr neu für alles! Ich habe viele verschiedene Kombinationen ausprobiert, aber nach den Antworten, die ich online gesehen habe, sollte das, was ich gerade habe, ziemlich nah sein. Wenn mir irgendjemand irgendwelche Hinweise geben kann, wäre das eine große Hilfe. Vielen Dank!Benutzer-ID kann nicht in Sitzung gespeichert werden

Die Login-Seite

<?php 

session_start(); 

//Connection and select database go in here 

// username and password sent from form 
$myusername=$_POST['Email']; 
$mypassword=$_POST['User_Password']; 

// To protect MySQL injection 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT User_ID, Email, User_Password FROM $tbl_name WHERE Email='$myusername' and User_Password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row counts table row 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 

// is_auth to make sure they can view other pages that need credentials. 
$_SESSION['is_auth'] = true; 
$_SESSION['User_ID'] = $result->User_ID; 

// Once the sessions variables have been set, redirect them to the landing page/home page. 
header('location: ../View/main.php'); 
exit; 
} 

else { 
$error = "Please enter an email and password to login."; 
} 
header("location:../View/mainUnauthenticated.php"); 

Die Seite, die, wenn der Benutzer überprüft authentifiziert wird. Ich nenne dies zu Beginn jeder entsprechenden Seite

<?php 

    session_start(); 
echo $_SESSION['User_ID']; 

// Test the session to see if is_auth flag was set (meaning they logged in successfully) 

// If test fails, send the user to homepage and prevent rest of page being shown. 

if (!isset($_SESSION["is_auth"])) { 
header("location: ../View/mainUnauthenticated.php"); 
exit; 
    } 
else if (isset($_REQUEST['logout']) && $_REQUEST['logout'] == "true") { 
// At any time we can logout by sending a "logout" value which will unset the "is_auth" flag. 
// We can also destroy the session if so desired. 
unset($_SESSION['is_auth']); 
session_destroy(); 
// After logout, send them back to homepage 
header("location: ../View/mainUnauthenticated.php"); 
exit; 
} 
?> 

Dies ist ein Ausschnitt aus einer der Seiten ist, wo Ich mag würde die Lage sein, den Benutzer-ID zu greifen, die ich (dachte, ich hätte!) Gespeichert. Im Moment versuche ich nur, dass es im Textfeld angezeigt wird, um zu zeigen, dass es funktioniert.

<?php include('../Controller/is_auth.php') 

?> 


<p> 
<input type="text" name="User_ID" id="User_ID" value="<?php echo $_SESSION['User_ID'];?>"/> 
</p> 
+1

Verwenden Sie nicht 'mysql' verwenden Sie' mysqli' oder 'PDO' statt, Sie sind auch weit offen für' mysql injection'. – Nytrix

+0

Ich denke, ich habe es jetzt zur Arbeit. Das Problem war die Position meines Sitzungsbeginns, ich hatte es oben auf meiner Anmeldeseite platziert, aber nach der SQL-Abfrage verschoben und es funktioniert! Danke für die Hilfe und Kommentare Nytrix und Filip Macek. –

Antwort

0

Zunächst einmal, ich empfehle Ihnen PDO anstelle der alten mysql_query zu verwenden. Ich bin sicherer zu SQL injection.

Zum Fehler: Es wird eine gute Idee sein, einige einfache "Debug" -Funktion zu erstellen, um Ausgaben von Variablen zu sehen. Zum Beispiel verwenden Sie in Ihrem Login-Skript var $ result-> User_ID. Sind Sie sicher, dass die Variable existiert? Hier ist meine einfache Debug-Funktion können Sie:

function debug ($var, $name = "Debug") { 
    echo "<h2>$name</h2><pre>"; 
    var_dump($var); 
    echo "</pre>"; 
} 

Mit dieser Funktion können Sie einfach überprüfen können, ob Sie bekommen, was Sie mit Ausnahme und ein Problem gefunden. Rufen Sie einfach

debug($result, "Database output");//or without 2nd parameter 

PS: Erstellen Sie einige functions.php, die Sie auf jeden Code, einschließlich wird. Wenn Sie eine Funktion ändern, müssen Sie nicht jede Datei neu schreiben.

Verwandte Themen