我正在使用PHP(使用PDO)从数据库中检索行列表并设置要在整个会话中使用的cookie。以下代码适用于每个案例除了一个特别大的列表(实际上我不认为30个项目的数组是那么大,但是......)。当我尝试检索特定输入的列表时,cookie创建失败。
<?php
session_start();
require_once(dirname(__DIR__)."/connection.php");
if($user->loggedIn() !== true) {
$user->redirect('login.php');
}
if(isset($_POST["usrSendList"])) {
$list = trim($_POST["usrList"]);
$getLists = $permissions->getLists($list);
setcookie('getLists', serialize($getLists));
header("location: ./somewhere-else.php");
}
?>
<form method="post">
<select name="usrList" id="usrList">
<option value="" selected>Select a Company</option>
<?php
$listCompanies = $permissions->listCompanies();
foreach ($listCompanies as $company_name) { ?>
<option value="<?php echo $company_name["company_name"] ?>"><?php echo $company_name["company_name"] ?></option>
<?php } ?>
</select>
<input type="submit" name="usrSendList" id="usrSendList" value="Enviar" />
</form>
我已经在Permissions类中测试了数据库输出,并且可以确认它是按预期工作的(返回“list”字符串数组),但是这里仍然是代码:
<?php
class Permissions{
private $db;
function __construct($conn) {
$this->db = $conn;
}
public function listCompanies() {
$query = $this->db->prepare("SELECT company_name FROM table_permissions GROUP BY company_name;");
$query->execute();
$listCompanies = $query->fetchAll();
return $listCompanies;
}
public function getLists($list) {
$query = $this->db->prepare("SELECT permession_id, permission_contract FROM table_permissions WHERE company_name = :list GROUP BY permission_id, permission_contract;");
$query->bindparam(":list", $list);
$query->execute();
$getLists = $query->fetchAll();
return $getLists;
}
}
?>
所以,既然数据库输出正常,我想这与cookie有关,但我无法弄明白。 print_r($_COOKIE['getLists'])
的输出是什么都没有,这意味着甚至没有创建cookie。错误日志上也没有任何内容。