首先,我应该说我为wordpress创建了一个模板文件。现在的问题是,我创建了一个函数,它不工作无缘无故!我可以删除功能,但我想知道为什么这是不工作!
(我100%确定这两个变量是不同的,因为我打印了它们)
函数总是返回true,即使我的变量是不同的!我测试了它,我也想回显函数,但页面没有加载!
非常非常奇怪!
代码:global $wpdb;
$lid = $_GET['lid'];
$row = $wpdb->get_row($wpdb->prepare("SELECT * FROM wp_edit_gf WHERE lid = $lid"), ARRAY_A);
global $current_user;
$user_id = $current_user->ID;
$user = get_user_by('id', $user_id);
$user_email=$user->user_email;
$lid_mail = $row['user_mail'];
function gfedit_verify_user_entry(){
if(isset($_GET['lid']) && $lid_mail == $user_email){
return true;
}
else{
return false;
}
}
if(!is_user_logged_in()){
header("Location: https://example.com/my-account/?login=true&back=home&page=1");
exit();
}
elseif(!gfedit_verify_user_entry()){
echo "access denied!";
}
else{
.
.
.
在函数gfedit_verify_user_entry()中,您使用了在函数外部声明的两个变量($lid_mail和$user_email)。所以没有什么奇怪的,它们不存在于函数中。
你应该很容易改正:
function gfedit_verify_user_entry($lid_mail, $user_email){
if(isset($_GET['lid']) && $lid_mail == $user_email){
return true;
}
else{
return false;
}
}
如果一行代码更可取的话,只是一个额外的添加。
$lid = isset($_GET['lid']);
function gfedit_verify_user_entry($lid, $lid_mail, $user_email){
return $lid && $lid_mail == $user_email;
}
@lagaart抱歉我不得不编辑你的答案。无法添加评论,因为我目前的声望评分不允许我评论。