0

フィールドを検証するためにいくつかのjavascriptとphpコードが書かれています。どちらのコードも、フィールドが空でないかどうか、35 文字の制限内であるかどうか、および英字とハイフン (-) のみが含まれているかどうかを検証するためのものです。私がやりたいことは、javascript と php の両方が同時に検証され、間違ったデータを入力したことを示すメッセージを表示することですが、アラートがポップアップするがメッセージが表示されないという事実のために、javascript が適切に検証されているように見えます。 php側。これが私のコードです:

<script type="text/javascript">

function validateFamily()
{
var family=document.getElementById('family');
var stringf = document.getElementById('family').value;
var ck_password =  /^[A-Za-z-]/;
if (family.value=="")
    {
     alert("Family name must be filled out");
     return false;
    }
else if (document.getElementById('family').value.length > 35)
    {
        alert("Family name cannot be more than 35 characters");
        return false;
    }
else if(!ck_password.test(stringf))
    {
        alert("Family name can only contain alphabetic characters and hypehns(-)");
        return false;
    }
    return true;
}

 </script>

 <?php

if (isset($_POST['submit'])) {

$flagf = false;
$badcharf = "";
$stringf = $_POST["family"];
$stringf = trim($stringf);
$lengthf = strlen($stringf);
$strmsgf = "";

if ($lengthf == 0) {
$strmsgf = '<span class="error"> Please enter family name</span>';
$flagf = true;}
else if ($lengthf > 35) {
$strmsgf = '<span class="error"> Can not enter more than 35 characters</span>';
$flagf = true;}
else {
for ($if=0; $if<$lengthf;$if++){
    $cf = strtolower(substr($stringf, $if, 1));
    if (strpos("abcdefghijklmnopqrstuvwxyz-", $cf) === false){
        $badcharf .=$cf;
        $flagf = true;
    }
}
if ($flagf) {
    $strmsgf = '<span class="error"> The field contained the following invalid characters: '.$badcharf.'</span>';}
}
if (!$flagf) {
    $strmsgf = '<span class="error"> Correct!</span>';}

}

?>

<form name="eoiform" method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="eoi" onsubmit="return validateFamily() && validateGiven() && validateMaleFemale() && validDate() && validateAddress() && validatePost() && validateParent() && validateWork() && validateHome() && validateMob() && validateCheckBoxes() && validateTextBoxes();">

<b>Student's Family Name</b> 
<br>
<input type="text" id="family" name="family" /><?php echo $strmsgf; ?>

<input type="submit" name="submit" id="submit" value="submit" />

</form>

誰でもこれで私を助けることができますか?

4

3 に答える 3

5

JavaScript と PHP を同時に実行することはできません。前者はフォームが POST される前にユーザーのブラウザーで発生し、後者はフォームがサーバーに到達した後に発生するためです。

これは、ブラウザで Web ページのソース コードを調べることで確認できます。PHP はありません。

JavaScript がキャッチすると、サーバーには何も送信されませんreturn false。実際には、次の場合にサーバー側のチェックを行うことは理にかなっています。

  1. 誰かが巧妙で、フォームが検証された後、送信される前にフォームを変更します。
  2. JavaScript が無効になっているか、何らかの理由で壊れています。
于 2013-05-30T16:48:30.437 に答える
0

このフォームが機能する方法は、フォームの onsubmit プロパティに JS 関数があり、値が間違っている場合にフォームの送信を防ぐことができるということです。エラーのために JS 関数が false を返す場合、フォームは送信されません。

必要な機能を得るには、サーバー側でのみチェックを実行する必要がありますが、それが発生するたびにフォームを送信する必要があります...

別の方法は、ユーザーが各テキスト フィールドに値を追加し終わったときに入力された値をチェックすることです。つまり、JS 関数をフィールドの blur() プロパティにアタッチし、サーバーに AJAX 呼び出しを行い、フォームが実際に送信される前のフィールドの内容。

クライアント側でも実行できる場合は、jQuery の検証プラグインを使用して、より複雑な検証を行うことができます。

http://jqueryvalidation.org/

于 2013-05-30T16:50:55.467 に答える
0

paislee が述べたように、php と javascript を同時に実行する方法はありません。ただし、いくつかの php コードを実行するために送信できる動的要求があり、それは AJAX と呼ばれます。これにより、完全に正確な同時実行が保証されるわけではありませんが、目的に近づくことになります。

于 2013-05-30T16:51:07.673 に答える