仅返回true或false(PHP)

仅返回true或false(PHP),php,function,if-statement,Php,Function,If Statement,我有一段PHP代码,在运行多个存储函数后,该代码应该只返回true或false,但不幸的是,它没有按预期工作。 我首先检查电子邮件验证,如果有效则返回true,如果无效则返回false,然后对用户名执行同样的操作 if($_SERVER['REQUEST_METHOD'] == 'POST') { // Email is valid if(checkmail($_POST['email'])) { $_SESSION['v_mail'] = $_POST['email']; $

我有一段PHP代码,在运行多个存储函数后,该代码应该只返回true或false,但不幸的是,它没有按预期工作。 我首先检查电子邮件验证,如果有效则返回true,如果无效则返回false,然后对用户名执行同样的操作

if($_SERVER['REQUEST_METHOD'] == 'POST') {

// Email is valid
if(checkmail($_POST['email'])) {
    $_SESSION['v_mail'] = $_POST['email'];
    $valid = true;} else { $valid=false; }

// username is valid
if(checkuser($_POST['username'],5,10)) {
    $_SESSION['v_username'] = $_POST['username'];
    $valid=true;} else { $valid=false; }

}
我只需要在检查两者后返回False或True。 我知道这是一个很小的把戏,但我没能做到。

试试这个:

if($_SERVER['REQUEST_METHOD'] == 'POST') {

// Email is valid
if(checkmail($_POST['email'])) {
    $_SESSION['v_mail'] = $_POST['email'];
    $valid = true;} else { $valid=false; }

// username is valid
if(checkuser($_POST['username'],5,10)) {
    $_SESSION['v_username'] = $_POST['username'];
    } else { $valid=false; } //and between the last $valid value

}
还是这个:

if($_SERVER['REQUEST_METHOD'] == 'POST') {

// Email is valid
if(checkmail($_POST['email'])) {
    $_SESSION['v_mail'] = $_POST['email'];
    $valid = true;} else { 
 $valid=false; return} //exit from the function if valid is false

// username is valid
if(checkuser($_POST['username'],5,10)) {
    $_SESSION['v_username'] = $_POST['username'];
    $valid=true;} else { $valid=false; }

}
抱歉,我错过了代码的一部分,但是我会以稍微不同的方式处理此问题:

$isMail = (checkmail($_POST['email'])) ? $_SESSION['v_mail'] = $_POST['email'] : false;
$isUser = (checkuser($_POST['username'],5,10)) ? $_SESSION['v_username'] = $_POST['username'] : false;
$valid = $isMail && $isUser;

或者将$\u会话变量移动到checkmail、checkuser函数,然后只需$valid=checkmail$\u POST['email']和&checkuser$\u POST['username'],5,10

false&&&$valid始终是false,true&&&$valid始终是$valid。不错的观点@icktoofay,顺便说一句,这是他要求的,所以我编辑成$valid=false和$valid。我试过,效果很好。如果我将添加另一个检查,我应该复制用户名检查,因为它是为了进一步检查,并只留下邮件验证,因为它是?@ AMRALI考虑使用波格丹提供的解决方案,这是更干净。顺便说一句,您只需要将$value初始设置为true,然后仅当您需要将其设置为false时才对其进行修改:毕竟,if语句会检查它是否为truefalse@FedericoPonzi i还有另一个代码来检查这些if语句的返回值。但我的问题是在检查所有if语句后返回true或false,这是您真正提供给我的。为什么要检查$\u服务器['REQUEST\u METHOD']?如果填写了$\u POST superglobal,则它始终是一个POST请求。检查是否存在$\u POST['email']和$\u POST['username']而改用。isset$\u POST['email'],$\u POST['username']谢谢您的帮助。我可以为表单添加一个名称,然后检查表单是否已提交。”IFAssetFormName{}否,只有name=attributes形式的东西是侧音:这是我见过的最不可读的缩进之一。你真的应该习惯一些更标准的使用换行和缩进的方法。这并不等同于如果checkuser失败,$\u会话['v\u mail']就不会被设置。
$isMail = (checkmail($_POST['email'])) ? $_SESSION['v_mail'] = $_POST['email'] : false;
$isUser = (checkuser($_POST['username'],5,10)) ? $_SESSION['v_username'] = $_POST['username'] : false;
$valid = $isMail && $isUser;