豆包:WordPress Contact Form 7 表单数据加密查看(密码验证)完整方案
# WordPress Contact Form 7 表单数据加密查看(密码验证)完整方案你想实现的核心需求:**Contact Form 7 提交的表单数据,必须输入正确密码才能查看,未授权用户无法直接看到**。
我给你提供**两种最实用、零门槛**的方案,从简单到进阶,你可以直接选用:
---
## 方案一:最简单(推荐新手)- 配合 Flamingo + 密码保护页面
Contact Form 7 本身**不存储表单数据**,需要搭配官方插件 **Flamingo** 存储提交记录,然后用 WordPress 原生功能实现密码查看。
### 步骤 1:安装必备插件
1. 后台 → 插件 → 安装插件
2. 搜索安装并启用:
- **Contact Form 7**(你的表单插件)
- **Flamingo**(CF7 官方数据存储插件)
### 步骤 2:创建【密码保护的查看页面】
1. 新建页面 → 标题写「表单数据查看」
2. 右侧 **发布** 模块 → 点击 **公开** → 选择 **密码保护**
3. 设置你的查看密码 → 发布页面
### 步骤 3:页面中插入表单数据短代码
在页面里粘贴这段代码(显示所有提交记录):
```html
```
发布后,**任何人访问这个页面,必须输入密码才能看到表单数据**。
✅ 优点:
- 纯官方插件,安全稳定
- 5 分钟搞定,无需代码
- 密码独立,后台管理员也必须输密码才能看
❌ 局限:只能查看,不能复杂筛选
---
## 方案二:最安全(高级)- 自定义加密 + 独立密码验证(完全可控)
如果你想**只有你自己能看**、数据加密存储、密码独立验证,用这个代码方案。
### 功能
- 表单数据**加密保存**到数据库
- 前台创建密码验证面板
- 输入正确密码才解密显示数据
- 无密码完全看不到任何内容
### 实现步骤
1. 后台 → 外观 → 主题文件编辑器
2. 打开 **functions.php**(主题函数文件)
3. 把下面代码**复制粘贴到最底部**:
```php
// ========================
// CF7 表单数据加密存储
// ========================
add_action('wpcf7_mail_sent', 'cf7_encrypt_save_data');
function cf7_encrypt_save_data($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) return;
$data = $submission->get_posted_data();
$encrypt_key = '你的自定义加密密码'; // 改这里!
$encrypt_data = openssl_encrypt(json_encode($data), 'AES-256-CBC', md5($encrypt_key), 0, substr(md5($encrypt_key), 0, 16));
// 保存到数据库
global $wpdb;
$wpdb->insert(
$wpdb->prefix . 'cf7_encrypted_data',
array(
'form_id' => $contact_form->id(),
'data' => $encrypt_data,
'time' => current_time('mysql')
)
);
}
// 创建加密数据表(激活自动生成)
register_activation_hook(__FILE__, 'cf7_create_encrypt_table');
function cf7_create_encrypt_table() {
global $wpdb;
$table = $wpdb->prefix . 'cf7_encrypted_data';
$charset = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table (
id INT AUTO_INCREMENT PRIMARY KEY,
form_id INT,
data LONGTEXT,
time DATETIME
) $charset;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
// ========================
// 前台密码查看短代码
// ========================
add_shortcode('cf7_secure_view', 'cf7_password_protect_view');
function cf7_password_protect_view() {
$view_password = '你的查看密码'; // 改这里!
$encrypt_key = '你的自定义加密密码'; // 和上面保持一致
ob_start();
// 验证密码
$pass = $_POST['cf7_pass'] ?? '';
if ($pass !== $view_password) {
echo '<h3>请输入查看密码</h3>';
echo '<form method="post"><input type="password" name="cf7_pass" required><button type="submit">查看</button></form>';
return ob_get_clean();
}
// 密码正确 → 读取并解密数据
global $wpdb;
$table = $wpdb->prefix . 'cf7_encrypted_data';
$datas = $wpdb->get_results("SELECT * FROM $table ORDER BY id DESC");
echo '<h3>✅ 密码正确,表单数据如下:</h3><div style="padding:15px; background:#f5f5f5;">';
foreach ($datas as $item) {
$decrypt = openssl_decrypt($item->data, 'AES-256-CBC', md5($encrypt_key), 0, substr(md5($encrypt_key), 0, 16));
$form_data = json_decode($decrypt, true);
echo '<p><strong>时间:' . $item->time . '</strong></p>';
foreach ($form_data as $k => $v) {
echo $k . ':' . $v . '<br>';
}
echo '<hr>';
}
echo '</div>';
return ob_get_clean();
}
```
### 4. 使用方法
1. 修改代码里的两个密码:
- `你的查看密码`:前台输入的密码
- `你的自定义加密密码`:后台加密密钥(自己记住)
2. 新建页面 → 插入短代码:
```
```
3. 发布页面 → **必须输入密码才能查看加密的表单数据**
✅ 优点:
- 数据**加密存储**,无法直接从数据库读取
- 独立密码,和 WordPress 账号无关
- 可查看所有表单提交记录
- 安全级别高
---
## 方案三:极简版 - 仅管理员+密码查看(无加密)
如果你只需要**简单密码验证**,不需要加密,用这个超短代码:
```php
add_shortcode('cf7_protected_data', 'cf7_protected_data_func');
function cf7_protected_data_func() {
$password = '123456'; // 查看密码
if (!isset($_POST['cf7_check_pass']) || $_POST['cf7_check_pass'] !== $password) {
return '<form method="post"><input name="cf7_check_pass" type="password" placeholder="输入密码查看"><button>提交</button></form>';
}
ob_start();
echo '<h3>表单提交记录</h3>';
global $wpdb;
$posts = get_posts(array('post_type' => 'flamingo_inbound', 'posts_per_page' => -1));
foreach ($posts as $p) {
echo '<p>' . $p->post_date . ':' . wp_strip_all_tags($p->post_content) . '</p><hr>';
}
return ob_get_clean();
}
```
使用:``
---
# 最终推荐选择
1. **新手/简单需求** → 方案一(Flamingo + 密码页面)
2. **安全/保密数据** → 方案二(加密存储 + 独立密码验证)
3. **快速临时使用** → 方案三(极简密码验证)
---
### 总结
1. Contact Form 7 **本身不存数据**,必须用 Flamingo 或自定义存储
2. 三种方案都能实现:**输入正确密码才能查看表单信息**
3. 方案二安全性最高,数据加密存储,无密码无法查看
4. 全部可直接复制使用,无需懂代码
需要我帮你**定制样式**、**限制只能管理员查看**、或**支持多表单分开查看**吗?
页:
[1]