有条件的回声警告或确认

时间:2009-07-24 09:37:08

标签: php

我对执行的期望:

每次加载页面时都会调用函数Email()。如果$Valid存在Email(),则应返回 true false 。如果$Valid不存在,Email()会检查Postback()(示例:页面已提交,我们是第二次看到它了吗?),如果 true Validate()表单字段,并设置$Valid=1(对于 true )并发送mail()或设置$Valid=0(对于 false < / em>的)。

现在$Valid存在Email()应该在第二次调用时返回 true false ,例如通过函数如果mail()成功发送,则回显警告或确认消息。

发生了什么事?

最初调用$Valid时似乎没有设置

Email()所以当我们第二次调用Email()isset($Valid) if子句总是返回< EM>假

我真的希望你能提供帮助,我感谢任何答案,谢谢大家!

顺便说一句:我知道我们也可以“try”和“catchmail(),但我尽可能地减少了代码的复杂性,因此更容易消化!

以下是我需要帮助的代码:

function Validate(){
    if(!empty($_POST["From"])&&!empty($_POST["Body"])){
        return true;
    }else{
        return false;
    };
};
function Postback(){
    if(isset($_POST["Return"])){
        return true;
    }else{
        return false;
    };
};
function Email(){
    if(isset($Valid)){
        if($Valid!=0){
            return true;
        }else{
            return false;
        };
    }else{
        if(Postback()){
            if(Validate()){
                $Valid=1;
            }else{
                $Valid=0;
            };
        };
    };
};
Email();

2 个答案:

答案 0 :(得分:1)

如果希望在函数调用中保留其值,则需要将$Valid声明为静态,例如:

function Email() {
    static $Valid = null;
    if ($Valid !== null) {
        if($Valid!=0){
            return true;
        }else{
            return false;
        };
    } else {
        //etc.
    }
}

请参阅http://php.net/manual/en/language.variables.scope.php

请注意,不会跨HTTP请求保留该值,如果需要,您应该查看将数据存储在会话中。

答案 1 :(得分:0)

您需要以某种方式保留$ Valid跨页面加载,例如在会话变量中。