include('header.php');
$name = $_POST['name'];
$score = $_POST['score'];
$dept = $_POST['dept'];
$MyDB->prep("INSERT INTO demo (`id`,`name`,`score`,`dept`, `date`) VALUES ('','$name','$score','$dept','$date')");
// Bind a value to our :id hook
// Produces: SELECT * FROM demo_table WHERE id = '23'
$MyDB->bind(':date', $date);
// Run the query
$MyDB->run();
header('Location:index.php');
exit;
Run Code Online (Sandbox Code Playgroud)
上面的代码一直给我一个重定向问题.错误如下:
警告:无法修改标头信息 - 已在/ Applications/MAMP/htdocs/testygubbins/OO/test/form中发送的标头(在/Applications/MAMP/htdocs/testygubbins/OO/test/header.php:15处开始输出). php在第16行.
我完全被这个弄得晕头转向.有谁知道我应该做些什么来使它工作?
编辑
header.php代码:
<?php
include('class.user.php');
include('class.Connection.php');
$date = date('Y-m-j');
?>
<html>
<head>
<link rel=StyleSheet href="css/style.css" type="text/css" media=screen>
<title>Test</title>
</head>
<body>
<div id="page">
Run Code Online (Sandbox Code Playgroud)
Pau*_*xon 46
仔细查看您的包含 - 也许您在关闭后有一个空行?>?
这将导致一些文字空格作为输出发送,从而阻止您进行后续标题调用.
请注意,将关闭?>关闭包含文件是合法的,这是避免此问题的有用习惯用法.
(编辑:查看标题,如果要输出标题,则需要避免执行任何HTML输出,或使用输出缓冲来捕获它).
最后,正如标题的PHP手册页指出的那样,您应该使用完整的URL来重定向:
注意:HTTP/1.1需要绝对URI作为Location的参数: 包括方案,主机名和绝对路径,但某些客户端接受相对URI.你通常可以使用$ _SERVER ['HTTP_HOST'],$ _SERVER ['PHP_SELF']和dirname()自己创建一个相对的URI:
T.T*_*dua 28
1)命令echo...之前应该没有输出(即HTML部分)header(...);.
2)后,header(...);您必须使用exit();
3)删除任何空白(或换行之前)<?php和后?>标记.
4) 检查php文件(以及其他.php文件,即included) - 它们应该具有没有BOM编码的UTF8(而不仅仅是UTF-8).因为默认的UTF8在文件的开头添加了不可见的字符(称为" BOM "),所以你应该避免这样!!!!!!!!!!!
5)使用301或302参考:
header("location: http://example.com", true, 301 ); exit;
Run Code Online (Sandbox Code Playgroud)
6) 打开错误报告.并告诉错误.
7)如果以上都没有帮助,使用JAVASCRIPT重定向(但是,不鼓励的方法),可能是自定义案例中的最后一次机会......:
echo "<script type='text/javascript'>window.top.location='http://website.com/';</script>"; exit;
Run Code Online (Sandbox Code Playgroud)
或者,不要考虑文件中某处的换行符或空格,可以缓冲输出.基本上,您ob_start()在文件的最开始和ob_end_flush()最后调用.您可以在php.net ob-start功能描述中找到更多详细信息.
编辑: 如果使用缓冲,则可以在header()函数之前和之后输出HTML - 缓冲将忽略输出并仅返回重定向标头.
小智 5
试试这个 :
**ob_start();**
include('header.php');
$name = $_POST['name'];
$score = $_POST['score'];
$dept = $_POST['dept'];
$MyDB->prep("INSERT INTO demo (`id`,`name`,`score`,`dept`, `date`) VALUES ('','$name','$score','$dept','$date')");
// Bind a value to our :id hook
// Produces: SELECT * FROM demo_table WHERE id = '23'
$MyDB->bind(':date', $date);
// Run the query
$MyDB->run();
header('Location:index.php');
**ob_end_flush();**
exit;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124292 次 |
| 最近记录: |