我试图访问用户在用wpforms创建的表单上输入的表单数据,并将它们保存为会话变量,但无论我如何尝试,似乎都无法从表单中获得任何信息。我可以将信息硬编码到会话变量中,它们可以按预期工作,但它需要从表单中提取数据。
下面是我在页面上的php代码的代码片段:
<?php
echo session_id();
$_SESSION['age'] = $_POST['wpforms[fields][3]'];
$_SESSION['gender'] = $_POST['wpforms[fields][2]'];
?>提交表单后,我还包含了第二页中的一些代码,在这里我看到,当我在第一页中对会话变量进行硬编码时,会话变量被正确设置,但当我试图从表单中提取时,会话变量没有被设置。
echo session_id();
if ( isset($_SESSION['gender'])) {
echo "Gender is set.<br>";
}
else {
echo "Gender not set<br>";
}
if ( isset($_SESSION['age'])) {
echo "Age is set.<br>";
}
else {
echo "Age not set.<br>";
}
echo $_SESSION['gender'];
echo $_SESSION['age'];任何有见地的人都将非常感谢!谢谢!Screenshot of page inspection
发布于 2020-09-29 03:16:43
我想通了。我必须在我使用的wordpress主题的functions.php文件中添加以下代码:
add_action('init', 'register_my_session');
function register_my_session() {
if (!session_id() ) {
session_start();
}
function wpf_dev_process_entry_save( $fields, $entry, $form_id, $form_data ) {
// Only run on my form with ID = 4117
if ( absint( $form_data['id'] ) !== 4117 ) {
return $fields;
}
$_SESSION['age'] = $fields[3]['value']; // This is where we access the form data
$_SESSION['gender'] = $fields[2]['value'];
}
add_action( 'wpforms_process_entry_save', 'wpf_dev_process_entry_save', 10, 4 );
}https://stackoverflow.com/questions/64072675
复制相似问题