-1

フォームデータを検証する次のコードがあります。さまざまなグループを検証する関数を作成し、これらの関数が true を返すかどうかを確認する if isset ステートメントを作成しました。これを機能させるために、さまざまな方法を試しました。

私が抱えている問題はこれです。FALSEを返す場合、if issetを終了させたい。しかし、そうではなく、継続して次のアラートをポップアップ表示します (私のコードには多くの関数があります)。最初にFALSEが返された後に終了するにはどうすればよいですか? isset を関数にする必要がありますか? したがって、FALSE が返されたときに終了できます。ありがとう

PHPで関数を呼び出す関数を書くのに問題があります。

function namecheck ($fname, $lname) 
{
    $regexp ="/^[A-Za-z]+$/";
    //filter through names 
    if (preg_match($regexp,$fname,$lname)) 
    {
        return TRUE; 
    }
    else 
    {
        echo'<script type="text/javascript">alert("Enter your names.")</script>';
        return FALSE; 
    }
}

function emailcheck ($email1, $email2) 
{
    $regexp="/^[a-zA-A-Z0-9_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$/";
    //validate email address    
    if (preg_match($regexp,$email1,$email2)) 
    {
        return TRUE; 
    }
    else 
    {
        echo '<script type="text/javascript">alert ("Enter a valid email address.")</script>';
        return FALSE; 
    }
}

$fname=$_POST['fname'];
$lname=$_POST['lname'];
$namecheck=namecheck($fname,$lname);
$email1=$_POST['email1'];
$email2=$_POST['email2'];
$emailcheck=emailcheck($email1,$email2);

if (isset($_POST['submit'])) 
{
    if ($namecheck !==TRUE)
    {
        return FALSE;
    }
    elseif ($emailcheck!==TRUE)
    {
        return FALSE;
    } //and so on..
    else
    {
        return TRUE;
    }
}
4

3 に答える 3

2

従うことができる関数の一般的な構造は、次のようなものです。

function validateName($name) {
   // Do Validation. Return true or false.
}

function validateEmail($email) {
   // Do Validation. Return true or false.
}

function isFormValid() 
{
   // Name Validation
   if( ! validateName( $_POST['name'] ) )
      return false;

   // Email Validation
   if( ! validateEmail( $_POST['email'] ) )
      return false;

   // Form is valid if it reached this far.
   return true;
}

// In your regular code on Form Submit
if( isset($_POST['submit']) )
{
   if( isFormValid() ) {
      // Save Form Data to DB
   } else {
      // Show Some Errors
   } 

}

その一般的な構造はうまくいくはずです。もっと良くすることができますが、学習のためにはこれで十分です。

于 2013-08-02T17:47:36.660 に答える