全局设置php函数

全局设置php函数,php,function,Php,Function,我正忙着开发一个包含博客的网站。现在我想添加一个dev_模式检查。如果我正在编辑文章页面,检查应返回“true”,以便我可以发布类似“此页面当前正在编辑”的消息。请稍后再来。我只希望所有页面都有一个函数,但这不给我带来好运 我当前的职能: function development_mode($mysqli, $dev_blog=false, $dev_article=false, $dev_cv=false, $dev_contact=false, $dev_bio=false, $dev_cp

我正忙着开发一个包含博客的网站。现在我想添加一个dev_模式检查。如果我正在编辑文章页面,检查应返回“true”,以便我可以发布类似“此页面当前正在编辑”的消息。请稍后再来。我只希望所有页面都有一个函数,但这不给我带来好运

我当前的职能:

function development_mode($mysqli, $dev_blog=false, $dev_article=false, $dev_cv=false, $dev_contact=false, $dev_bio=false, $dev_cpanel=false, $get_development_status=false) {
    $get_development_status = mysqli_query($mysqli,"SELECT * FROM global_settings") or die (mysqli_error($mysqli));
    $status = mysqli_fetch_array($get_development_status);
    $dev_blog = $status['dev_blog'];
    $dev_article = $status['dev_article'];
    $dev_cv = $status['dev_cv'];
    $dev_contact = $status['dev_contact'];
    $dev_bio = $status['dev_bio'];
    $dev_cpanel = $status['dev_cpanel'];

    if ($dev_blog == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_article == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_cv == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_contact == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_bio == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_cpanel == 'yes') {
        return true;
    } else {
        return false;
    }
}
这是我希望在编辑文章页面时向访问者显示“稍后再来”消息的方式

if (development_mode($mysqli, $dev_article) == true) {
    echo "This page is being edited. Come back later!";
    die();
} else {
//Content
}

谢谢:)

除了
dev_blog
之外,它不会像预期的那样用于设置,因为它没有考虑您作为参数传递给它的值,在您的示例
$dev_article

无论您试图传递给它什么,如果

if ($dev_blog == 'yes') {
    return true;
} else {
    return false;
}
并根据查询返回的设置
dev_blog
列返回
true
false

按原样,执行将永远不会继续检查
$dev_article
$dev_contact
$dev_bio
$dev_cpanel
,无论它们的值是什么或您试图传递给
开发模式()
函数的参数是什么


解决方案:

function development_mode($mysqli, $dev_blog=false, $dev_article=false, $dev_cv=false, $dev_contact=false, $dev_bio=false, $dev_cpanel=false, $get_development_status=false) {
    $get_development_status = mysqli_query($mysqli,"SELECT * FROM global_settings") or die (mysqli_error($mysqli));
    $status = mysqli_fetch_array($get_development_status);
    $dev_blog = $status['dev_blog'];
    $dev_article = $status['dev_article'];
    $dev_cv = $status['dev_cv'];
    $dev_contact = $status['dev_contact'];
    $dev_bio = $status['dev_bio'];
    $dev_cpanel = $status['dev_cpanel'];

    if ($dev_blog == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_article == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_cv == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_contact == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_bio == 'yes') {
        return true;
    } else {
        return false;
    }

    if ($dev_cpanel == 'yes') {
        return true;
    } else {
        return false;
    }
}
正确检查的一种方法是尝试以下操作,使用列的字符串索引调用函数:

 if (development_mode($mysqli, 'dev_article') == true) {
然后在你的函数中有:

function development_mode($mysqli, $status_column) {
    $get_development_status = mysqli_query($mysqli,"SELECT * FROM global_settings") or die (mysqli_error($mysqli));
    $status = mysqli_fetch_array($get_development_status);

    $dev_status = $status[$status_column];

    if ($dev_status == 'yes') {
        return true;
    } else {
        return false;
    }
}

这可以进一步优化,只返回所需的列,因为您只关心该列,但您知道这两个列之间有什么不同。

很抱歉,我们无法猜测您想要实现的逻辑。你必须在你的问题中添加更多细节。但是第一眼看到的是:第一个if/else语句之后的代码永远不会执行,因为函数总是在该语句中返回。无论给出的是真是假,但它永远不会继续执行下去。我不知道。。似乎我必须为每个页面创建一个函数,不是吗?谢谢你的回答和解释。谢谢!不用担心,我用一个简单的例子更新了答案,说明了如何实现解决方案。