【问题标题】:function does not return true or false in php for no reason [duplicate]函数不会无缘无故地在php中返回true或false [重复]
【发布时间】:2021-12-09 16:30:45
【问题描述】:

首先,我应该说我为 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{
.
.
.

【问题讨论】:

  • $lid_mail == $user_email 内部函数:Null == Null 返回真。 @Lagaart 给出解决方法的答案,必须接受。

标签: php html wordpress templates


【解决方案1】:

在您的函数 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 抱歉,我不得不编辑您的答案。无法将其添加为评论,因为我目前的声誉评分不允许我发表评论。

【讨论】:

  • 请注意,要使其正常工作,您还需要更改此行:elseif(!gfedit_verify_user_entry($lid_mail, $user_email)){
  • 天哪。我的错。很抱歉,但至少我希望我能帮助其他一些编码人员。我最近完成了一些严肃的任务。再次为此感到抱歉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 2019-01-13
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多