我包含一个更改URL的PHP脚本。
// index.php
ob_start();
include "script.php";
// This script redirects using header("Location:");
$out = ob_get_clean();
// I use the $out data for calculations
echo $out;
是否有一种简单的方法来对抗或撤消这种不需要的重定向?怎么样:
header("Location: index.php"); // redirect back to self
但这导致无休止的重定向循环...任何想法?
或者有没有办法从$ out缓冲区中删除header()调用,防止它到达客户端?
答案 0 :(得分:5)
仅供将来参考。从PHP 5.3开始,有一个名为header_remove()的新函数可以帮助处理这种情况。
答案 1 :(得分:3)
您可以尝试使用无效值覆盖该标头字段,例如:
header('Location: ', true);
但我不知道客户对此有何反应。
答案 2 :(得分:2)
没有一个好方法可以做到这一点。我想到了两件事:
答案 3 :(得分:1)
首先将文件包含为file_get_contents()
的变量,删除不需要的标头,然后使用PHP代码运行它(我不会提到用于将PHP字符串解析为PHP代码的恶意字) ?
答案 4 :(得分:1)
如果您没有PHP5.3可供使用(您可能没有),Gumbo's answer不起作用且您不想使用eval,那么我能看到的唯一其他选项,是streams的用法。然而,这是另一种更灵活但更复杂的评估形式。 Streams与tokenizer结合使用,您将能够通过简单的方式摆脱该函数调用:
require 'no-header://script.php';
答案 5 :(得分:0)
由于在输出之前在字符串中有完整的文本,因此您可以通过搜索和替换(例如使用正则表达式)简单地删除所需的标题。