【问题标题】:PHP MYSQL input form requires a specific word to be inputtedPHP MYSQL 输入表单需要输入特定的单词
【发布时间】:2019-03-08 01:35:03
【问题描述】:

我有一个input box,我在其中输入了文件名。我希望input box 要求我或其他用户input 以及它是什么类型的文件。

例如,当我只是在input box 中输入this_is_name_of_file 并提交它。它应该返回false

只有当我将其键入为name_of_file.pdfname_of_file.docx 时,它是否可以接受,其中我键入带有file extension 的文件名。

这是我表单中的输入标签:

<label>File Name: </label> 
<input class="input2" type="text" name="filename" 
       placeholder="file.pdf/xlsx/xls/docx" required autofocus><br>

这是我的 php 文件:

$FName = $_POST['filename'];
$pdoQuery = "INSERT INTO `report`(`filename`) VALUES (:FName)";
$pdoResult = $pdoConnect->prepare($pdoQuery);
$pdoExec = $pdoResult->execute(array(":FName"=>$FName));

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    选择不多,但我会选择:

    $path_parts = pathinfo($_POST['filename']);//spits the variable in to parts to chewck
    
    if(empty($path_parts['extension'])){ //check for extension
        echo 'filename error';
    }else{
        $FName = $_POST['filename'];
        $pdoQuery = "INSERT INTO `report`(`filename`) VALUES (:FName)";
        $pdoResult = $pdoConnect->prepare($pdoQuery);
        $pdoExec = $pdoResult->execute(array(":FName"=>$FName));
    }
    

    【讨论】:

      【解决方案2】:

      如果您对浏览器验证感到满意(例如 required),您可以随时使用模式,例如

      <form>
      <input class="input2" type="text" name="filename" 
             placeholder="file.pdf/xlsx/xls/docx" required autofocus
             pattern=".+\.(pdf|xlsx?|docx)">
      <button>Try it</button>
      </form>

      【讨论】:

      • @JustinSaints 由于可以绕过此验证,因此您也应该始终验证服务器端
      • 不客气。请记住,任何客户端都可以被规避,因此最好也使用服务器端验证来支持这一点。此外,如果您需要不区分大小写的检查,请参阅HTML5 Input Pattern Case-Insensitivity
      猜你喜欢
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多