Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MAMP localhost include和cookie设置功能_Php_Cookies_Include_Localhost_Mamp - Fatal编程技术网

Php MAMP localhost include和cookie设置功能

Php MAMP localhost include和cookie设置功能,php,cookies,include,localhost,mamp,Php,Cookies,Include,Localhost,Mamp,由于明显的原因,我正试图将我的网站离线,但我很难让localhostPHP函数正常工作。我的代码如下: include "http://localhost:8888/mainbar.php?display=1"; 如果我只知道文件名,我可以包含它,但是我需要通过url传递值,所以这不是一个选项。我已经研究过其他方法来实现这一点,但使用MAMP的全部目的是能够离线工作,然后上传改进 接下来,我无法设置cookies。以下是我的cookie代码: $expire=time() + (14 * 24

由于明显的原因,我正试图将我的网站离线,但我很难让
localhost
PHP函数正常工作。我的代码如下:

include "http://localhost:8888/mainbar.php?display=1";
如果我只知道文件名,我可以包含它,但是我需要通过url传递值,所以这不是一个选项。我已经研究过其他方法来实现这一点,但使用MAMP的全部目的是能够离线工作,然后上传改进

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

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

我也尝试过用Chrome设置Cookie,但无法做到。如果无法做到这一点,我会感到惊讶。

应该只为Include提供文件路径,而不是URL

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

include”/var/www/html/yourappfolder/mainbar.php”

我看到您正试图向它传递一个变量,
?display=1
。解决方案不是弄清楚如何使用URL参数加载文件,而是要重新设计如何获取与
display
变量对应的信息

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

因此,基本上,您希望创建一个既可供
mainbar.php使用,又可使用include创建此文件的函数。1个可供2页使用的函数是您的最佳解决方案

至于cookie问题。。尝试不使用路径“/”。。因此:


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

对于问题的第一部分,您需要启用url\u file\u include。这被认为是一个巨大的安全风险,通常不应该使用它,因为这是一个糟糕设计的标志。为了实现这一点,您只需添加一个

allow_url_include=1
在php.ini中。 对于问题的后一部分,您的代码在my MAMP安装中运行正常,因此您必须确保对setcookie的调用在任何输出到浏览器(任何回显)之前。
此外,如果要保存任何敏感信息,也应该考虑不使用Cookie。

典型地包括在本地文件上,而不是通过Web服务器。当您通过http包含时,所发生的事情是PHP充当某种web浏览器,并向服务器发出第二个请求。这真的是你想要做的吗?看起来您可能只是想将一个变量传递给include<代码>$display='foo'
然后在include中,
$display
仍然是foo。我觉得我错过了什么?这里似乎有一个糟糕的设计或对
include
的误解。与其使用
include
为什么不直接使用
echo file\u get\u contents('http://localhost:8888/mainbar.php?display=1)
?除非它本身包含php代码,这是一个非常糟糕的想法。事实上,整件事都是一个坏主意,因为
mainbar.php
中的任何内容都应该从这段代码中调用。你在本地主机上的时间合适吗?@Corbin-mate实际上,使用完整的url是完全合法的。@Pete这是合法的,就像用鞋钉钉子是合法的一样。你可以做到,但这可能不是一个好主意。随机挑剔:使用硬编码的完整路径是一个巨大的痛苦等待发生。无论是
define()
基本路径,还是仔细使用相对路径,或者大量使用
\uuuuu DIR\uuuu
都要容易得多。(并不是说你特别说他应该使用硬编码的完整路径,但初学者往往很容易养成坏习惯:()我完全同意,我也这么做。为了简单起见,我不想添加任何额外的混乱层,如果这不是一个熟悉的概念,这绝对是一个替代方案,但不是你考虑的。这是一个快捷的捷径,而不是没有解决正确的软件设计,以及它带来的巨大安全风险。