【问题标题】:header location error redirecting标头位置错误重定向
【发布时间】:2017-06-21 20:53:39
【问题描述】:

您好,我正在尝试读取一个文件,其中包含我想重定向的 url 我正在使用这个

$file = 'test.txt';
$myfile = fopen($file, "r") or die("Unable to open file!");
$link = fread($myfile,filesize($link));
fclose($myfile);
header("Location: $link");  

浏览器显示错误“页面未正确重定向”

文件 test.txt 包含

http://www.google.es

【问题讨论】:

  • 愚蠢但必要的问题。您是否尝试过 echo $link 并检查是否没有隐藏字符?
  • 如果您想一次读取整个文件,为什么不直接调用file_get_contents()

标签: php header location


【解决方案1】:

在此处查看此声明,

$link = fread($myfile,filesize($link));
                      ^^^^^^^^^^^^^^^

filesize() 函数需要文件路径作为它的参数,但是你传递了一个 未定义的变量 $link

所以上面的语句应该是这样的:

$link = fread($myfile,filesize($file));

另外,在header(...); 之后使用exit();,因为header(...); 本身不足以将用户重定向到不同的页面。

header("Location: $link"); 
exit(); 

【讨论】:

  • 你的是更好(解释)的答案。我正在写我的,因为我看到顶部的黄色框说明给出了答案,哈哈
  • @Fred-ii- 是的,有时我也会遇到这种情况。 ;-)
  • 确实要在标题后添加exit;。我也打算推荐它(TBH)。
【解决方案2】:

你使用了错误的变量

filesize($link)

应该是$file

filesize($file)

(编辑):

调试过程(并将error reporting 设置为捕获和显示)。

已注释掉标题并回显$link 变量

$file = "test.txt";
$myfile = fopen($file, "r") or die("Unable to open file!");
echo $link = fread($myfile,filesize($link));
fclose($myfile);
// header("Location: $link");

...您会收到以下通知/警告:

注意:未定义变量:第 x 行 /path/to/file.php 中的链接
警告:fread(): 第 x 行 /path/to/file.php 中的长度参数必须大于 0

由于fread() 无法识别filesize,因此无法“读取”它。

当然,正如 Rajdeep 在他的(更好的)答案中所说,在标题后添加 exit;。您的(很可能)会奏效,但这确实是更好的做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2012-10-16
    • 2015-11-01
    • 1970-01-01
    相关资源
    最近更新 更多