标题位置在 3 次后不起作用
Posted
技术标签:
【中文标题】标题位置在 3 次后不起作用【英文标题】:Header Location not working after 3 times 【发布时间】:2015-07-31 01:59:04 【问题描述】:我在运行 mysql 查询的页面上使用函数 header("Location: example.php")
,该查询创建照片库,然后重定向到刚刚创建的照片库页面。
问题是,在创建了 3 或 4 个相册后,会出现此错误:
“无法修改标头信息 - 标头已由...发送”
我知道header()
之前不应该有任何输出,但我的问题是:为什么它工作了几次然后就失败了?
<?php
if(isset($_POST['crea']))
$nome_lista = $_POST['nome_lista'];
$slug_lista = str_replace(' ','_',$nome_lista);
$luogo_lista = $_POST['luogo_lista'];
$inserisci = mysql_query("INSERT INTO `prova`(`id_lista`, `nome_lista`,`slug_lista`, `id_utente`, `luogo_lista`,`copertina`) VALUES (NULL,'$nome_lista','$slug_lista','$user_id','$luogo_lista','copertina.jpg')");
$user_id = $_SESSION['id_utente'];
$id_lista = mysql_query("
SELECT id_lista
FROM prova
WHERE id_utente ='$user_id'
ORDER BY id_lista DESC");
$ultima_lista = mysql_result($id_lista,0);
if($inserisci)
$percorso_album = "./img_globali/".$user_id.$username;
mkdir($percorso_album."/".$slug_lista, 0775);
else
echo 'Non ho inserito la cartella del nuovo album '.mysql_error();
header("location: album.php?id=".$ultima_lista);
exit;
?>
查询被执行,即使页面没有重定向
【问题讨论】:
我想有时它会转到echo 'Non ho inserito la cartella del nuovo album '.mysql_error();
第三到第四次,您的INSERT
查询失败,添加调试语句以了解发生了什么?注意:由于此类调试语句,重定向可能会失败。首先,调试然后继续重定向的东西......
@Makesh 查询被执行,即使页面没有重定向
【参考方案1】:
标头必须在任何内容之前发送,删除任何回显命令,它将起作用。此外,请确保这部分 PHP 代码之前没有空格或 html。
您还可以在 PHP 代码的最顶部使用 ob_start();
打开输出缓冲,然后头将在任何回显变量之前发送。
【讨论】:
ob_start();
的使用只是隐藏了实际问题。
并非如此,几乎在所有情况下都将其打开并没有什么坏处,并且在某些配置下可能会给您带来小的性能提升。
我认为使用ob_start没有问题,它也提到了here【参考方案2】:
在您的情况下,输出仅在 else
块中发送。因此,当$inserisci
为true
时,您不会收到该错误。
if ($inserisci)
// No output here, so error will happen when in this block
$percorso_album = "./img_globali/".$user_id.$username;
mkdir($percorso_album."/".$slug_lista, 0775);
else
// You have output here, hence "header already sent" error
echo 'Non ho inserito la cartella del nuovo album '.mysql_error();
header("location: album.php?id=".$ultima_lista);
【讨论】:
【参考方案3】:header("Location:album.php?id=$ultima_lista");
【讨论】:
以上是关于标题位置在 3 次后不起作用的主要内容,如果未能解决你的问题,请参考以下文章
jquery datepicker在导航到另一个组件后不起作用
Laravel 5.1 Php artisan 命令在作曲家更新后不起作用