1

我有一个需要用户名和密码的网站。正确输入后,将创建用户名会话变量。但是,当我进入另一个页面并检查是否设置了变量时,我得到了错误。

这是我设置变量的代码。

$用户名 = $_POST["用户名"]; $password = $_POST["密码"];

if ($username == "right username" || $password == "rigthpassword"){

    session_start();

    $_SESSION["username"] = "aadsj2als378909382lkklja";
    $_SESSION["password"] = "ajklsd89798798jlk09779023";

}

然后,我有一个 php 脚本来检查用户是否已登录。如果用户已登录,那么它会转到一个页面,如果没有,它会转到另一个页面。但是,如果用户未登录但用户已登录,它会转到应该转到的页面。

<?php session_start();

    if(!isset($_SESSION["username"])){

        header('Location:http://website.com/page1.php');

    } else {

        header('Location:http://website.com/page2.php');

    }

?>

因此,在我登录后,我点击了运行此脚本的链接。不是把我带到第 2 页,而是把我带到第 1 页。它不应该这样做。

有任何想法吗?

4

2 回答 2

0

好吧,这可能有点明显,但是有了这个......

if ($username == "right username" || $password == "rigthpassword"){

    session_start();

    $_SESSION["username"] = "aadsj2als378909382lkklja";
    $_SESSION["password"] = "ajklsd89798798jlk09779023";

}

您如何检索这些值?我假设您正在使用 post 方法。这意味着它应该更符合...的性质

    if ($_POST['username'] == "right username" || $_POST['password'] == "rigthpassword"){
session_start();

        $_SESSION["username"] = "aadsj2als378909382lkklja";
        $_SESSION["password"] = "ajklsd89798798jlk09779023";
    }

我的猜测是您必须不正确地发送变量。您可以发布登录表单的代码吗?

登录.html

<form method="POST" action="http://mysite.com/login.php">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>

登录.php

<?php
session_start();
if ($_POST['username'] == "password" && $_POST['password'] == "password") {
$_SESSION['username'] == "aadsj2als378909382lkklja";
$_SESSION['password'] == "ajklsd89798798jlk09779023";
}
?>

其他页面.php

<?php
session_start();
if (!isset($_SESSION['username'])){
header("location: http://website.com/page1.php");
} else {
header("location: http://website.com/page1.php");
}
?>
于 2012-04-18T05:03:03.793 回答
0
  1. session_start(); 函数使用页面顶部(php一个标签后没有换行符)

2 if ($username == "rightusername" && $password == "rigthpassword"){

$_SESSION["username"] = "aadsj2als378909382lkklja";
$_SESSION["password"] = "ajklsd89798798jlk09779023";

}

像这样更改代码,测试 $username,$password 内容..

于 2012-04-18T04:12:59.277 回答