2013-03-25 63 views
1

我已经阅读了大量关于此问题的文章,无论是在这里还是在其他地方,都没有找到可以帮助我的答案。既然主题看起来比较宽泛,我认为最好的方法就是问。

我目前通过jQuery文件中的$ .post脚本将表单中的登录数据发送到php脚本。那里没有问题。我有一个类通过一系列函数来验证和保护字符串,所以没有问题。我一路设置会话,我可以打印出来,并通过添加函数(数据)到我的$ .post。

我已经将session_start()添加到php脚本和index.php中。我使用Chromium,可以看到已经设置了会话,但是当我创建print_r($ _ SESSION)时;它是空的。显然,这也导致我的if(isset($ _ SESSION ['uid']))也不起作用。

JS:

$('#login').submit(function(e){ 
    e.preventDefault(); 
    values = {}; 
    var url = '../admin/php/signIn.php'; 
    console.log('Clicked on submit.'); 
    $.each($(this).serializeArray(), function(i, field){ 
     values[field.name] = field.value; 
    }); 
    $.post(url, {username: values.username, password: values.password}) 
    .done(function(data){ location.reload(); /*alert(data);*/ }) 
    .fail(function(){ alert('Fail.'); }); 
}); 

PHP:

private function login($uid, $uname){ 
    $_SESSION['uid'] = $uid; 
    echo $_SESSION['username'] = $uname; 
    session_start(); 
} 

我加在会话中的一个回音,只是为了能够看到它通过jQuery的。 与“私人函数[...]”或其他地方的问题? (正如我之前所说的那样上课。)

我希望这对某人有意义,因为我在这里输了。

回答

5

您必须致电session_start()之前您开始分配变量会话。

+0

我觉得自己很愚蠢吗?之前我已经做了很多工作,但我认为这是其中的一个晚上。谢谢,它工作。 – 2013-03-25 22:45:37

+0

@RichardAtterfalk当发生这种情况时,现在是睡午觉的好时机lol – Tchoupi 2013-03-25 22:47:47

+1

真的!毕竟,已经过了午夜。但是现在登录脚本完成了,我可以继续添加样式并添加CRUD。但那是明天。再次感谢您的帮助。 :) – 2013-03-25 23:24:27