错误消息:致命错误:无法使用函数返回>写入上下文中的值

时间:2010-11-16 08:30:58

标签: php-5.3

我正在尝试从book运行一些代码。代码似乎有问题。

以下是错误消息:

  

致命错误:无法使用函数返回   写入上下文中的值   /Applications/MAMP/htdocs/Eclipse-Workspace/simpleblog/test.php   第24行

以下是邮件中引用的代码(从第24行开始)

if (!empty(trim($_POST['username'])) 
        && !empty(trim($_POST['email']))) { 
        // Store escaped $_POST values in variables 
            $uname = htmlentities($_POST['username']); 
            $email = htmlentities($_POST['email']); 

            $_SESSION['username'] = $uname; 

            echo "Thanks for registering! <br />", 
                "Username: $uname <br />", 
                "Email: $email <br />"; 
        } 

我将不胜感激任何帮助。如果我需要提供更多信息,请告诉我


非常感谢你们。那非常快。解决方案很有效。

问题是empty()函数只需要应用于直接变量。

供将来参考: 代码来自Jason Lengstorf撰写的“PHP for Absolute Beginners”(2009),第90-91页,第3章,$ _SESSION

更正后的代码:

    //new - Created a variable that can be passed to the empty() function
    $trimusername = trim($_POST['username']);

    //modified - applying the empty function correctly to the new variable 
    if (!empty($trimusername) 
    && !empty($trimusername)) { 

    // Store escaped $_POST values in variables 
    $uname = htmlentities($_POST['username']); 
    $email = htmlentities($_POST['email']); 

    $_SESSION['username'] = $uname; 

    echo "Thanks for registering! <br />", 
        "Username: $uname <br />", 
        "Email: $email <br />"; 
} 

2 个答案:

答案 0 :(得分:6)

简而言之:empty()函数只能直接用于变量

<?php
empty($foo); // ok
empty(trim($foo)); // not ok

我会说,对于进一步阅读这本书的过程,只需使用一个临时变量

所以改变:

if (!empty(trim($_POST['username'])) 

$username = trim($_POST['username']);
if(!empty($username)) { 
     //....

答案 1 :(得分:3)

在手册中提到了你的例子

  

注意:

     

empty()仅检查变量,因为其他任何内容都会导致解析错误。换句话说,以下内容不起作用:empty(trim($ name))。

使用临时变量,或只测试“空字符串”

if (trim($foo) !== '') {
    // Your code
}