2014-12-25 158 views
-3

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

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。 我知道这是非常小的伎俩,但我无法得到它。

+0

为什么要检查'$ _SERVER ['REQUEST_METHOD']'?如果'$ _POST'超全局被填充,它总是一个POST请求。使用[isset()](http://php.net/isset)检查是否存在'$ _POST ['email']'和'$ _POST ['username']'。 'isset($ _ POST ['email'],$ _POST ['username'])' – MisterBla

+0

谢谢你的帮助。我可以为表单添加名称,然后检查表单是否已提交。 'if(isset(formname)){}' –

+0

不,只有具有'name =“”'属性的形式 – MisterBla

回答

0

试试这个:

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; } 

} 
+0

'false && $ valid'总是'false','true && $ valid'总是'$ valid'。 – icktoofay

+0

不错的一点@icktoofay,顺便说一句,这是他要求所以我编辑$有效=假和$有效。 –

+0

我试过了,它像一个魅力。如果我将添加另一个检查,我应该复制用户名检查,因为它是进一步检查,只是离开邮件验证,因为它是? –

0
if(checkmail($_POST['email']) && checkuser($_POST['username'],5,10)) { 
    $_SESSION['v_mail'] = $_POST['email']; 
    $_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; 

或移动$_SESSION变量为checkmailcheckuser函数,然后简单地$valid = checkmail($_POST['email']) && checkuser($_POST['username'],5,10)

+0

这不等同于'$ _SESSION ['v_mail']'如果'checkuser()'失败则不会被设置。 – fejese