【问题标题】:How to prevent empty form submission when uploading images?上传图片时如何防止空表单提交?
【发布时间】:2014-03-26 10:12:49
【问题描述】:

我有一个用于上传图片的脚本(是的,我知道它在折旧的 mysql 中)。如何防止在用户上传图片之前提交表单?我试过使用 if (empty) 但不明白如何让它为图像工作。

(我正在使用 javascript 来设置上传按钮的样式)

<?php
session_start();
include "connect.php";
//require("checkLoginSession.php");
$message = $_GET['message'];
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$path = "uploads/" . $_FILES["file"]["name"];
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
    echo '<img src="'.$path.'" alt="" />';

    if (file_exists("uploads/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "uploads/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "uploads/" . $_FILES["file"]["name"];
      }
    }
}

$Link = mysql_connect($Host, $User, $Password);
$user = $_SESSION['UserName'];
$Query = "INSERT INTO $Table_3 VALUES ('0','".mysql_escape_string($user)."','{$path}')";
?>

<form action="upload_file.php?CreateRecord=1" method="post" enctype="multipart/form-data" name="form1" id="genericForm">
<div class="uploadimgbtn" onclick="getFile()"><p class="upload">Upload Image</p></div>
<div style='height: 0px;width: 0px; overflow:hidden;'><input id="upfile" type="file" name="file" onchange="sub(this)"/></div>
<input type="submit" value='submit' >
</form>

【问题讨论】:

  • 这是一个javascript客户端问题。 PHP 不能做任何事情来阻止“空表单”提交,因为根据定义,PHP 代码在提交发生之前无法运行。此外,您很容易受到 SQL 注入攻击和使用此代码的全部远程服务器危害。

标签: php mysql image forms submit


【解决方案1】:

试试这个:

<script type="text/javascript">
function check(){
    var file = document.getElementById('upfile');
    if(file.value === null || file.value === ""){
        alert('THERE'S NO FILE');
        return false;
    }
    else{
        alert('FILE IS UPLOADED');
        return true;
    }
    }

</script>

然后,您只需调用提交按钮上的函数。

<input type="submit" value='submit' onclick='return check();'>

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 2019-07-16
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2017-07-11
    相关资源
    最近更新 更多