[英]session_start() error always redirect to login.php
登錄(login.php)頁面工作正常,但它重定向到index.php
頁面
login.php
<?php
ob_start();
session_start(); ?>
<html>
<head>
<meta charset="utf-8">
<form method="post" action="login.php" >
<div class="form-group" >
<input type="text" class="form-control" name="user_name" >
</div>
<div class="form-group">
<input type="password" class="form-control" name="user_pass" >
</div>
<input type="submit" name="login" value="Login" >
</form>
</body>
</html>
<?php
include '../includes/connection.php'; /* connection query */
if (isset($_POST['login'])) {
$username = $_POST['user_name'];
$userpass = $_POST['user_pass'];
$admin_query = "select * from admin_login where user_name = '$username' AND user_pass = '$userpass'";
$run = mysql_query($admin_query);
$rows = mysql_num_rows($run);
if ($rows == 1) {
$_SESSION['login_user']=$username;
header("location: index.php");
} else {
echo "<script>alert('User name of password is incorrect')</script>";
}
}
?>
在索引頁面(index.php)中,會話有錯誤,並且始終重定向到login.php
index.php
<?php
session_start();
if(!isset($_SESSION['login_user'])){
header('Location: login.php');
}
else
{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div class="row cms-admin-panel">
<div class="col-md-12 "><h5> Welcome: <?php echo $_SESSION['login_user'] ?> </h5> <a href="logout.php">logout</a>
<h4 align="center">CMS Admin Panel</h4>
</div>
</div>
</body>
</html>
<?php } ?>
注銷頁面工作正常,它重定向到login.php
頁面。
logout.php
<?php
session_start();
session_destroy();
header("location: login.php");
?>
移動session_start();
在<form>
之前。
session_start()函數必須是文檔中的第一件事。 在任何HTML標記之前。
長答案:
由於默認情況下會話是cookie的句柄,
要使用基於cookie的會話,必須在將任何內容輸出到瀏覽器之前調用session_start()。
首先,您的session_start()應該位於頁面的頂部。 其次,如果您遇到某種情況,即頁面中有多個session_start(),請始終檢查會話是否已經啟動,
if(session_status() == PHP_SESSION_NONE) {
session_start();
}
第三個原因,如果標頭已經發送或某種會話緩存限制器錯誤,則可以通過在頁面頂部開始的輸出緩沖區將其修復為
ob_start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.