我有一个登录脚本执行此操作:
$_SESSION['username']=$username;
$_SESSION['password']=$password;
如果用户成功登录。 所以我编辑了注册页面来执行此操作:
<?php
function redirect() {
header(' URL= index.php');
}
?>
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js">
<head>
<link href='icon.jpg' rel='icon' type='image/jpg'/>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="en" />
<LINK REL=StyleSheet HREF="Mainstyles.css" TYPE="text/css"></link>
<Title>Sign up | JMToday</title>
</head>
<body>
<?php
if(isset($_SESSION['username'])){
redirect();
}
?>
但是当我使用我创建的帐户登录时,它不会重定向用户。那是为什么?
答案 0 :(得分:12)
header(' URL= index.php');
应该是
header ( 'Location: index.php' );
此外,您可能希望在调用die()
之后添加header()
语句,以便完全停止脚本的执行。
并且您应该将调用移到redirect()
以上任何其他输出,因为HTTP标头必须是响应中的第一件事。这可能也是导致问题的原因。
答案 1 :(得分:9)
将redirect()
功能更改为:
header('Location: index.php');
并将调用移至重定向上方的所有html输出:
<?php session_start();
if(isset($_SESSION['username'])) {
redirect();
} ?>
请记住,必须调用header() 在发送任何实际输出之前, 通过普通的HTML标签,空白 文件中的行,或PHP中的行。
这最终应该是这样的,接受@ Jan的建议来添加对die()
的调用:
<?php
function redirect($DoDie = true) {
header('Location: index.php');
if ($DoDie)
die();
}
php session_start();
if(isset($_SESSION['username'])) {
redirect();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js">
<head>
<link href='icon.jpg' rel='icon' type='image/jpg'/>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="en" />
<LINK REL=StyleSheet HREF="Mainstyles.css" TYPE="text/css"></link>
<Title>Sign up | JMToday</title>
</head>
<body>
?>
答案 2 :(得分:6)
function redirect() {
header('location:index.php');
}
答案 3 :(得分:1)
这是header('Location: index.php');
答案 4 :(得分:0)
如果你想立即重定向,那么
function redirect(){
header("Location: home.php");
}
如果你想延迟重定向,那么
function redirect(){
header("Refresh: 0;url=default.php");
}
在“刷新:0”中增加0以引入更大的延迟。
在向用户显示一些通知/消息后,您可以使用此方法重定向。
注意如果您在重定向方面遇到一些问题,请在功能结束时输入“exit()”