0

panel.phpファイル内のファイルのセッションを設定したいcheck.php$_SESSION['admin']= 1ファイルで管理セッションを定義してから評価しますが、パネルページが(ログインフォーム) panel.phpにリダイレクトされる理由がわかりません。index.php

以下のすべてのコードを持ってきます:

check.php:

<?php
include_once ("function.php");
$username = $_POST['tfuser'] ;
$password = $_POST['tfpass'] ;

if (isset($username) && isset($password)){
  $link = mysql_connect('localhost','root','') or die ('error in connecting to db');
  mysql_select_db('login',$link) or die ('error select db');

  $sql = "select * from administration 
  where username='$username' and password='$password'";

  $result = mysql_query($sql,$link);

  if (mysql_fetch_assoc($result)){
    //login to panel 
    redirect("panel.php");
    $_SESSION['admin']= 1 ;
  } else {
    //back to login page
    redirect("index.php?error");
  }
} else {
  //back to login page
  redirect("index.php");
}

?>

panel.php:

<?php
include_once ("function.php");
session_start();
if (!isset($_SESSION['admin'])==1){
  session_destroy();
  redirect("index.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>admin panel</title>
</head>

<body>
welcome to admin panel
</body>
</html>

このリダイレクトを解決するにはどうすればよいですか?

4

3 に答える 3

1

リダイレクト関数の呼び出しは、$ _SESSION['admin']を設定する前です。

于 2012-10-27T16:32:56.583 に答える
0

$resultに何かが保存されているかどうかを確認してみてください。

于 2012-10-27T16:25:26.823 に答える
0

新しいコードを書くときは、mysql_ *関数を避ける必要があります。ここに、修正されてPDOに移植されたコードがあります。

<?php
session_start();
include_once ("function.php");

if($_SERVER['REQUEST_METHOD']=='POST'){
    if (isset($_POST['tfpass']) && isset($_POST['tfuser'])){
        // PDO CONNECT
        try {
            $db = new PDO("mysql:host=localhost;dbname=login", 'root', 'pass');
            $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        }catch (Exception $e){
            die('mySQL server error: '.$e->getMessage());
        }

        $sql = "SELECT 1
                FROM administration
                WHERE username=:user AND password=:pass";

        //Prepare the above query
        $stmt = $db->prepare($sql);
        //bind the placeholders to the values
        $stmt->bindParam(':user', $_POST['tfuser']);
        $stmt->bindParam(':pass', $_POST['tfpass']);
        //Execute
        $stmt->execute();
        //Fetch Result
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

        if (!empty($result)){
            //login to panel
            $_SESSION['admin']= 1 ;
            redirect("panel.php");
        } else {
            //back to login page
            redirect("index.php?error");
        }
    } else {
        //back to login page
        redirect("index.php");
    }
}else{
    //back to login page, script not accessed via POST
    redirect("index.php");
}
?>
于 2012-10-27T16:49:46.157 に答える