2013-03-25 24 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