2013-03-25 1 views
1

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

Я использую только одну страницу PHP и фиктивные формы для отправки пользовательских действий, и вся обработка выполняется через определенные сущности/функциональные классы.

Когда страница открыта, я проверяю переменные, если они раньше не открывались, я представляю форму входа.

Когда я получаю почту от этой формы я проверяю пользователя и если пользователь хорошо я начать сеанс

if(isset($_POST['login'])) 
{ 
    if($_POST['login']=='login') 
    { 
     //valida user 
     $accoes=$du->login($_POST['username'],$_POST['password']); 
     if($accoes===false) 
     { 
      echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">"; 
      echo "alert('Erro no Login');"; 
      echo "</SCRIPT>"; 
      unset($accoes); 
     } 
     else 
     { 
      //utilizador valido 
      echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">"; 
      echo "alert('Utilizador válido');"; 
      echo "</SCRIPT>"; 
      session_start(); 
      $user="teste"; 
      $screen="logged"; 
      $_SESSION['user']=$user; 
     } 
    } 
} 

Хотя, когда эта страница обновляется с помощью действия пользователя я не могу видеть сессию id или переменные сеанса.

Я пропустил что-то вроде session_commit или другой инструкции?

Должно ли session_start() появляться перед попыткой перебрать переменные сеанса?

Может быть, что-то не хватает в файле PHP.ini?

Когда я перезагружать первое, что я делаю, это проверка на переменные сессии

if(session_id() != '') { 
    $user=$_SESSION['user']; 
} 

Я знаю, что я должен знать, как решить эту проблему, но сезам теперь мой опыт работы с PHP был бросить Flex/Вспышка так управление сеансами не было действительно необходимо.

Спасибо за помощь

+0

Вы вызвали session_start() сверху для каждой страницы? – 2013-03-25 16:36:59

+0

* Если session_start() также появляется перед попыткой перебрать переменные сеанса? * Да – Tchoupi

ответ

1

одна вещь, которую я могу с уверенностью указать на .. ваш session_start() должен быть в первой строке после открытия PHP tahg

<?php 
    session_start(); 

И это должно называться на каждой странице где $_SESSION будет называться .. иначе сеанс будет недоступен

+0

ссылка: http://www.php.net/manual/en/function.session-start.php – alwaysLearn

+0

Я использовал его только тогда, когда пользователь succesfuly вошли в систему, потому что в POO видение казалось более логичным! Но когда это случилось, я начинаю думать, что это может быть так! Но я должен был быть уверен! Благодаря! – davidmr

+0

Однако я хочу использовать только одну страницу и изменять ее содержимое в соответствии с обработкой, сделанной ниже. Тем не менее между вызовами мне нужно поддерживать контроль сеанса! Если я использую session_start() сверху, как мне передать идентификатор сеанса? Через сообщение? Это сделано автоматически? ЛОЛ! Так глупо! Это делается через клиентов IP и браузер! Сеанс может существовать даже до входа в систему! Все это сделано вайраблями, которые я вложил в это! Мне надоело это знать, но мне не хватает опыта! – davidmr

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