PHP无法使用特定的数据库结果设置cookie,但可以与所有其他人一起使用

时间:2018-03-21 13:22:17

标签: php cookies

我正在使用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。错误日志上也没有任何内容。

0 个答案:

没有答案