2009-07-24 9 views
0

実行時に期待する内容:エコー警告または条件の確認

機能Email()は、ページが読み込まれるたびに呼び出されます。 $Validが存在する場合Email()のいずれかを返します。またはfalseのいずれかを返します。 $ValidEmail()チェックPostback()存在しない場合(例:ページが送信されており、我々は、第二の時間のためにそれを見ている?)とValidate()は、フォームフィールドをSとのいずれか(用)$Valid=1を設定し、もしmail()を送信するか、$Valid=0)を設定します。今

$ValidEmail()がちょうど二度目に呼ばれる偽を返すべき存在、mail()が正常に送信されたりされていない場合、警告や確認メッセージをエコーする機能により、たとえば言います。

何が起こっているか

$ValidEmail()が最初に私たちが二度目Email()を呼び出すときにisset($Valid)if句は常にを返す呼び出されたときにそれはそう設定されていません。

私が本当に助けてくれることを願っています。私は、どんな答えでもありがとうと感謝します。

はところで:私は「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(); 

答えて

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を参照してください。 :

Sessioにデータを格納することを検討する必要がある場合は、値がHTTP要求を超えて保持されないことに注意してくださいn。

+0

うわー、素晴らしい!ありがとうございます! – Jay

0

$ページロードの間に何らかの形で$を保持する必要があります。セッション変数に格納します。

関連する問題