小编Fra*_*kie的帖子

在子域中维护会话变量

我一直在努力维护两个子域之间的会话变量,并发现它是不可能的.我最终创建了2个最小的PHP网页作为测试床,我称之为"测试1"

$_SESSION['test'] = "Fred";
Run Code Online (Sandbox Code Playgroud)

并且有一个指向'test 2'的超链接,它只是试图回显$ _SESSION ['test']的值,以证明它是否有效.我在我的www域中放置'test 1',在我的子域中放置'test 2'.我从各种来源尝试各种版本的标题.这是主要的3(当然还有他们的变种):

ini_set('session.cookie_domain',substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100));
session_start();
Run Code Online (Sandbox Code Playgroud)

要么

ini_set('session.cookie_domain','mydomain.com');
session_start();
Run Code Online (Sandbox Code Playgroud)

要么

ini_set('session.cookie_domain', PHP_INI_ALL);
session_start();
Run Code Online (Sandbox Code Playgroud)

要么

session_set_cookie_params(0, "/", ".mydomain.com", false);
session_start();
Run Code Online (Sandbox Code Playgroud)

我发现在每种情况下我都得到相同的结果.会话不在子域中进行,页面测试2不知道我将$ _SESSION ['test']设置为什么值.然而,上述方法之一应该起作用的网络似乎有很多确定性.知道会发生什么,特别是因为我使用最小的页面来测试机制(没有我能看到的副作用)?顺便说一句,我在共享服务器上,如果这是相关的.

谢谢你的想法.坦率.

编辑. 我修好了它.这个问题是由Suhosin引起的.请参阅本页脚底的详细答案.

php subdomain session-variables session-cookies

5
推荐指数
1
解决办法
3623
查看次数

一个针对三个表的MySQL查询:A中有多少个不在B或C中?

我在制定MySQL查询以执行以下任务时遇到了问题,虽然我已经看到过这里讨论的类似查询,但它们与我的完全不同,我试图转换它们.问题是(相当)简单陈述.我有三张桌子,'成员','dog_shareoffered'和'dog_sharewanted'.会员可以为他们想要出售或想要购买的东西提供零个,一个或多个广告,并且细节存储在相应的提供或想要的表格中,以及放置广告的成员的ID.列'id'对于成员是唯一的,并且对于所有三个表都是通用的.我想要的查询是询问有多少成员没有在任何一个表中放置广告.

我试过几种方式来问这个问题.我能得到的最接近的是一个不崩溃的查询!(无论如何,我不是MySQL专家).以下是我从其他示例中收集到的内容,但它返回零行,我知道结果应该大于零.

SELECT id 
  FROM members 
 WHERE id IN (SELECT id 
                FROM dog_sharewanted 
               WHERE id IS NULL) 
   AND id IN (SELECT id 
                FROM dog_shareoffered 
               WHERE id IS NULL)
Run Code Online (Sandbox Code Playgroud)

这个查询看起来很容易理解,不像我所看到的'JOIN',但我猜我可能需要某种Join,但在这种情况下会怎样?

mysql sql anti-join

2
推荐指数
1
解决办法
135
查看次数