我正在尝试从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 />";
}
答案 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
}