【问题标题】:PHP function add datetime stamp when tick box on form is ticked勾选表单上的复选框时,PHP函数添加日期时间戳
【发布时间】:2018-11-04 16:01:18
【问题描述】:

我有一个在 Ninja Forms 中运行的表单,并且有一段自定义代码可以将详细信息触发到外部 API,我遇到的问题有两个。

我需要这样做,以便如果您勾选 gdpr_consent_date 复选框,它会通过此过程向 API 触发一个日期时间(js 时间戳),然后如果您勾选 email_uptdate_optin 一个布尔值,无论它是否被选中。

这里是使用的代码:

function signup_form_process() {
global $ninja_forms_processing;

if ($ninja_forms_processing->get_form_ID() !== 7) {
return;
}

$url = 'https://' . APP_DOMAIN . '/account/alternative_signup';

$data = get_sign_up_form_data([
'email' => 11,
'name' => 12,
'password' => 13,
'time_zone_offset' => 26,
'gdpr_consent_date'=> 132,
'email_update_optin'=> 133,
]);

$old_account = login_old_api($data['email'], $data['password']);
$old_status_code = substr($old_account['response'], 0, 3);
$old_message = substr($old_account['response'], 
strpos($old_account['response'], '~') + 1);

if ($old_status_code === '200' || $old_status_code === '401' || 
$old_status_code === '409') {
$ninja_forms_processing->add_error('error_old_account', sprintf(__('The account %s already exists, <a href="%s" class="alert-link">please login here.</a>', 'sage'), $data['email'], home_url('/login/')));
return;
}

$options = [
'http' => [
  'header' => "Content-Type: application/json\r\n" .
              "Accept: application/json",
  'method'  => 'POST',
  'content' => json_encode($data),
  'ignore_errors' => true
],
];

$context  = stream_context_create($options);
$result = json_decode(file_get_contents($url, false, $context));
$headers = Utils\parse_headers($http_response_header);

Utils\log('Signup API Response:');
Utils\log(['response' => $result, 'headers' => $headers]);

if (strpos($headers['status'], '201') === 0) {
$data['username'] = $data['email'];
$data['remember_me'] = 0;
unset($data['email']);
unset($data['name']);
post_login($data);
} else {
if (is_array($result->error)) {
  $ninja_forms_processing->add_error('error_api', $result->error[1]);
} else if (!empty($result->error)) {
  $ninja_forms_processing->add_error('error_api', $result->error);
} else {
  $ninja_forms_processing->add_error('error_api', __('An unknown error occurred.', 'sage'));
}
}
}
add_action('ninja_forms_post_process', __NAMESPACE__ . '\\signup_form_process');

我有点卡住了,如果有人可以提供帮助,那就太棒了!

克里斯

【问题讨论】:

  • 没有足够的代码来提供帮助
  • 已更新到函数中使用的完整代码

标签: php wordpress forms validation


【解决方案1】:

将 gdpr_consent_date 的输入值设置为 &lt;?php date('H:i:s d-m-Y') ?&gt; 并简单地将复选框设置为 true

日期格式可以更改为您的需要,更多信息here

【讨论】:

  • 小问题.. 忍者表单不允许我将 gdpr_consent_date 的值更改为 他们有点设置被选中或未选中。
  • 抱歉,从未使用过忍者形式。也许您可以检查 gdpr_consent_date 是否为true,然后将其设置为日期?类似于:if( gdpr_consent_date ) { gdpr_consent_date = date(); }
猜你喜欢
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
相关资源
最近更新 更多