在 php 中设置全局标志,wordpress
Setting a global flag in php, wordpress
我知道有很多这样的问题,我一直在尝试建议的解决方案,但它们似乎不适合我。
我已将验证码添加到 wordpress 站点,通过在 jQuery 中向 validate-captcha.php
发出 GET 请求和 return 消息来验证该站点。很有魅力。
在 return 我触发了一个不可见的 'submit' 按钮的点击。
为了确保评论不会在没有验证码检查的情况下发布,我需要一个全局标志。我将其设置为 validate-captcha.php
:
global $captchaFlag; //first line
...
} else {
// Handle a successful verification
global $captchaFlag; //overkill to make sure it IS global
$captchaFlag = 1;
echo ('true'.$GLOBALS['captchaFlag']); //echoes fine
}
然后在提交时,我在 functions.php 中设置了一个过滤器,它应该检查 captchaFlag,如果 flag = 1 则直接提交评论,或者如果 flag = 0 或不存在则验证验证码:
add_filter("preprocess_comment", "verify_comment_captcha");
function verify_comment_captcha($commentdata) {
global $captchaFlag;
echo("<script>console.log('PHP: ".json_encode($captchaFlag)."');</script>");
echo("<script>console.log('PHP: ".json_encode($GLOBALS['captchaFlag'])."');</script>");
return null;
}
但是在提交时回显 global $captchaFlag;
或 $GLOBALS['captchaFlag']
显示值是 null
即使它已经被 validate-captcha.php.[=18 设置为 1 =]
我做错了什么?
全局变量不会在页面加载时持续存在,因此这不会起作用。
您使用 $_SESSION
的方法是正确的,但我怀疑这对您不起作用,因为您需要在设置或访问会话变量之前调用 session_start();
。
我知道有很多这样的问题,我一直在尝试建议的解决方案,但它们似乎不适合我。
我已将验证码添加到 wordpress 站点,通过在 jQuery 中向 validate-captcha.php
发出 GET 请求和 return 消息来验证该站点。很有魅力。
在 return 我触发了一个不可见的 'submit' 按钮的点击。
为了确保评论不会在没有验证码检查的情况下发布,我需要一个全局标志。我将其设置为 validate-captcha.php
:
global $captchaFlag; //first line
...
} else {
// Handle a successful verification
global $captchaFlag; //overkill to make sure it IS global
$captchaFlag = 1;
echo ('true'.$GLOBALS['captchaFlag']); //echoes fine
}
然后在提交时,我在 functions.php 中设置了一个过滤器,它应该检查 captchaFlag,如果 flag = 1 则直接提交评论,或者如果 flag = 0 或不存在则验证验证码:
add_filter("preprocess_comment", "verify_comment_captcha");
function verify_comment_captcha($commentdata) {
global $captchaFlag;
echo("<script>console.log('PHP: ".json_encode($captchaFlag)."');</script>");
echo("<script>console.log('PHP: ".json_encode($GLOBALS['captchaFlag'])."');</script>");
return null;
}
但是在提交时回显 global $captchaFlag;
或 $GLOBALS['captchaFlag']
显示值是 null
即使它已经被 validate-captcha.php.[=18 设置为 1 =]
我做错了什么?
全局变量不会在页面加载时持续存在,因此这不会起作用。
您使用 $_SESSION
的方法是正确的,但我怀疑这对您不起作用,因为您需要在设置或访问会话变量之前调用 session_start();
。