2011-06-14 117 views
0

登陆我用:PHP会话不从网页工作

<?php 
session_start(); 

if($_POST){ 
$csUSER='USERNAME'; 
$csPASS='PASSWORD'; 
$user=$_POST['user']; 
$pass=$_POST['pass']; 
if ($user==$csUSER) { 
    if ($pass==$csPASS){ 
     $_SESSION['cdb']="1"; 
     header("Location: /"); 
     exit; 
    } else { 
     $passerror='<span class="errormsg">Wrong Password.</span>'; 
    } // END IF PASSWORD 
} else { 
$usererror='<span class="errormsg">Wrong Username.</span>'; 
} // END IF USERNAME 
} // END IF $_POST 
?> 

为了让自己做的每一页(包括在所有页[返回页首])管理任务:

<?php 
session_start(); 

if(isset($_SESSION['cdb'])){ 
$loggedn="WORD"; 
} 
?> 

这使我:

<?php 
if ($loggedn=="WORD") { WHATEVER } 
?> 

,并确保在(包括在所有后端页)登录时,我只能访问到后端的网页:

<?php 
// backend login check 
if($loggedn!="WORD") { 
header("Location: /"); // if not logged in, go to homepage 
exit; 
} 
?> 

问题是,它在我的电脑上工作完美,但我有另一台电脑,我的妻子用于数据整理,它不保持登录在她的电脑上。我们都使用FF(Fedora)。我已经在每一页的代码行了,帮助!

+0

她的浏览器中是否禁用了所有cookies? – sjobe 2011-06-14 19:18:21

+0

由于它可以在一台机器上运行,但不能在另一台机器上运行,您是否确保在您妻子的机器上启用cookie? – 2011-06-14 19:19:17

+0

PHP会话默认使用cookie。你妻子的电脑上启用了cookies吗? – dunos 2011-06-14 19:19:38

回答

1

有几件事情要检查:

  1. 确保你开始用干净的石板。清除浏览器中的缓存和Cookie,以确保您没有打开旧会话。
  2. 确保会话数据存储在新机器上。会话数据通常存储在/ tmp
  3. 确保没有与会话相关的特定于客户端的代码。
+0

我不知道会话存储在/ tmp中。清除临时文件夹,它完美的工作..非常感谢。 – DaedBaet 2011-06-14 20:05:11

0

呼叫重定向到另一个页面后出口功能,否则下面的代码会被执行的,有什么可以导致异常行为。

if($loggedn != "WORD") 
{ 
    // redirect to login page 
    header("Location: login.php"); 
    exit; 
} 
// the following code will be executed if exit is not called 
... 
+0

谢谢你,马丁。我在标题后添加了退出。 – DaedBaet 2011-06-14 20:04:29