php-表单操作

1.回顾:上篇讲了 php的函数,数组,全局变量和超全局变量

2.超全局变量$_GET 和 $_POST 用于收集表单数据 (form-data)

  
echo $_POST['name'];
echo $_POST['email'];
echo $_GET['name'];
echo $_GET['email'];
 
3.测试HTML为:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>php</title>
        <style>
            .error {
                margin-left: 5px;
               color: #f00;
               font-family: 'Adobe Arabic';
               font-size: 12px;
            }
        </style>
    </head>
    <body>
       <hr>
       <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
                Name: <input type="text" name="name" value="<?php echo $name;?>"><span class="error"><?php echo $nameerr;?></span><br><br>
            E-Mail: <input type="text" name="email" value="<?php echo $email;?>"><span class="error"><?php echo $emailerr;?></span><br><br>
            Website:<input type="text" name="website" value="<?php echo $website;?>"><span class="error"><?php echo $websiteerr;?></span><br><br>
            Comment:<textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea><span class="error"><?php echo $commenterr;?></span><br><br>
            Gender: <input type="radio" name="gender" checked <?php if(isset($gender)&&$gender=="女") echo "checked";?> value="女">女
                    <input type="radio" name="gender" <?php if(isset($gender)&&$gender=="男") echo "checked";?> value="男">男<br><br>
                    <input type="submit"><br>
        </form>

        <hr>

      Welcome , <?php echo $_POST['name'];?> !<br>
      你的邮箱地址是:<?php echo $_POST['email']?> .
        
      Welcome , <?php echo $_GET['name'];?> !<br>
      你的邮箱地址是:<?php echo $_GET['email']?> .
     
    </body>
</html>

4.表单action 注意事项
#02.表单action
     #$_SERVER['PHP_SELF'] 是一种超全局变量,返回当前执行的文件名
     #用$_SERVER['PHP_SELF'] 是将表单数据发送到页面本身,而不是转到另一个页面
     #这样用户就可以获得错误提示信息
     #什么是htmlspecialchars()函数?
     #htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 
     #HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
  <span style="color:#ff0000;"> echo htmlspecialchars($_SERVER['PHP_SELF']);
   echo $_SERVER['PHP_SELF']; 
     #避免$_SERVER['PHP_SELF']被黑客利用:通过使用htmlspecialchars($_SERVER['PHP_SELF']);</span>
 
5.验证表单操作:保存url和邮箱
 #03.PHP 验证表单数据
     #03.1 使用htmlspecialchars()函数所有变量
     #03.2 使用trim() 函数 去除用户输入数据中不必要的字符
     #03.3 使用stripsalshes()函数 删除用户输入数据中的反斜杠 \
     #03.4 可以创建一个测试检测函数,提高效率
     #03.5 判读后,需要提醒用户输入错误

   //声明表单字段
   $name=$email=$gender=$comment=$website="";
   //声明错误信息
   $nameerr=$emailerr=$gendererr=$commenterr=$websiteerr="";

  function test_input($data){
      $data=trim($data);
      $data=stripcslashes($data);
      $data=htmlspecialchars($data);
      return $data;
  }
  
   
   //03.6.使用test_input函数验证防止黑客注入,和判断是否正常数据
   //03.7.使用empty()函数,判断是否为空
   //03.8.判断 邮箱格式和URL格式
   if($_SERVER["REQUEST_METHOD"]=="POST"){
      if(empty($_POST["name"])){
          $nameerr=" * 姓名不能为空";
      }else{
        $name=test_input($_POST["name"]);
      }
      if(empty($_POST["email"])){
         $emailerr=" * 邮箱不能为空"; 
      }else{
         $email=test_input($_POST["email"]);
         //在这里判断邮箱
         if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
            $emailErr = "无效的 email 格式!"; 
        }
      }
      if(empty($_POST["comment"])){
         $commenterr="* 内容呢";
      }else{
         $comment=test_input($_POST["comment"]);
      }
      if(empty($_POST["website"])){
         $websiteerr=" * 请输入正确网址";
      }else{
        $website=test_input($_POST["website"]);
        //判断网址是否正确
        if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
              $websiteErr = "无效的 URL"; 
         }
      }
       $gender=test_input($_POST["gender"]);  
   }

   #04 用户提交表单后保留输入字段中的值
   #在 comment 文本框字段中,我们把脚本放到了 <textarea> 与 </textarea> 之间。这些脚本输出 $name、$email、$website 和 $comment 变量的值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值