0

好的,这是我的问题。我为几个页面创建了一个简单的登录系统。这一切都有效。我刚刚创建了另一个页面,其中包含一个将输入提交到 mysql 数据库的 php 表单。这一切都很好......在我网站上的其他页面上。
出于某种原因,当我提交此表单时,它一直重定向到我的登录页面,我不知道为什么。这是我要提交的表单/代码:

<form method="post" action="admin_home.php?page=search.php">
<p>Search by date range: </p>
From: <input type="text" id="from" name="from" />To: <input type="text" id="to" name="to" />
<BR>
<p>Search by:</p>
Name: <input type="text" id="name" name="name" />
Phone Number: <input type="text" id="phone" name="phone" />
<input name="export" type="submit" value="Search" />
</form>

该表单位于文件 search.php 中,搜索结果也显示在表单下方。这是我在 admin_home.php 页面上的登录代码:

<?php
session_start();
require("admin_logincheck.php");
if (!(isset($_SESSION['name']) && $_SESSION['name'] != '')) {

header ("Location: admin_index.php");

}
?>

....然后显示任何内容。

这是我的 admin_logincheck.php 页面:

<?php
session_start();
session_name("MemberLogin");


$hostname = "";
$username = "";
$dbname = "";
$password = "";

if($_GET['action'] == "login") {

mysql_connect($hostname, $username, $password) OR DIE ("Unable to connect to database! Please try again later.");
mysql_select_db($dbname);


$name = $_POST['user'];
$q_user = mysql_query("SELECT * FROM users WHERE username='$name'");

if(mysql_num_rows($q_user) == 1) {

$query = mysql_query("SELECT * FROM users WHERE username='$name'");
$data = mysql_fetch_array($query);
if($_POST['pass'] == $data['password']) {
$_SESSION['name'] = $name;
header("Location: admin_home.php"); // This is the page that you want to open if the user successfully logs in to your website.
exit;
}
            else {
                header("Location: admin_index.php?login=failed&cause=".urlencode('Wrong Password'));
                exit;
            }

} 
else {
    header("Location: admin_index.php?login=failed&cause=".urlencode('Invalid User'));
exit;
}
}

// if the session is not registered
//if(session_is_registered("name") == false) {
if ($_SESSION['name'] == false) {   
header("Location: admin_index.php");
}
?>
All

我的其他页面很好,但由于某种原因,一个表单/搜索页面不断重定向到我的登录页面。任何帮助是极大的赞赏。我希望这是有道理的,哈哈。

4

1 回答 1

0

替换这个:

if (!(isset($_SESSION['name']) && $_SESSION['name'] != '')) {
header ("Location: admin_index.php");
}

有了这个:

if (isset($_SESSION['name']) && !empty($_SESSION['name'])) {
header ("Location: admin_index.php");
}
于 2013-10-06T19:05:51.700 回答