2016-08-02 26 views
1

Ich habe diese Zeilen von Codes in meiner functions.php DateiWill Session-Variable in andere Seite bekommen, aber es wird nicht angezeigt. Was kann ich tun?

public function login(){ 
    $sql = "SELECT `ID`,`userName` FROM `userdata` WHERE `userName`=:userN AND `password`=:passd"; 
    $stmt = $this->pdo->prepare($sql); 
    $stmt -> bindValue(":userN",$this->userName); 
    $stmt ->bindValue(":passd",$this->password); 
    $stmt ->execute(); 
    $userData = $stmt ->fetch(); 
    $check = $stmt ->rowCount(); 
    if($check==1){ 
     session_start(); 
     $_SESSION['login'] = true; 
     $_SESSION['uid'] = $userData['ID']; 
     $_SESSION['uName'] = $userData['userName']; 
     $_SESSION['Name'] = $userData['Name']; 
     $_SESSION['login_msg'] = "Login Successful"; 
     return true; 
    }else{ 
     return false; 
    } 
} 
public function getSession(){ 
    return @$_SESSION['login']; 
} 

Und in meiner index.php habe ich den Namen zu bekommen, die von MySQL-Datenbank zu kommen braucht.

session_start(); 
include_once "functions.php"; 
$object = new functions(); 
$userName = $_SESSION['uName']; 
$Name  = $_SESSION['Name']; 
if(!$object->getSession()){ 
    header("Location: login.php"); 
    exit(); 
} 
echo "Welcome". $Name; 

Aber dies zeigt nicht index.php Seite. was ist das Problem?

+0

anstatt session_start() innerhalb der Funktion zu deklarieren, versuchen Sie, außerhalb der Funktion zu setzen. – MuthaFury

+0

Haben Sie die DB-Rückgabe überprüft, ist sie erfolgreich? Passwörter sollten gehashed werden. Warum verwenden Sie '@' gibt es eine Fehlermeldung, die Sie ignorieren, die hier nützlich sein könnte? – chris85

+0

DB-Rückgabe ist erfolgreich. Und ich habe @ verwendet, um eine Notiz der undefinierten Variablen $ _SESSION ['login'] zu verbergen; –

Antwort

0

Versuchen Sie, diese

session_start(); 
public function login(){ 
    $sql = "SELECT `ID`,`userName` FROM `userdata` WHERE `userName`=:userN AND `password`=:passd"; 
    $stmt = $this->pdo->prepare($sql); 
    $stmt -> bindValue(":userN",$this->userName); 
    $stmt ->bindValue(":passd",$this->password); 
    $stmt ->execute(); 
    $userData = $stmt ->fetch(); 
    $check = $stmt ->rowCount(); 
    if($check==1){ 
     $_SESSION['login'] = true; 
     $_SESSION['uid'] = $userData['ID']; 
     $_SESSION['uName'] = $userData['userName']; 
     $_SESSION['Name'] = $userData['Name']; 
     $_SESSION['login_msg'] = "Login Successful"; 
     return true; 
    }else{ 
     return false; 
    } 
} 

Sie haben nicht einmal eine Funktion verwenden, um die Sitzung zu bekommen. Sie können $ _SESSION ['login'] jederzeit oder überall verwenden. Stellen Sie jedoch sicher, dass Sie in allen Dateien, in denen Sie die Sitzung verwenden möchten, die Datei functions.php einfügen müssen.

+0

Ich habe die functions.php Datei aufgenommen. aber in der Datei index.php zeigt es nicht den Namen aus der Datenbank. jedes Problem mit $ userData = $ stmt -> fetch(); ? @spod –

+0

Es war ein Abfrageproblem. Ich habe es behoben, indem ich SELECT 'ID',' userName' zu ​​SELECT * FROM ..... ersetzt habe. –