PHP setcookie 为整个域名

问题描述 投票:0回答:5

我用这个函数给整个域名设置一个cookie:

setcookie("tuittingID", $random, mktime(0, 0, 0, 12, 31, 2015), '/', '.domainname.com');

现在的问题是我不知道

domainname.com
会是什么,因为这个脚本将被不同的人在不同的域名上使用。

我已经找到一种方法来做同样的事情,但不需要客户端编辑该行。

有办法吗?

请告诉我。

php setcookie
5个回答
1
投票

您需要执行以下操作来设置域名:

setcookie(name, value, expire, path, preg_replace('/www/','',$_SERVER['HTTP_HOST']));

0
投票

检查

$_SERVER
超全局。它包含地址的各个部分(例如在
$_SERVER['HTTP_HOST']
中),尽管您可能仍然需要自己进行一些剪切。您可以使用
.
将主机名分解为数组。作为分隔符。结合最后两项,您就得到了域名(SLD + TLD)。

如果将此代码用作库,我将向(库的)用户提供使用完整域、仅二级域或自定义设置的可能性。


0
投票

您正在寻找

$_SERVER['HTTP_HOST']


0
投票
setcookie("tuittingID", $random, mktime(0, 0, 0, 12, 31, ".".$_SERVER['HTTP_HOST']);

0
投票

动态域名确定方法,处理当我们有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];
    }
© www.soinside.com 2019 - 2024. All rights reserved.