[英]why doesn't my php redirect work?
我正在寫一個登錄腳本。 我的db.php沒有回顯/打印任何內容,所以為什么沒有header(“ Location:index.php”); 成功登錄后重定向? 登錄信息正確。 我知道我需要清理輸入內容,但目前這不是問題。
<?php
require('db.php');
$username = $_POST['un'];
$password = $_POST['pw'];
$qry="SELECT uid FROM users WHERE name='$username' AND pass='".md5($password)."'";
$result=mysql_query($qry);
if(mysql_num_rows($result) == 1){
session_regenerate_id();
$user = mysql_fetch_assoc($result);
$_SESSION['S_UID'] = $user['uid'];
session_write_close();
header("Location: index.php");
exit();
}else{
echo "<center><form action='index.php' name='login'>Login failed! Please try again with correct username and password.<br><input type='submit' name='failed' value='Return to Login'></form></center>";
exit();
}
?>
僅在調用函數之前腳本未發送任何輸出的情況下,函數頭才起作用。 檢查上面的代碼是否回顯了某些內容。
如果不是,請檢查上面的包含文件,在結束的“?>”標記后沒有多余的空格或換行符。 否則,該空格或換行符將在標題之前發送到瀏覽器。
您確定腳本(或db.php)中的任何地方都沒有產生輸出嗎? 甚至沒有幾個多余的空間?
嘗試使用完整的URL,例如:
header("Location: http://www.mysite.com/index.php");
某些瀏覽器(感謝IE)無法理解URI未完成的301重定向代碼。
PHP中的標頭定位行為是一個很好的工具,但是很容易在不正確的情況下實現...為此,我將考慮使用require()
代替header(location)
喜歡:
if (!imLoggedIn()){
require('loginForm.php');
exit;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.