如何编写带有两个条件表达式的 if 语句?
How to write an if statement with two conditional expressions?
我正在处理登录表单及其会话。现在我收到这个错误:
Parse error: syntax error, unexpected 'strlen' (T_STRING) in /home/xxx/domains/xxx/public_html/server/include/session.php on line 130
这是错误行:
if(!$subuser strlen($subuser = trim($subuser)) == 0){
这是完整的代码:
function login($subuser, $subpass, $subremember){
global $database, $form; //The database and form object
/* Username error checking */
$field = "user"; //Use field name for username
if(!$subuser strlen($subuser = trim($subuser)) == 0){
$form->setError($field, "* Username not entered");
}
else{
/* Check if username is not alphanumeric */
if(!eregi("^([0-9a-z])*$", $subuser)){
$form->setError($field, "* Username not alphanumeric");
}
}
这行代码语法无效:
if(!$subuser strlen($subuser = trim($subuser)) == 0){
考虑将其更改为:
if(!strlen(trim($subuser))) {
您不需要对第一个表达式中的 $subuser
进行两次检查——如果需要,您应该使用 ||
来分隔它们。
使用 ctype_alnum()
而不是 preg_match()
来检查字母数字字符。
function login($subuser, $subpass, $subremember){
global $database, $form; //The database and form object
$field = "user"; //Use field name for username
if (!strlen($subuser = trim($subuser))) {
$form->setError($field, "* Username not entered");
//} elseif (!preg_match('/^[\da-z]+$/i', $subuser)) {
} elseif (!ctype_alnum($subuser)) {
$form->setError($field, "* Username not alphanumeric");
}
}
- 第一个条件中的设计逻辑是更新
$subuser
值,然后检查其长度,以便第二个条件不接收带有前导或尾随空格的字符串。
这是 demonstration。
我正在处理登录表单及其会话。现在我收到这个错误:
Parse error: syntax error, unexpected 'strlen' (T_STRING) in /home/xxx/domains/xxx/public_html/server/include/session.php on line 130
这是错误行:
if(!$subuser strlen($subuser = trim($subuser)) == 0){
这是完整的代码:
function login($subuser, $subpass, $subremember){
global $database, $form; //The database and form object
/* Username error checking */
$field = "user"; //Use field name for username
if(!$subuser strlen($subuser = trim($subuser)) == 0){
$form->setError($field, "* Username not entered");
}
else{
/* Check if username is not alphanumeric */
if(!eregi("^([0-9a-z])*$", $subuser)){
$form->setError($field, "* Username not alphanumeric");
}
}
这行代码语法无效:
if(!$subuser strlen($subuser = trim($subuser)) == 0){
考虑将其更改为:
if(!strlen(trim($subuser))) {
您不需要对第一个表达式中的 $subuser
进行两次检查——如果需要,您应该使用 ||
来分隔它们。
使用 ctype_alnum()
而不是 preg_match()
来检查字母数字字符。
function login($subuser, $subpass, $subremember){
global $database, $form; //The database and form object
$field = "user"; //Use field name for username
if (!strlen($subuser = trim($subuser))) {
$form->setError($field, "* Username not entered");
//} elseif (!preg_match('/^[\da-z]+$/i', $subuser)) {
} elseif (!ctype_alnum($subuser)) {
$form->setError($field, "* Username not alphanumeric");
}
}
- 第一个条件中的设计逻辑是更新
$subuser
值,然后检查其长度,以便第二个条件不接收带有前导或尾随空格的字符串。
这是 demonstration。