0

我有一个printContent()打印参数并logged()检查用户是否登录的函数。

我的意思是做这样的事情:

logged("printContent('TITLE', 'CONTENT', 1)", 1);

它不起作用。printContent()如果用户未登录,则应该这样做,但没有发生任何事情。如果我尝试更改return()print()它会打印文本“printContent(text...)”。

下面是这两个函数:

function logged($echo = 0, $logout = 0)
{    
        if($_SESSION['user']) 
        {
            if($echo)
            {
                if(!($logout)) return $echo;
                else return false;
            }
            else return true;
        }
        else
        {  
            if($logout == 1) return $echo;
            else return false;
        }
}
function printContent($title, $content, $type = 0){
    if($type == 1){
        echo '<div class="right-box">';
        if($title) echo '<h3>'.$title.'</h3>';
        echo $content.'</div>';            
    }
    else {
        echo '<div class="left-box">';
        if($title) echo '<h2>'.$title.'</h2>';
        echo '<div class="left-box-content">'.$content.'</div></div>';
    }
}
4

4 回答 4

4

如果用户未登录,它应该 printContent()

你可以试试

if(!logged())
{
printContent('TITLE', 'CONTENT', 1);
}
于 2013-05-28T16:58:13.507 回答
1

你的logged()功能太复杂了;和参数$echo使$logout逻辑极难遵循。你应该把它简化成这样,做好一件事:

function isLoggedIn()
{
    return !empty($_SESSION['user']);
}

然后,之后的逻辑变得非常简单:

if (!isLoggedIn()) {
    printContent('title', 'content', 1);
}

播放时间

想象一下,从 5.3 开始你就可以这样做了,尽管这是一个非常人为的例子,说明你可以使用匿名函数完成什么:

function ifLoggedIn($loggedIn, $loggedOut)
{
    return empty($_SESSION['user']) ? $loggedIn() : $loggedOut();
}

和参数是回调参数$loggedIn$loggedOut根据用户是否登录从函数内部执行。要使用它:

ifLoggedIn(function() {
}, function() {
    printContent('TITLE', 'CONTENT', 1);
});
于 2013-05-28T16:58:37.163 回答
0

您似乎正在寻找的是回调。

如果我理解正确,您希望 printContent 只执行,如果用户已登录,对吗?

您可能想查看此问题以获取更多信息:如何在 PHP 中实现回调?

于 2013-05-28T16:58:41.813 回答
0

您正在尝试执行纯字符串。利用

function1( function2() );

那是一样的

$tmp = function2();
function1($tmp);
于 2013-05-28T16:59:14.510 回答