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

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


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

?>

我的 html 表单不完全是这样。在这部分中,我没有得到什么是意思<?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 时,是否可以在一页中同时使用 js 和服务器端验证(此脚本)..??? 怎么样??...建议总是欢迎...

4

1 回答 1

1

我不是 100% 理解你的问题,但会尽力回答。我相信您指的是如何通过 PHP 验证表单提交的值。

您可以使用标准的 POST 或 GET 以不使用 jQuery 的旧方式执行此操作

表单.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 是否有值(即不为空), $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 回答