在PHP中收集数据后,我只想重定向到另一个页面,但没有任何反应


After collecting data in PHP I just want to redirect to another page but nothing is happening

我创建了一些PHP代码,从另一台服务器收集数据。我确认数据可以通过一堆打印语句进行,例如:

print "<br /><br />headline: " . $user->headline ;
print "<br /><br />industry: " . $user->industry ;

这一切都很好。但是,我想重定向到其他服务器上的另一个URL并发送该信息,而不是使用打印来显示内容。所以我注释掉了打印行,而是创建了一组查询参数,并使用标题函数尝试重定向,如下所示:

$params = '?success=ok&uname=' . $_SESSION['uname']  . '&odistate=' . $_SESSION['odistate'];
$params .= '&firstName=' . $user->firstName . '&lastName=' . $user->lastName . '&headline=' .   $user->headline . '&industry=' . $user->industry;
$params .= '&summary=' . $user->summary . '&publicProfleUrl=' . $user->publicProfileUrl . '&emailAddress=' . $user->emailAddress;
$params .= '&numRecommenders=' . $user->numRecommenders;
$url = 'http://www.example.org/profileInfo/' . $params;
header("location: $url");
exit;

不过什么也没发生。我可以转到该页面,但重定向不会发生。我知道在重定向之前不应该有来源,我检查了来源,它是空的。PHP 日志中没有错误。已检查代码是否存在语法错误,但不存在。

如果我注释掉重定向部分并改用打印语句,它可以正常工作。但是,如果我注释掉打印语句并尝试使用重定向部分,则没有任何反应。只是一个空白屏幕。

如果我滑倒

print $url;

在 header() 调用之前,它自然不会重定向,但我可以确认 URL 似乎格式正确。不过,某些查询值中有一些空格。可能是必须对其进行 URL 编码才能将空格转换为 %20 或类似的问题吗?

什么可能导致重定向不发生?

如果在设置标题之前输出任何内容(甚至是空格字符),则设置标头不起作用。

确保事先没有任何输出,如printechovar_dump等,并确保在文件或任何其他include()require()文件的开头<?php之前没有空格、换行符或任何其他字符。

如果不是这种情况,请通过打开页面和Chrome或Firefox中的开发人员工具来查看标题是否正确设置。

  • 打开页面
  • 打开开发人员工具(ctrl+shift+j
  • 刷新页面
  • 转到开发人员工具Network部分,打开您的请求和"Headers"选项卡
  • 查看您的标头是否已设置,以及其 URL 格式是否正确。

从我上面的评论中复制在这里:

  1. 请注意urlencode()放置在参数字符串中的所有值。

  2. 使用浏览器开发控制台(通常为 F12 ),并检查问题所在。这就是开发控制台的用途。

  3. 在设置标题之前,请确保不会意外回显任何内容。执行此操作的一种可靠方法是使用 phps 输出缓冲功能,并丢弃在 header() 语句之前缓冲的任何输出。

尝试header("location: " . $url);而不是header("location: $url");

第一种解决方案将$url变量的内容连接到重定向,而另一种解决方案将您的网站重定向到显然不存在的"$url"路径。

相关文章: