(1)我正在将我的网站上传到远程Web服务器。
(2)网站的模板系统的设置方式是通过向index.php
(3)加载初始页面有效。此页面通过评估其表单的值来确定下一页的位置。
(4)通过执行以下操作重定向到下一页:header('location: next_page')
(5)由于某种原因,不执行重定向。这是代码的样子:
$error = "";
if(isset($_POST['index_choice'])){
$path_choice = isset($_POST['path']) ? $_POST['path'] : NULL;
//echo $path_choice;
//echo $page_inc;
//nothing after this
if($path_choice != null){
if($form->is_connected()){
//if($path_choice != "" || $path_choice != NULL){
if($path_choice == "new"){
//header('location: /login.php');
//header('location: page/login');
header('location: /index.php?page=login');
exit();
}
else{
//header('location: /amend.php');
//header('location: page/amend');
header('location: /index.php?page=amend');
exit();
}
//}
/**
else{
//destroy_session();
$error = "You haven't selected a path. Please choose a path";
}
*
*/
}
else{
//destroy_session();
$error = "Problems with connecting to the database";
}
}else{
//destroy_session();
$error = "You have not indicated your choice";
}
}
已解决
在代码中的其他地方?>
之后有一个空格。在将以下命令放在代码顶部后,向我显示了这一点:
error_reporting(E_ALL); ini_set('display_errors', 'On');
我要感谢所有试图提供帮助的人。
答案 0 :(得分:16)
在发送标题(“位置”)之前,您似乎正在向浏览器回显文本。 在执行header()之前,您无法将内容发送到浏览器,因为echo将强制发送标头。注释这些行并查看它是否有效:
// echo $path_choice;
// echo $page_inc;
现在您的标题将被发送,您将被重定向。
答案 1 :(得分:13)
将此代码添加到第一个代码:
<?php
ob_start();
?>
答案 2 :(得分:10)
您可以尝试重定向页面的javascript方式:
echo '<script>window.location = "'.$url.'";</script>';
答案 3 :(得分:3)
简单的PHP脚本是否适合以下工作?
<?php header('Location: /index.php?page=login'); ?>
您还必须确保实际使用$path_choice != null
和$form->is_connected() === true
的代码路径,因为您的错误状态根本没有设置HTTP标头。
答案 4 :(得分:3)
我看到'destroy_session()',你在某个地方使用session_start()吗? 确保已发送NO内容(包括(会话)cookie)。
调试提示:设置error_reporting(E_ALL)(包括E_NOTICE)。 这将为您提供发送标题的行。
其他麻烦来源: - BOM - 包含文件之前的额外行
答案 5 :(得分:2)
我相信你需要检查你的if-stack并确保你进入每个循环。在每个if语句后面放置一个echo,以确保header()甚至被评估,你的循环比你期望的更早被剪切。
我的嫌疑人与null和$ path_choice!= null的使用有关。您是否尝试过is_null()或isset(),因为它们是专门设计用于检查变量是否为空。此外,!==操作数也可以在这种情况下工作,但我不确定是否有PHP。
答案 6 :(得分:2)
确保在php文件的<?php
之前没有空格。如果您在<?php
之前将文件编码类型更改为没有BOM和退格的UTS_8可能会有所帮助,并确保在文件中的任何内容之后没有session start()
。应该就在之后
答案 7 :(得分:2)
试试吧。它会起作用
echo "<script type='text/javascript'> window.location='index.php'; </script>";
而不是header("location: index.php");
答案 8 :(得分:1)
请确保在您的PHP代码之前没有空格,因为这很重要。
例如
<?php
some code this is the correct way
?>
--------------
<?php
some code this is the incorrect way the space above matters
?>
答案 9 :(得分:0)
好吧,如果您尝试了所有内容,此示例可以提供帮助(HTML / PHP):
<?php
header("HTTP/1.0 404 Not Found");
echo '<html>
<head>
<meta http-equiv="Refresh" content="0;url=http://www.url.com/index.php?code=404" />
</head><body></body>
</html>';
?>
答案 10 :(得分:0)
确保代码开头不应有空格
例如:
------whitespace----
<?php
.
.
.
. ?>
从第一行删除空格,使<?php
必须位于第一行。