php实现表单验证

<?php 
//解决代码else繁琐问题
function postback(){
    //php函数里面的变量外面不能访问
    //要把外面要访问的变量变成全局变量
    //方法一
    GLOBAL $message;
    //方法二:
    //把所有函数里的变量换成$GLOBALS['message']
    if (empty($_POST['username'])){
        $message= '请输入账号';
        return;//满足任何一条不符合的条件函数就不再往下执行
    }
    if (empty($_POST['password'])){
        //把信息用变量存起来
        $message= '请输入密码';
        return;
    }
    if(empty($_POST['confirm'])){
        $message= '请输入确认密码';
        return;
    }
    if($_POST['confirm']!==$_POST['password']){
      $message= '两次输入的密码不一致';
      return;
    } 
     if(!(isset($_POST['agree'])&&$_POST['agree']==='on')){
         $message='必须同意注册协议';
         return;
     }
    $message='注册成功';
    $username=$_POST['username'];
    $password=$_POST['password'];
    //让以后的账号和密码自动追加,并且以换行隔开,账号和密码通过|隔开
    file_put_contents('users.txt', $username .'|'.$password . "\n",FILE_APPEND);
}


if($_SERVER['REQUEST_METHOD']=='POST'){
    postback();//函数不执行不影响后面的代码执行
}   


 ?>
 <!doctype html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Document</title>
 </head>
 <body>
     <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
         <table border="1" cellpadding="1" cellspacing="1">
             <tr>
             <!-- label用的是锚点定位,当点击汉字时,光标自动跳到input里面 -->
                 <td><input type="text" name="username" id="username" value="<?php echo isset(
                 <td><label for="username">账号</label></td>$_POST['username'])?$_POST['username']:'' ;?>"></td>
             </tr>
             <tr>
                 <td><label for="password">密码</label></td>
                 <td><input type="text" name="password" id="password"></td>
             </tr>
             <tr>
                 <td><label for="confirm">确认账号</label></td>
                 <td><input type="text" name="confirm" id="confirm"></td>
             </tr>
            <tr>
                 <td></td>
                 <td><label><input type="checkbox" name="agree">同意注册</label></td>
             </tr>
             <?php if (isset($message)): ?>
                <!-- 先判断这个message存不存在,如果存在的话在这个表格中显示错误信息 -->
                 <tr>
                     <td></td>
                     <td><?php echo $message ;?></td>
                 </tr>
             <?php endif ?>
             <tr>
                <td></td>
                <td><button>登录</button></td>      
             </tr>
         </table>
     </form>
 </body>
 </html>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,在HTML中编写表单和相关的输入元素,如下所示: ``` <form id="myForm"> <label for="email">Email:</label> <input type="email" id="email" name="email" required> <span id="email-error"></span> <br><br> <label for="password">Password:</label> <input type="password" id="password" name="password" required> <span id="password-error"></span> <br><br> <button type="submit">Submit</button> </form> ``` 然后,使用Ajax发送表单数据和验证请求。在这个例子中,我们使用jQuery来简化Ajax的编写。 ``` $(document).ready(function() { $('#myForm').submit(function(event) { // 防止表单默认提交行为 event.preventDefault(); // 发送Ajax请求 $.ajax({ type: 'POST', url: 'validate.php', data: $(this).serialize(), success: function(data) { // 处理验证结果 if (data.emailError) { $('#email-error').text(data.emailError); } else { $('#email-error').empty(); } if (data.passwordError) { $('#password-error').text(data.passwordError); } else { $('#password-error').empty(); } } }); }); }); ``` 最后,在服务器端编写验证逻辑,如下所示: ``` <?php // 获取表单数据 $email = $_POST['email']; $password = $_POST['password']; // 验证表单数据 $errors = array(); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors['emailError'] = 'Invalid email address'; } if (strlen($password) < 8) { $errors['passwordError'] = 'Password must be at least 8 characters long'; } // 返回验证结果 echo json_encode($errors); ?> ``` 注意,在上面的代码中,我们使用了PHP的filter_var函数来验证Email地址的格式,以及使用了strlen函数来验证密码的长度。你可以根据自己的需要编写更多的验证逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值