2010-04-30 144 views

回答

3
header("Location: /login.php"); 

http://php.net/manual/en/function.header.php

+2

我通常在头后添加'die(“Redirecting ...”);'以确保没有其他输出。 – 2010-04-30 02:09:03

+0

@webdestroya - 考虑到用户是否可以看到重定向失败,这是否有点让人误解? – 2010-04-30 03:52:10

+0

用户很少看到它,如果他们这样做,只意味着他们的浏览器速度很慢,而不是重定向失败。 – 2010-04-30 03:53:44

7
header("Location: /login.php"); 
exit; 

exit。不要有史以来忘记这样做。如果您之后有敏感数据,任何不遵守位置标题的人都可以看到(such as some bots)。

要忘记阻止你,你可以建立一个包装类型的函数

function redirect($url) { 
    header('Location: ' . $url); 
    exit; 
} 
+0

我不确定Google会不会那样做,但我可能是错的。他们遵循301和302的很好......什么是通过位置与PHP一起发送的默认状态代码? – 2010-04-30 03:53:58

+0

@anonymous coward我最近读了一个'Daily WTF',他们从自定义CMS中删除了页面,因为Internet Archive bot没有遵循'Location'标题。我混淆了谷歌机器人与他们。 – alex 2010-04-30 03:59:30

+0

等一下,你为什么首先输出敏感数据? – erjiang 2010-05-01 20:50:46

-1
`Header("Location:login.php");` 

或: echo "<meta http-equiv=refresh content='0; url=login.php'>";

或:

echo "<script language='javascript'>"; 
echo "location='login.php';"; 
echo "</script>"; 
+2

永远不要指望Javascript执行关键任务重定向。 – 2010-04-30 03:50:53

0

你可以这样做:

func.php

<?php 
function EmptyStr($value){ 
    $str = strval($value); 
    $str = str_replace("&nbsp;", "", $str); 
    return (trim($str) == ""); 
} 

function redirect($url) { 
header('Location: ' . $url); 
exit; 
} 
?> 

register.php

<?php 
include("func.php"); 
$username = $_POST["username]; 
$password = $_POST["password"]; 
$email = $_POST["email"]; 
if(!EmptyStr($username) && !EmptyStr($password) && !EmptyStr($email)){ 
    sql = WRITE YOUR SQL SYNTAX HERE TO INSERT THE INPUT TO DB 
    redirect("/login.php"); 
}else{ 
    $_SESSION["ErrMsg"] = "Error! All fields are required."; 
} 

echo $_SESSION["ErrMsg"]; 
$_SESSION["ErrMsg"] = ""; 
?> 
Put your html regsitration form here 

的login.php

<?php 
include("func.php"); 
$username = $_POST["username]; 
$password = $_POST["password"]; 

if(!EmptyStr($username) && !EmptyStr($password)){ 
    sql = WRITE YOUR SQL SYNTAX HERE TO QUERY THE USERNAME AND PASSWORD TO DB 
    if ($rs && !$rs->EOF) { //user found and pass match 
     $_SESSION["username"] = $username; 
     redirect("/main.php"); 
    }else{ 
     $_SESSION["ErrMsg"] = "Invalid username or passsword!"; 
    } 
}else{ 
    $_SESSION["ErrMsg"] = "Error! All fields are required."; 
} 

echo $_SESSION["ErrMsg"]; 
$_SESSION["ErrMsg"] = ""; 
?> 

Put your html login form here 

main.php

<?php 
include("func.php"); 
if(EmptyStr($_SESSION["username"])){ //check if user has session (logged in) 
    $_SESSION["ErrMsg"] = "You need to logged in first to view this page!"; 
    redirect("/login.php"); 
} 
?>