2013-03-25 111 views
1

我正在用PHP开发一个应用程序,我需要使用会话。 我用三层体系结构开发了我的应用程序。刷新后PHP会话无法检测

我只使用一个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/Flash的那么会话管理并不是真的有必要。

感谢您的帮助

+0

没有你叫在顶部为每个页面的session_start()? – 2013-03-25 16:36:59

+0

*应该session_start()也出现在试图chech会话变量之前?*是 – Tchoupi 2013-03-25 16:38:40

回答

1

一两件事,我一定能够指出你的..在session_start()应该是第一线打开PHP tahg

<?php 
    session_start(); 

后,它应该在每一页上被称为其中$_SESSION被称为.. 否则会议将无法正常访问

+0

链接:http://www.php.net/manual/en/function.session-start.php – alwaysLearn 2013-03-25 16:41:58

+0

我只有当用户有成功登录,因为在POO愿景中它似乎更加逻辑!但是当它失败时,我开始认为它可能是它!但我需要确定!谢谢! – davidmr 2013-03-25 18:21:11

+0

但是,我只想使用一个页面,并根据下图所做的处理更改其内容!即使如此,在我需要维护会话控制的呼叫之间!如果我在顶部使用session_start(),我应该如何传递会话ID? Via Post?它自动完成?大声笑!如此愚蠢!它通过客户IP和浏览器完成!该会话甚至可以在登录之前存在!这一切都是由我放入它的可供选择的东西完成的!我厌倦了解它,但我缺乏经验! – davidmr 2013-03-25 18:24:46