2011-11-24 31 views
-2

我有一个单独的php文件来处理我的网站上的登录/注销。登录工作正常,但是当我尝试登出时,我被告知在服务器上找不到该文件。处理程序文件在登录时工作,注销时找不到文件

此链接调用页面的注销:

<a href="/logansarchive/admin/do.login?action=out">Sign Out</a> 

以下是文件中的代码:

<?php 
    session_start(); 

    if (isset($action) && $action == "out") { 
     // Log out 
     if (ini_get("session.use_cookies")) { 
      $params = session_get_cookie_params(); 

      setcookie(session_name(), '', time() - 42000, 
       $params["path"], $params["domain"], 
       $params["secure"], $params["httponly"] 
      ); 
     } 
     session_destroy(); 
     header("Location: /logansarchive/admin/login.php?logged_out=1"); 
    } 
    else { 
     $username = $_REQUEST["txt_username"]; 
     $password = $_REQUEST["txt_password"]; 
     $action = $_GET["action"]; 

     $host = "127.0.0.1"; 
     $user = "root"; 
     $pass = "12157114"; 

     try { 
      $dbh = new PDO("mysql:host=$host;dbname=logansarchive", $user, $pass); 
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     } 
     catch(PDOException $e) { 
      echo $e->getMessage(); 
     } 

     // Log in 
     $hashed_pass = hash("sha512", $password); 

     $sql = "select count(*) as count, adminid, adminname, DATE_FORMAT(lastlogin, '%W, %M %e, %Y @ %h:%i %p') AS lastlogin from admin where adminname = :name and adminpass = :pass"; 
     $result = $dbh->prepare($sql); 

     $result->bindParam(":name", $username); 
     $result->bindParam(":pass", $hashed_pass); 

     $stmt = $result->execute(); 
     $row = $result->fetch(); 
     if ($row["count"] == 1) { 
      session_start(); 
      $_SESSION["adminid"] = $row["adminid"]; 
      $_SESSION["adminname"] = $row["adminname"]; 
      $_SESSION["lastlogin"] = $row["lastlogin"];  

      $dbh = null; 
      header("Location: /logansarchive/admin/index.php"); 
     } 
     else { 
      $dbh = null; 
      header("Location: /logansarchive/admin/login.php?login_attempt=1"); 
     } 
    }; 
?> 

这种行为的任何解释和(理想)的方式来解决它,将不胜感激。

回答

1

do.login似乎不是一个有效的php文件名
为什么不用login.php来代替?

+0

derp,thanks:D – Ortund

1

如果它现在正在工作,这是由于服务器配置错误(称为register_globals,对其执行搜索)。 $ action不应该设置在第三行,你只能在你的else语句中设置它。将以下行移至session_start()之下:

$action = $_GET['action']; 
相关问题