2011-08-19 55 views
1

我的腳本非常簡單。當有人試圖登錄時,PHP會根據MySQL數據庫檢查表單數據,設置會話的cookie並刷新頁面。現在,我已經明確指出cookie腳本會導致混亂,並完全停止工作。但是,我不知道爲什麼。我使用的代碼是這樣的:PHP cookie代碼導致混亂

<?php 
header('Content-type: text/javascript'); 
$erroron="false"; 
$id='false'; 

$con = mysql_connect("localhost","***","***"); 
if (!$con) 
    { 
    die('$("#connecterror").stop().hide().fadeIn(); '); 
    } 

mysql_select_db("***", $con); 

$result = mysql_query("SELECT * FROM users"); 

while($row = mysql_fetch_array($result)) 
    { 

    if($row['username']==$_POST["user"]&&$row['password']==$_POST["pass"]) 
{ 
if($row['confirmed']==1){ 
$id=$row['id']; 
} 
else{ 
echo '$("#erroractivate").stop(false,true).hide().fadeIn(200);'; 
} 
} 
else if($row['email']==$_POST["user"]&&$row['password']==$_POST["pass"]) 
{ 
if($row['confirmed']==1){ 
$id=$row['id']; 
} 
else{ 
echo '$("#erroractivate").stop(false,true).hide().fadeIn(200);'; 
} 
} 
else{ 
if($erroron=="false"){ 
$erroron="true"; 
echo '$("#error").stop(false,true).hide().fadeIn(200);'; 
} 
} 
    } 
if($id=='false'){ 
echo '$("#error").stop(false,true).hide().fadeIn(200);'; 
} 
else{ 
echo '$("#page").text("You have logged in, redirecting...");$("body").css("cursor","wait");setTimeout("location.reload(true);",2000);'; 
setcookie("sessionid", $id,0,'/','profile.campatet.com',false,true); 
} 

mysql_close($con); 

?> 

現在,這將不工作的一部分:

setcookie("sessionid", $id,0,'/','profile.campatet.com',false,true); 

如果我採取這一關,腳本成功刷新頁面,但因爲沒有cookie設置,你不能登錄。如果我堅持下去,它什麼都不做。

+0

你在混合Logic和Presentation。不要那樣做。 – dynamic

+1

當你使用'setcookie(「sessionid」,$ id)時會發生什麼;'? – casraf

+0

如果($騙局!) { 模( '$( 「#connecterror」)停止()隱藏()淡入();'); } ????? – tetris

回答

0

的問題是,你不能設置cookie數據之後發送給瀏覽器。如果你回顯文字,然後嘗試設置cookie,它將不起作用。

嘗試扭轉回聲和setcookie()函數,並確保之前沒有文本被髮送到瀏覽器。

+0

嗯。切換它不會改變任何東西......感謝您的答覆。 –

+0

嘗試添加'error_reporting(-1); ini_set('display_errors',1);'在腳本的頂部,看是否打印出任何錯誤消息。 – Mike