1

已解决:有一个愚蠢的错误导致了这个问题。在 header.php 中,我写了 $_SESSION["header"](它甚至不存在)而不是 $_SESSION["logged"]。感谢大家的帮助。

在我输入正确的登录信息后,Login.php 不想重定向。

该页面只是刷新并清除输入字段。

(也在 /tmp 文件夹中创建会话)

有没有人有任何想法?:S

提前致谢!:)

登录.php:

<?php

$message = NULL;

if (isset($_POST["enter"])) {

    include 'cred.php';
    $newUser = $_POST["user"];
    $newPass = md5($_POST["pass"]);

  if ($newUser==$user AND $newPass==$pass) {

    session_start();
    $_SESSION["logged"]=1;
    $_SESSION["user"]=$newUser;
    header('Location: index.php');
    exit;

  } else {

    $message = 'failure';

  }

}



?>
<head>
<style type="text/css">

body {

    margin-top:120px;

}

</style>
</head>
<body>
<center>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
Uporabnik:<br /> <input type="text" name="user" /><br /><br />
Geslo:<br /> <input type="password" name="pass" /><br /><br />
<input type="submit" value="submit" name="enter"/><br /><br />
<?php if($message!=NULL) {echo $message;} ?>
</form>
</center>
</body>

信用.php:

<?php

$user = 'janeznovak';
$pass= md5('greek123');

?>

编辑:添加了 header.php 文件,它是每个(index.php,second.php,third.php)页面的一部分。也许问题出在这里:

<?php

session_start();

if(!isset($_SESSION["header"])OR $_SESSION["header"]!=1){

    header('Location: login.php');
    exit;


} else {

    $nuser = $_SESSION["user"];
}


?>
<head>
</head>
<body>
<div>
<a href="index.php">Prva</a> | 
<a href="second.php">Druga</a> | 
<a href="third.php">Tretja</a> | 
<a href="logout.php">Logout</a> | 
Prijavljeni ste kot <?php echo $nuser; ?>
</div> 
4

4 回答 4

1

在 login.php 上再添加一个会话变量

 session_start();
$_SESSION["logged"]=1;
$_SESSION["header"] = 1;
$_SESSION["user"]=$newUser;
header('Location: index.php');

希望现在它会起作用。

于 2012-04-24T12:57:18.817 回答
1

您是否已经尝试使用带有 action="" 而不是 action="" 的表单

还要给输入类型一个 ID 并添加 session_start(); 打开php后:

编辑:我也不明白为什么你在表单页面中使用,而你包括已经包含在其中的 header.php。

我也看不到您设置会话 $_SESSION['header'] 的任何地方?

也改变这个:

if(!isset($_SESSION["header"])OR $_SESSION["header"]!=1){

到:

if (!isset ($_SESSION['header'])) {

    header("Location: login.php");

} elseif ($_SESSION['header'] != 1) {

    header("Location: login.php");

}
于 2012-04-24T12:58:29.347 回答
0

我没有看到你在哪里包含 cred.php?在第一行代码添加 login.php:

include("cred.php");
于 2012-04-24T12:44:51.683 回答
0

我不认为检查您的用户名和密码的 if 语句实际上评估为真。与其在那里进行重定向,不如使用 print 或 echo 语句对其进行调试。

if ($newUser==$user AND $newPass==$pass) {
    session_start();
    $_SESSION["logged"]=1;
    $_SESSION["user"]=$newUser;
    $message = "success";
  }

如果打印语句运行,则按照其他人已经说过的方式执行并 include("cred.php"); 在页面顶部,而不是在 if 语句内。

于 2012-04-24T12:49:18.937 回答