2013-06-02 1 views
1

Окай, поэтому я попытался опубликовать это несколько раньше, хотя мой вопрос немного изменился. Я идентифицировал проблему между моим login.php (где я присваиваю значение $ _SESSION) и моей странице members.php (где я пытаюсь снова забрать переменную $ _SESSION, но не могу ее восстановить). Способ, которым я идентифицировал эту проблему, заключался в том, что я запускал дамп var в сеансе в файле members.php, который дал мне 0. Я также сделал это после того, как присвоил значение в login.php, и я получил значение asigned как результат. Если вы поможете мне, я буду очень благодарен!PHP-файл не может восстановить переменную сеанса через страницы

Это моя login.php страница:

<?php 
session_start(); 
require('connect.php'); 

$username = $_POST['username']; 
$password = $_POST['password']; 

if (isset($username) && isset($password)) 
{ 
    $query = mysql_query("SELECT * FROM login WHERE username='$username' AND password='$password'"); 
    $result = mysql_num_rows($query); 

    if($result > 0) 
    { 
     echo "You have been logged in. <a href='members.php'>Go to the members page</a>"; 
     $username = $_SESSION['login']; 
    } 
    else 
    { 
     echo "Password is incorrect. Try again."; 
    } 
} 
else 
{ 
    echo "You have to enter your username and password. Try again"; 
} 
?> 

Это моя members.php страница:

<?php 
session_start(); 

if (isset($_SESSION['login'])) 
{ 
    echo "Welcome " . $login . " | <a href='logout.php'>Logout</a>"; 
} 
else 
{ 
    header('Location: index.php'); 
} 

?> 
+3

- generic комментарий о 'mysql_ *' и 'sql injectionions'-- –

+0

Нет, но серьезно, я ничего не вижу под' if ($ result> 0) 'для изменения' $ _SESSION ['login' ] '. –

+0

Да, я знаю, просто хочу разобраться в основах, прежде чем добавить расшифровку и предотвращение SQL ... hmmm, так что $ _SESSION ['login'] не присваивается или? –

ответ

0

решаемые в чате:

  1. Оказывается var_dump(is_writable(session_save_path())); вернулся bool(false).

  2. session_save_path() был /var/php_sessions/.

  3. realpath(dirname(__FILE__)); был /hermes/bosoraweb124/b185/dom.gjertgjersundcom/public_html.

Я попытался переместить сессию пути сохранения - однако по какой-то причине не может быть записана папка в public_html, то же самое с чтения (не мог прочитать). В любом случае, это плохая идея иметь sessions в общей папке, чтобы все могли видеть в любом случае.

Я рекомендовал OP связаться со своим хост-провайдером, чтобы выполнить команду chmod 766 -R /var/php_sessions/.

Решено: сотрудники своего веб-хостинга применили разрешения, и теперь это работает нормально.

0

Сеанс «Войти» переменная не установлена, потому что вы никогда не установить его в вашем файл регистрации ...

Вам следует установить его с помощью $ _SESSION ['login'] = "blah";

Я предполагаю, что ваша проблема вы имели в виду, чтобы установить логин, а не имя пользователя, когда вы войти пользователь ... своп

if($result > 0) 
    { 
     echo "You have been logged in. <a href='members.php'>Go to the members page</a>"; 
     $username = $_SESSION['login']; 
    } 

с

if($result > 0) 
    { 
     echo "You have been logged in. <a href='members.php'>Go to the members page</a>"; 
     $_SESSION['login'] = $username; 
    } 

Тогда вы должны быть в состоянии получите доступ к вашей переменной сеанса входа в систему с вашей страницы участника.

Также на вашей странице участника я не вижу, чтобы вы задали переменную $ login. Поэтому я предполагаю, что это будет пустое пространство, и вы хотели бы повторить свою регистрационную переменную сессии с $ _SESSION ['login'].

+0

Я попытался изменить их вокруг много Девон, он сделал не решить мою проблему, я боюсь, что это больше. –