0
<?php
if(isset($_POST['Submit'])){

$name=trim($_POST["name"]);


if($name == "" ) {
$error= "error : You did not enter a name.";
$code= "1" ;
}

?>

このような私のhtmlフォームは正確ではありません。この部分では、m の意味がわかりません<?php if(isset($code) && $code == 1)

<html>
<?php if (isset($error)) { echo "<p class='message'>" .$error. "</p>" ;} ?>
<style type="text/css" >
.error{border:1px solid red; }
.message{color: red; font-weight:bold; 
}
</style>
<tr>
<td width= "82" >Name: </td>
<td width= "238" ><input name= "name" type= "text" <?php if(isset($code) && $code == 1){echo "class=error" ;} ?> ></td>
</tr>
<tr>

また、助けが必要です:クライアント側でjavascriptが無効になっている場合、1つのページでjsとサーバー側の検証(このスクリプト)の両方を使用しても問題ありません..??? どのように??...提案はいつでも歓迎します...

4

1 に答える 1

1

私はあなたの質問を 100% 理解しているわけではありませんが、答えるために最善を尽くします。PHPを介してフォーム送信時に値を検証する方法について言及していると思います。

標準の POST または GET を使用して、jQuery なしでこれを行うことができます。

form.html

<html>
<head>
   <title>Form Page</title>
</head>
<body>
  <form action="validation.php" method="POST">
     <input type="text" name="email" />
  </form>
</body>
</html>

検証.php

 <?php

  $email = $_POST['email'];

  //any validation here (this validates if email has @ sign)
  $is_valid = strpos($email, "@");
  if($is_valid === false){
         //@ sign is not in string thus email is invalid, send message
        echo "Error";
   } else{
       //is valid
       echo "Valid";
   }

   ?>

$_POST は、ポストされた変数を受け取るために使用されます。$_GET は、GET メソッドで送信される変数を受け取るために使用されます。GET メソッドは、URL を介してクエリ文字列としてデータを送信します。したがって、セキュリティ リスクが生じるため、機密情報には使用しないでください。

AJAX を使用して最新の jQuery メソッドを使用することもできるため、ページ全体を再読み込みして検証することはありません。

form_jquery.html

<html>
<head>
   <title>Form Page</title>
   <script src="http://code.jquery.com/jquery-1.9.0.min.js" type="text/javascript"></script>
   <script type="text/javascript">
       $(document).ready(function(){
           $("form").submit(function(){
                   //do javascript validation here

                   //do php validation here
                   $.post("validation.php", {email: $("#email").val()}, function(data){
                          alert(data); //validation msg
                   }, "text");
            });
       });
   </script>
</head>
<body>
  <form>
     <input id="email" type="text" name="email" />
  </form>
</body>
</html>

クライアントで JavaScript が無効になっている場合、JavaScript クライアント検証または jQuery を使用できません (jQuery は JavaScript フレームワークです)。サーバー側のみ使用できます。

このコードへの応答:

if(isset($code) && $code == 1) 

isset は、$code に値がある (つまり、null でない) かどうかをチェックし、$code == 1 は、$code が 1 に等しいかどうかを評価するためにチェックします。その条件が満たされた場合、CSS クラス「エラー」を入力テキスト ボックスに赤い枠線を付けます。

あなたの例を適用すると、jQuery が最適です。

name_jquery.html

<html>
<head>
   <title>Form Page</title>
   <script src="http://code.jquery.com/jquery-1.9.0.min.js" type="text/javascript"></script>
   <style type="text/css">
      .error{border:1px solid red; }
   </style>
   <script type="text/javascript">
        $(document).ready(function(){
           $("form").submit(function(){
                   //do javascript validation here

                   //do php validation here
                   $.post("validation.php", {email: $("#name").val()}, function(data){
                         if(data.error == "1"){ //1 means error
                              $("#name").addClass("error");
                              $("body").append("<p id=\"error\">"+data.message+"</p>");
                         } else{
                              alert('your form is valid');
                              //clear css error class in case was invalid before
                              $("#name").removeClass("error");
                              $("#error").remove();
                         }
                   }, "json");
            });
       });
   </script>
</head>
<body>
  <form>
     <input id="name" type="text" name="name" />
  </form>
</body>
</html>

検証.php

<?php

  $name=trim($_POST["name"]);

  if(empty($name)) {
      $error= "error : You did not enter a name.";
      $code= "1" ;
  } else{
      $code = "0";
  }

  echo json_encode("error"=> $code, "message"=>$error); 

   ?>
于 2013-01-17T22:51:27.157 に答える