小编Ste*_*eve的帖子

为什么这个索引字符串清除$ _SESSION数组?

我发现了一些奇怪的行为 - 我很感兴趣 - 任何人都可以对此有所了解......?

概观

今天早上花了一些时间找出导致$_SESSION数组清空的错误原因.最终得到它的底部,并发现在为其中一个$_SESSION变量定义一个索引时,一个&被用于连接而不是一个..它只在两个特定字符串被&编辑时断开,其他字符串导致无意义键但$_SESSION不为空.

这在PHP5.5.9-1ubuntu4.20上运行,在PHP5.6.15本地运行.

亲自尝试一下!

使用下面的示例代码,

  1. 运行set-session.php
  2. 运行check-session.php - 一切都很好
  3. 运行break-session.php - 到目前为止仍然很好......
  4. 再次运行check-session.php - $_SESSION现在是空的!

示例代码

设置session.php文件

session_start();

$_SESSION = [
   'colour' => 'blue',
   'shape'  => 'round',
   'size'   => 'medium'
];
Run Code Online (Sandbox Code Playgroud)

入住session.php文件

session_start();

echo '<pre>';
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)

突破session.php文件

session_start();

$killer_string = 'Admin_CH_1_' & '101_';
$_SESSION[$killer_string] = null;

echo '<pre>';
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)

我猜

我猜测按位运算的结果导致字符串,在这种情况下$killer_string,导致PHP在尝试将$_SESSION数组存储在服务器上时生气.奇怪的$killer_string是,当用作子阵列的键时,它不再是杀手$_SESSION …

php

7
推荐指数
1
解决办法
104
查看次数

Laravel 查询构建器 - 如何按关系字段过滤

举例来说,假设我有以下内容,其中为每个拥有一顶帽子的人建立了关系。

$people = People::join('hat')->get();
Run Code Online (Sandbox Code Playgroud)

我如何过滤我的结果,只给我那些帽子是红色的人?

我试过了,

$people = People::join('hat')
    ->where('hat.colour', 'red')
    ->get();    
Run Code Online (Sandbox Code Playgroud)

...但到目前为止还没有运气。

干杯

laravel

3
推荐指数
1
解决办法
2664
查看次数

标签 统计

laravel ×1

php ×1