已解决:有一个愚蠢的错误导致了这个问题。在header.php中,我写了$ _SESSION [“header”](它甚至不存在)而不是$ _SESSION [“logged”]。感谢大家的帮助。
在输入正确的登录信息后,Login.php不想重定向。
页面只刷新并清除输入字段。
(会话也在/ tmp文件夹中创建)
有没有人有任何想法? :S
提前致谢! :)
的login.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>
cred.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>
答案 0 :(得分:1)
在login.php上再添加一个会话变量
session_start();
$_SESSION["logged"]=1;
$_SESSION["header"] = 1;
$_SESSION["user"]=$newUser;
header('Location: index.php');
希望现在能够奏效。
答案 1 :(得分: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");
}
答案 2 :(得分:0)
我看不到你在哪里包括cred.php? 在第一个代码行添加login.php:
include("cred.php");
答案 3 :(得分:0)
我认为用于检查您的用户名和密码的if语句实际上是否为真。而不是在那里进行重定向,为什么不通过使用print或echo语句来调试它。
if ($newUser==$user AND $newPass==$pass) {
session_start();
$_SESSION["logged"]=1;
$_SESSION["user"]=$newUser;
$message = "success";
}
如果print语句运行,那么就像其他人已经说过并包含(“cred.php”);在页面顶部,而不是在if语句中。