【发布时间】: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