2016-08-02 9 views
1

Я добавил эти строки кодов в моем файле functions.phpХотите получить переменную сеанса на другой странице, но ее не показывать. Что я могу сделать?

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']; 
} 

И в моем файле index.php я хочу, чтобы получить имя, которое должно поступать из базы данных MySQL.

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; 

Но это не показывает страницу index.php. в чем проблема?

+0

вместо объявления функции session_start() внутри функции, попробуйте поставить вне функции. – MuthaFury

+0

Вы проверили возврат БД, успешно ли он? Пароли должны быть хэшированы. Почему вы используете '@', есть ли сообщение об ошибке, которое вы игнорируете, что может быть полезно здесь? – chris85

+0

DB возврат успешно. И я использовал @, чтобы скрыть уведомление о неопределенной переменной $ _SESSION ['login']; –

ответ

0

Попробуйте

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; 
    } 
} 

Вы не должны даже использовать функцию, чтобы получить сеанс. Вы можете использовать $ _SESSION ['login'] в любое время или в любом месте, где захотите. Но убедитесь, что вам нужно включить functions.php во все файлы, в которых вы хотите использовать сеанс.

+0

Я включил файл functions.php. но в файле index.php не отображается имя из базы данных. любая проблема с $ userData = $ stmt -> fetch(); ? @spod –

+0

Это проблема с запросом. Я исправил его, заменив SELECT 'ID',' userName' на SELECT * FROM ..... –