2

出于明显的原因,我试图将我的网站移至离线状态,但我无法让localhostPHP 函数正常工作。我的代码如下:

include "http://localhost:8888/mainbar.php?display=1";

如果我只有它的名称,我可以包含该文件,但我需要通过 url 传递值,所以这不是一个选项。我已经研究了让它工作的其他方法,但使用 MAMP 的全部意义在于能够离线工作,然后上传改进。

接下来,我无法设置 cookie。这是我拥有的以下 cookie 代码:

$expire=time() + (14 * 24 * 60 * 60);
setcookie("user", "Conan", $expire, '/');

我也尝试使用 Chrome 设置 cookie,但无法这样做。如果无法做到,我会感到惊讶。

4

2 回答 2

2

应该只给包含文件路径,而不是 URL。

正确的用法如下所示:包括“/path/to/file”

include "/var/www/html/yourappfolder/mainbar.php";

我看到您正在尝试将其传递给变量,?display=1. 解决方案不是弄清楚如何使用 URL 参数加载文件,您真的想重新设计如何获取与display变量对应的信息。

您想要做的是改进软件设计并在某处创建一个单独的功能,例如:getMainBarData($display). 在您的 mainbar.php 文件中,您将调用此函数以获取当前的结果。在您使用包含的文件中,您可以包含包含新函数的文件getMainBarData($display),并直接调用它:getMainBarData(1).

所以基本上,你想创建一个函数,这个函数既可以被使用,也可以被mainbar.php包含在这个文件中。2页可以使用的1个功能是您的最佳解决方案。

至于cookie问题..尝试不使用路径“/”..所以:

setcookie('user', 'Conan', $expire);

于 2012-12-22T03:14:59.873 回答
0

对于问题的第一部分,您需要启用 url_file_include。这被认为是一个巨大的安全风险,通常永远不应该使用它,因为它是糟糕设计的标志。为了使这项工作你只需要添加一个

allow_url_include=1

在你的 php.ini 中。对于问题的后半部分,您的代码在我的 MAMP 安装上运行良好,因此您必须确保您对 setcookie 的调用在浏览器的任何输出(任何回显)之前。此外,如果您要保存任何敏感信息,您应该考虑不使用 cookie。

于 2012-12-22T15:02:58.180 回答