标头位置在 PHP 中不起作用


Header Location not working in Php

以下语句似乎不起作用。我也没有收到任何错误消息。

header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q="+$query);

我在搜索.php文件中使用 file_put_contents()。

有没有办法找出可能出现的问题?

更改以下内容:

+$query

对此:

.$query

因为:

+ 是 JavaScript 的串联运算符,其中 . 是 PHP 的串联参数

此外,您发送的路径似乎不正确。header 函数中的参数应该是一个完整的网址,例如以 http 开头:

header('Location: http://www.example.com/');

当您的答案是使用本地文件路径时:"Location: /home/shaliu/Projects/Nominatim..." .

请尝试:

您可以使用:

header("Location: http://www.example.com/search.php?q=".$query); exit();

或者,如果您的搜索.php文件位于根目录中:

header("Location: /search.php?q=".$query); exit();

它可能会对你有所帮助。

放error_reporting(E_ALL);

使用相对路径。

更改此内容

 header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q="+$query);

在 php 中用于连接使用 ".","+" 在 javascript 中使用,而不是在 php 中使用

header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query);

请使您的文件路径正确

在将+固定为 . 之后,如 @Webeng 之前所说。

如果您通过在浏览器中键入/home/shaliu/Projects/Nominatim/website/index.php来访问页面,则标题根本不起作用,因为您不在 Web 上下文中,而是在本地文件视图上下文中。

如果您通过 http://localhost/Nominatim/index.php 访问它,您将处于 Web 上下文中,但您的标头不起作用,因为从技术上讲,您正在发送重定向到 http://localhost/home/shaliu/Projects/Nominatim/website/search.php 路径,该路径可能不存在于此位置。取而代之的是,您应该将其更改为: /search.php website/文件夹是否链接到http://localhost/或任何足够的内容,取决于您的环境配置。

你可以试试这个。我希望它会有所帮助

header('Location: http://www.example.com/search.php?q='.$query);

header( ) 用于发送 HTTP 标头 (http://php.net/manual/en/function.header.php)。看起来您正在尝试使用本地文件路径而不是http(网络)地址访问php文件。"/home/shaliu/Projects/Nominatim/website/search.php"需要是 Web 可访问的,并且该 Web 地址是需要在 header() 中使用的(参见 @Purushotham 的答案)。

如果您正在使用

/home/shaliu/Projects/Nominatim/website/search.php

在这种情况下,您的位置以/开头,这意味着主文件夹(目录)应该位于服务器的根文件夹中。例如,作为本地服务器,如果我们考虑XAMPP,那么主文件夹应该在C:''xampp''htdocs(一般来说)中,如果我们考虑WAMP,那么主文件夹应该在www文件夹中。

如果您的主文件夹位于当前页面所在的文件夹中,则应使用

home/shaliu/Projects/Nominatim/website/search.php

否/(需要正斜杠)。

第二件事是您需要将 + 替换为 . 以连接字符串。

因此,如果您的主文件夹位于服务器的根目录中,那么您应该使用

header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query);

否则,您应该选择

header("Location: home/shaliu/Projects/Nominatim/website/search.php?q=".$query);

尝试使用"如果文件存在"进行测试以下代码:

if(is_file("/home/shaliu/Projects/Nominatim/website/search.php")) { header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query); } else { echo "Error!"; }

请记住:在 php 中用于连接使用 . (@shivani parmar)

请记住:如果在任何 HTML 元素之后调用header,php 将返回错误!

header("Location:https://www.example.com/search.php?q='<?php echo $get_id; ?>'");

请尝试此 php 代码。如果您在 PHP 中第一个标题和位置中使用标头,请为您的搜索 get ID 打上问号。

您需要将 plus(+) 替换为 dot(.) 来连接字符串。

试试这个。

header('Location: http://www.example.com/search.php?q='.$query);

除了已经指出的明显的串联问题之外,看起来这条路径/home/shaliu/Projects/Nominatim/website/search.php是一条*NIX路径; 考虑到它开始的/home/<user>模式。

如果是这种情况,并且您尝试像这样打开Web服务器根目录之外的文件,那么您的文件很可能是权限问题。将search.php移动到 Web 服务器进程可访问的位置,并在您尝试打开 Web 服务器进程的文件上运行 chmod/chown 可能会解决您的问题。此外,您可能必须指定正在使用的操作系统,以防万一您还需要运行chcon .

哦,我会对此发表评论,但似乎我没有必要的代表来添加评论。