我用这个函数给整个域名设置一个cookie:
setcookie("tuittingID", $random, mktime(0, 0, 0, 12, 31, 2015), '/', '.domainname.com');
现在的问题是我不知道
domainname.com
会是什么,因为这个脚本将被不同的人在不同的域名上使用。
我已经找到一种方法来做同样的事情,但不需要客户端编辑该行。
有办法吗?
请告诉我。
您需要执行以下操作来设置域名:
setcookie(name, value, expire, path, preg_replace('/www/','',$_SERVER['HTTP_HOST']));
检查
$_SERVER
超全局。它包含地址的各个部分(例如在 $_SERVER['HTTP_HOST']
中),尽管您可能仍然需要自己进行一些剪切。您可以使用 .
将主机名分解为数组。作为分隔符。结合最后两项,您就得到了域名(SLD + TLD)。
如果将此代码用作库,我将向(库的)用户提供使用完整域、仅二级域或自定义设置的可能性。
您正在寻找
$_SERVER['HTTP_HOST']
setcookie("tuittingID", $random, mktime(0, 0, 0, 12, 31, ".".$_SERVER['HTTP_HOST']);
动态域名确定方法,处理当我们有ip、localhost时的情况
$domain = $this->getMainDomain();
SetCookie('test', 'test', 0, '/', $domain);
public function getMainDomain(): string
{
$httpHost = $this->getHostName();
if (filter_var($httpHost, FILTER_VALIDATE_IP)) {
return '';
}
$domainParts = explode('.', $httpHost);
if (count($domainParts) < 2) {
return '';
}
$mainDomain = '.' . implode('.', array_slice($domainParts, -2));
return $mainDomain;
}
public function getHostName(): string
{
return explode(':', $_SERVER['HTTP_HOST'])[0];
}