Sam*_*ril 6 php redirect http-headers
我有一个登录脚本执行此操作:
$_SESSION['username']=$username;
$_SESSION['password']=$password;
Run Code Online (Sandbox Code Playgroud)
如果用户成功登录.所以我编辑了注册页面来执行此操作:
<?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();
}
?>
Run Code Online (Sandbox Code Playgroud)
但是当我使用我创建的帐户登录时,它不会重定向用户.这是为什么?
Jan*_*čič 12
header(' URL= index.php');
Run Code Online (Sandbox Code Playgroud)
应该
header ( 'Location: index.php' );
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望die()在调用后放置一个语句,header()以便完全停止脚本的执行.
你应该将调用移到redirect()任何其他输出之上,因为HTTP标头必须是响应中的第一件事.这可能也是导致问题的原因.
mar*_*cog 10
将redirect()功能更改为:
header('Location: index.php');
Run Code Online (Sandbox Code Playgroud)
并将调用移至重定向上方的所有html输出:
<?php session_start();
if(isset($_SESSION['username'])) {
redirect();
} ?>
Run Code Online (Sandbox Code Playgroud)
来自header()文档:
请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header().
这是最终应该看起来的样子,采用@ 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>
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13565 次 |
| 最近记录: |