【发布时间】:2019-09-22 07:56:44
【问题描述】:
我正在尝试在每个回显之间添加 5 秒的延迟,以允许用户查看状态。
我的代码
add_action( 'gform_pre_submission_8', 'pre_submission_handlerr' );
function pre_submission_handlerr( $form ) {
$current_user = wp_get_current_user();
global $wpdb;
$checkip = $_POST['input_8'];
echo "IP Requested: . $checkip";
$result = $wpdb->get_var("SELECT EXISTS(SELECT * from wp_gf_entry_meta WHERE meta_value like '$checkip');");
if ( $result == 1) {
$_POST['input_7'] = 'Approved';
sleep(5);
echo "Status: Found";
sleep(5);
}
if ( $result == 0) {
$_POST['input_7'] = 'Not Approved';
echo "Status: Not Found";
}
}
但是,我看到延迟实际上是在开始时,并且没有我想要的延迟(在两个回声之间)
WordPress 中的 PHP 代码段(重力形式)
任何反馈将不胜感激
谢谢! 娜塔莉
【问题讨论】:
-
你可以使用 flush() 和你的 sleep() stackoverflow.com/a/19085197/11274409
-
直接输出所有内容并让 Javascript 在 5 秒后执行某些操作可能是一个更好的主意。这样您就不会打开连接。
-
警告:您对SQL Injections 持开放态度,应该真正使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。
-
这是一个最好用 javascript 解决的问题。
-
Javascript 的另一个优点是它在用户的浏览器中进行计时,因此计时更加可靠。
标签: php