我对执行的期望:
每次加载页面时都会调用函数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
”和“catch
”mail()
,但我尽可能地减少了代码的复杂性,因此更容易消化!
以下是我需要帮助的代码:
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();
答案 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跨页面加载,例如在会话变量中。