2014-02-03 1 views
0

Я что-то пропустил, я не могу назвать идентификатор пользователя и сохранить его в сеансе. План заключается в логине, чтобы сохранить идентификатор пользователя для будущих изменений. Сейчас я не могу хранить идентификатор пользователя в сеансе. Я получаю уведомление: Undefined индекс: идентификатор_пользователя в login.php на линии 14.вызывать userID при входе в систему и хранить его

<?php 

session_start(); 
if (!isset($_POST['submit'])){ 

} else { 
require_once("db_const.php"); 
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
# check connection 
if ($mysqli->connect_errno) { 
    echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>"; 
    exit(); 
} 
$userID = $_SESSION["userID"]; 
$username = $_POST['username']; 
$password = $_POST['password']; 

$sql = "SELECT * from userinfo WHERE username LIKE '{$username}' AND password LIKE '{$password}' LIMIT 1"; 
$result = $mysqli->query($sql); 
if (!$result->num_rows == 1) { 
    echo "<p>Invalid username/password combination</p>"; 
} else { 

    setcookie("username", time() +60*60*24*30*365); 
$_SESSION['userID'] = $userID; 
    echo "<p>Logged in successfully!, Please close the window</p>"; 
} 
} 
?>  
+0

без входа в систему, как вы собираетесь получить значение $ _SESSION [ «UserID»]? после входа в систему после получения результата, вы получите значение userID. очевидно, это даст неопределенный индекс. –

ответ

1

Вы никогда не обновлять $userID после установки его от самой сессии. Чтобы решить эту проблему, fetch результат и сохранить сгружен ID:

$result = $mysqli->query($sql); 
if (!$result->num_rows == 1) { 
    echo "<p>Invalid username/password combination</p>"; 
} else { 
    $row = $result->fetch_assoc(); 
    $_SESSION['userID'] = $row['userid']; //case sensitive 
    //etc. 
1

Ошибка на линии

$userID = $_SESSION["userID"]; 

Походит сессии userID не установлен. Перед назначением всегда проверяйте, существует ли переменная сеанса, используя конструкцию языка isset.

if(isset($_SESSION["userID"])) 
{ 
$userID = $_SESSION["userID"]; 
} 

ли это для других переменных сеанса тоже, и этот тест применяется даже для $_POST

Смежные вопросы