2016-08-16 1 views
0

Ich richte ein Login/Logout ein und versuche, die ID des Benutzers an andere Seiten der Website zu senden, damit ich die Datenbank nach Belieben bearbeiten kann.setze Sitzungsvariable auf user_id, wenn sich der Benutzer anmeldet

Ich verwende eine Abfrage E-Mail/Passwort übereinstimmen und in Benutzer anmelden (nb dies nicht der vollständige Code ist und nicht das Problem, ich bin passende E-Mails und Passwörter)

$find= mysqli_query("SELECT * FROM users WHERE email='$ema' and password="$pw"); 

Dann hole ich ein Array und starte eine Sitzung, die ich dann auf den Seiten weiter unten auf der Webseite überprüfe.

if(mysql_num_rows($find) == 1){ 
    $row = mysql_fetch_array($result, MYSQL_BOTH); 
    $id= $row ['id']; 
    session_start(); 
    $_SESSION['Login']= $id; 
// Redirect - I use JS to send users to next page 
} 
else { 
    echo '<script type="text/javascript">'; 
    echo 'alert("Invalid Username or Password");'; 
    echo 'history.back();'; 
    echo '</script>'; 
} 
mysql_close($link); 

Auf anderen Seiten habe ich Code, der für die Sitzung überprüft und leitet Benutzer, wenn sie nicht angemeldet sind Hier ist der Code:.

<?php 
session_start(); 
if(!isset($_SESSION['Register'])){ 
    if(!isset($_SESSION['Login'])){ 
    header("location:../notLoggedIn.php"); 
} 
} 
$get_id = $_SESSION['Register']; 
$get_id = $_SESSION['Login']; 
?> 

Dann, wenn ich überprüfen, was in der ID-Variable ist übergeben von der Anmeldeseite mit diesem:

$profile = mysql_query("SELECT * FROM profiles WHERE id= $id"); 
    var_export($id); 

Ich bekomme einen Nullwert. Was läuft falsch?

+0

Put session_start sein wird(); auf Kopfzeile. – Noman

+0

Überprüfen Sie zuerst, ob Sie von Ihrer Datenbank aufgezeichnet werden. Sehen Sie, es kommt in mysql_num_rows ($ find) '. –

+0

@MahaDev Ich bekomme die Aufzeichnung. Ich überprüfte und die ganze Anordnung ist da. – tdrsam

Antwort

0

Sie müssen überprüfen, ob Sitzung dann session_start();

if (session_status() == PHP_SESSION_NONE) {//php >5.4 
    session_start(); 
} 

und $_SESSION['Login'] nicht gestartet wird, verwenden anstelle von $id

$profile = mysql_query("SELECT * FROM profiles WHERE id=".$_SESSION['Login']); 
0

Mehrere Fehler, die ich gesehen habe.

1) Zuerst Ihre Abfrage revidieren:

$find= mysqli_query("SELECT * FROM users WHERE email='$ema' and password='$pw'); 

2) Zum zweiten Sitzung auf der Spitze der Datei starten.

3) mysqli_close($link); statt mysql_close($link);

4) In der letzten Prüfung, ob die Sitzung richtig eingestellt ist.

if(isset($_SESSION['Login'])) { 
$get_id = $_SESSION['Login']; 
$profile = mysql_query("SELECT * FROM profiles WHERE id= $id"); 
var_export($id); 
} 
0

Hallo Bitte beachten Sie diese Punkte

1) Starten Sie session_start auf der Oberseite der Seite (vor echo oder white space).

2) Ich sehe Ihre $_SESSION['Register'] nicht. Haben Sie es

3 gesetzt) ​​Sie passieren session variable nicht einfach variable so diese verwenden

$profile = mysql_query("SELECT * FROM profiles WHERE id = $_SESSION['Login']"); 
    var_export($_SESSION['Login']); 

Als $idnull hier immer

Verwandte Themen