【问题标题】:POST variable verificationPOST 变量验证
【发布时间】:2021-08-22 22:09:48
【问题描述】:

我想建立一个简单的折扣系统。 我的想法是这样的:用户将输入代码,我想用 PHP 验证它并更新发票上的价格(可以做这部分,这就是为什么我只分享这部分代码)

我想看看你的解决方案,因为到目前为止,这根本不起作用,没有回应。

我的实际代码(HTML 表单):

      <form method = "post" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
     <table>
        <tr>
           <td>code:</td>
           <td><input type = "text" name = "code">
           <span class = "error"><?php echo $codeErr;?></span>
           </td>
        </tr>
            
        <td>
           <input type = "submit" name = "submit" value = "Submit"> 
        </td>
            
     </table>
        
  </form>

PHP 代码:

      <?php
  
  
  $codeErr = "";
  $code = "";
     
     if ($_SERVER["REQUEST_METHOD"] == "POST") {
         
         
         
         
        if (empty($_POST["code"])) {
           $codeErr = "Code can not be blank.";
        }else {
           $code = test_input($_POST["code"]);
        }
     }
     
     function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
        
        if ($code == "FIVE" ) {
           $codeErr = "OK";
        }else {
           $codeErr = "wrong code";
        }
     }
     
  ?>

【问题讨论】:

    标签: php verification discount


    【解决方案1】:

    这部分代码似乎不应该放在 test_input 函数中,因为该函数返回 $data 而这部分永远不会被调用。

    if ($code == "FIVE" ) {
       $codeErr = "OK";
    }else {
       $codeErr = "wrong code";
    }
    

    以下代码应按要求工作(未经测试):

    <?php
      
      
        $codeErr = "";
        $code = "";
         
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
             
            if (empty($_POST["code"])) {
               $codeErr = "Code can not be blank.";
            }else {
               $code = test_input($_POST["code"]);
            
               if ($code == "FIVE" ) {
                  $codeErr = "OK";
               }else {
                  $codeErr = "wrong code";
               }
            }
         }
         
         function test_input($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            return $data;
         }
         
      ?>
    

    【讨论】:

    • 谢谢!顺便说一句,您不知道如何编辑此代码以不通过任何 POST 触发,而仅通过提交此表单来触发。
    • @juliaroje86 如果您希望区分发布到您的 php 文件的表单,您可以 (1) 分离您的 php 文件,以便将每个表单提交到不同的 php 文件,并且每个文件负责一个表单, (2) 在查询字符串或表单中添加一个标识符(例如,您可以在查询字符串中添加 type=promo 或在表单中添加一个名为 type 和 valued promo 的不可见字段)并在脚本中检查这些值。
    猜你喜欢
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2015-04-21
    相关资源
    最近更新 更多