簡體   English   中英

PHP 錯誤無法發送會話緩存限制器 - 標頭已發送

[英]PHP Error Cannot send session cache limiter - headers already sent

您好,我有三個 PHP 代碼,其中一個頁面是index.php ,我在其中掃描用戶的用戶名和密碼,然后將其發送到另一個文件userlogin_process.php ,在那里我首先啟動會話,然后匹配與數據庫掃描的值,如果它們匹配,我將它們存儲到會話變量中,但它在該頁面上向我顯示 2 個警告無法發送會話緩存限制器 - 標題已發送,我擁有的最后一頁是user_session.php ,我在其中定位用戶到網站的主頁。

索引.php

session_start();
<form method="post" action="userlogin_process.php">
<div class="p">User Login</div>  
<table style="margin-top:5%;margin-left:12%;">
<tr><td> <label style="font-size:16px"> UserName :</label></td></tr>
<tr><td><input class="input" type="text" name="username" placeholder="FirstName"/></td></tr>
<tr><td><label style="font-size:16px">Password :</label></td></tr>
<tr><td><input class="input" type="password" name="userpass" placeholder="Mobile No"/></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td align="center"><input class="button" type="submit" name="usersubmit" value="Login"/></td></tr>
</table>
</form>

user_loginprocess.php

<?php 
session_start();
include("db.php");
$uname = $_POST['username'];
$upass = $_POST['userpass'];
echo $uname;
echo $upass;
$sql = mysql_query("select id,fname,mobile from user where fname='$uname'") or die(mysql_error());
$count = mysql_num_rows($sql);
if ($count > 0){
while($row = mysql_fetch_array($sql)){
$id = $row['id'];
$fname = $row['fname'];
$mobile = $row['mobile'];
}
}
if( $uname == $fname && $upass == $mobile ){
$_SESSION['uid'] = $id; 
$_SESSION['username'] = $fname;
$_SESSION['usermobile'] = $mobile;
$_SESSION['login'] = "yes";
header('location:user_session.php');
}
else{       
header('location:index.php?msg=incorrect');
} 
?> 

用戶會話.php

<?php 
 session_start();
if( isset($_SESSION['login']) == "yes"){
header('location:user_detail.php?pageno=1');
} 
else{   
header('location:index.php?msg=login');
}
 ?>

我能看到的第一件事是您多次使用session_start() 正如您在他們的文檔中看到的那樣,它不會造成任何傷害,但可能會引發錯誤或警告......所以最好堅持只使用一次。

二,請使用mysqli_*文檔,因為my_sql已被棄用。 PDO

這部分看起來不對:

session_start();
<form method="post" action="userlogin_process.php">

它應該是:

<?php session_start(); ?>
<form method="post" action="userlogin_process.php">

但無論哪種方式都是錯誤的,因為會話應該盯着頁面頂部。 最后嘗試修復所有這些小錯誤,它可能會起作用或引發另一個錯誤,這在任何一種情況下都是好的,因為正在向前發展:)

要盡早停止發送標頭,最好緩沖輸出並在腳本末尾發送。 為此,請在 php.ini 中打開緩沖。

output_buffering = On

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM