【问题标题】:set cookie after submit button in wordpress在wordpress中提交按钮后设置cookie
【发布时间】:2013-05-07 13:59:22
【问题描述】:

我什至不确定是不是我这里需要的cookies,也许有更好的方法。

我目前有一个包含下载链接的页面。要访问此页面,用户必须提交他们的电子邮件地址。我正在使用插件 Contact Form 7 来输入电子邮件。然后我计划将其重定向到页面。该插件允许我将 ID 添加到提交按钮。

我应该在此处使用 JavaScript 设置 cookie 吗?我无法将 JavaScript 放入表单中,但我可以将表单放在我自己的页面模板中。

这是输出的 html,我不愿意尝试将其更改为插件..

<form action="/downloads/#wpcf7-f127-p124-o1" method="post" class="wpcf7-form" novalidate="novalidate">

<div style="display: none;">

<input type="hidden" name="_wpcf7" value="127" />
<input type="hidden" name="_wpcf7_version" value="3.4" />
<input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f127-p124-o1" />
<input type="hidden" name="_wpnonce" value="211b6bff7f" />

</div>

<p>Your Name (required)<br />

<span class="wpcf7-form-control-wrap your-name"><input type="text" name="your-name" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" /></span> </p>

<p>Your Email (required)<br />

<span class="wpcf7-form-control-wrap your-email"><input type="email" name="your-email" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email" aria-required="true" /></span> </p>

<p><input type="submit" value="Send" class="wpcf7-form-control wpcf7-submit" /></p>

<div class="wpcf7-response-output wpcf7-display-none"></div>

【问题讨论】:

  • 你会使用cookies做什么?我错过了你想要做的事情的重点
  • 好吧,基本上我想强制用户在带有下载链接的页面出现之前输入一个电子邮件地址(用于新闻通讯)。我想我认为 cookie 是我的选择,因为我可以在到达下载页面时检查 cookie 是否存在。如果没有,我可以隐藏对链接的访问。虽然我知道也许 cookie 不是我最好的选择
  • 我的另一个问题是我实际使用的表单是一个插件,我不想去破解。我宁愿拥有页面模板文件上的所有功能,并且只使用可以添加到表单中的 ID(在插件中)
  • 您无需以任何方式编辑表单。只需将我的答案中的email 更改为表单中电子邮件字段的名称即可。
  • 感谢您的帮助,这更有意义。我现在就实现这个。 :)

标签: php javascript wordpress


【解决方案1】:

使用$_SESSION 变量来确定用户是否设置了电子邮件。 Cookies 可以由用户轻松更改或删除。当然,在这种情况下,您不必担心后者,但您明白了。另一方面,SESSION 变量不会被您的应用程序的任何用户编辑。

示例 HTML:

<form method="post">
    <input type="email" placeholder="Enter email here..." name="email" />
</form>

PHP 示例

if(isset($_POST['email'])){
    // Set the session val
    $_SESSION['user_email_set'] = true;
}

// Check if user entered email

if(isset($_SESSION['user_email_set']) && $_SESSION['user_email_set']){
    // Show downloads page
}

【讨论】:

  • 嗨,埃文,我想知道您是否可以提供帮助,因为页面实际上重定向会话会丢失,因此 if(isset($_POST['email'])) 永远不会通过。
  • @Adrian 确保在重定向页面之前设置了SESSION var,它将保留。页面重定向时会话变量不会消失
  • @Adrian 您需要在 wordpress 中找到表单的模板文件,相信我很容易,然后将代码放在那里。你说的插件很简单,我以前用过,找到它验证的代码很简单,只要在表单中关注action即可。
  • 您的意思是创建该 html 的文件吗?好的,谢谢我看看,
  • 嗨,埃文,为所有问题道歉,不幸的是,我找不到动作的去向,因为它似乎只是去自己(它使用页面名称和 id。当我输入代码时进入classes.php它没有工作,似乎无论我做什么帖子似乎都没有传递到新页面。
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多