【问题标题】:Save submitted form values as cookie将提交的表单值保存为 cookie
【发布时间】:2019-09-12 15:26:12
【问题描述】:

现在我正在使用jQuery 存储会话变量,例如:

$("form#sessie_datum").change(function() {
 var str = $("form#sessie_datum").serialize();
 $.ajax({
           type: 'POST',
           url: 'http://URL.com/datum.php',
           data: $("form#sessie_datum").serialize(),
           dataType: 'text',
           success: function() {
           alert('Variables has been stored in the session');
           },
 });
 return false;
});

在我的datum.php 文件中,我按名称获取提交的值, 这是我的form

<form id="sessie_datum">
<input type="text" class="aantal_alpincenter" name="personen_aantal" value="">
<input type="text" id="datepicker2" placeholder="Click to choose a date" name="wapbk_hidden_date" value="">
<div id="datepicker"></div>
</form>

datum.php 在下面

<?php

session_start();
$_SESSION["chosen_date"] = $_POST['wapbk_hidden_date'];
$_SESSION["personen"] = $_POST['personen_aantal'];

?>

在每个 php 文件中,我可以获取会话变量,例如:

session_start();
$date = htmlentities($_SESSION["chosen_date"]);

我不想使用session_start();,而是想使用cookies,这样我可以防止与我的caching插件发生冲突,并让变量在用户的计算机上存储1天。任何人都知道如何使用cookies 做到这一点?

【问题讨论】:

  • 你是在会话而不是 cookie 中做的!
  • 是的,我知道,但我想设置已提交变量的 cookie
  • 为什么不使用瞬变?
  • 什么是瞬态?使用WP Rocket 我可以排除cookies 所以这是我想设置cookies 的主要原因
  • codex.wordpress.org/Transients_API 我会使用瞬态而不是将数据存储在 cookie 中。

标签: php wordpress forms session session-cookies


【解决方案1】:

您可以使用setcookie() 函数保存cookie。

使用 PHP 将所有 POST 数据简单地保存到 cookie 将是这样的:

<?php 
// Check if request method is post
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  foreach ($_POST as $key => $value) {
    // If you wanna modify key text, you may do so like this:
    switch ($key) {
      case 'wapbk_hidden_date':
        $cookie_key = 'chosen_date';
        break;

      case 'personen_aantal':
        $cookie_key = 'personen';
        break;

      default:
        $cookie_key = $key;
        break;
    }

    // Saves cookie for 1 day on this domain
    setcookie($cookie_key, $value, time()+3600*24, "/");
  }
}

然后,当您想使用 cookie 时,使用全局变量 $_COOKIE 获取它:

$date = htmlentities($_COOKIE['chosen_date']);

【讨论】:

  • 我需要将此代码放在我的functions.php 或datum.php 中吗?
  • @PelHout 您的 AJAX POST 请求的 URL,所以在您的情况下,是的,datum.php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
相关资源
最近更新 更多