【问题标题】:Upload two/more images with PHP into MySQL使用 PHP 将两个或更多图像上传到 MySQL
【发布时间】:2013-10-10 22:48:32
【问题描述】:

我在解决这个问题时遇到了问题,基本上我有一个表格,其中包含图像(图像和图像 2)的字段,我正在重用代码并且在提交时可以正常上传联合国图像,但是第二个一个没有上传,当然也没有插入到数据库中。

<form action="../imgs/update_code.php" method="post" enctype="multipart/form-data" id="form1">

<input name="image1" type="file" />
<input name="image2" type="file" />

<input name="id" type="hidden" value="<?php echo $row_Recordset1['id']; ?>" />
<input name="submit" type="submit" value="submit" />
</form>

谁能告诉我这是否可以在一次提交中上传到不同的图像,或者我需要继续为每个表单上传一个图像(第一个表单上传/插入“image1”和第二个表单更新/上传“image2”)

<?php require_once('../admin/Connections/cnx.php'); ?>
<?php
ob_start();
$tabla='models';
$destino='../models.php';
mysql_connect($server,$user,$pass);
mysql_select_db($db);
function modificar($tabla,$id){
$strupdate='';
foreach($_POST as $k => $v){
if($k!='imageField_x' && $k!='imageField_y' && $k!='image1' && $k!='image2' &&          $k!='foto2' && $k!='foto3' && $k!='Submit'){
$v=(get_magic_quotes_gpc()) ? $v : addslashes($v);
$strupdate.= "$k='$v',";
}}
$strupdate=substr($strupdate,0,(strlen($strupdate)-1));
mysql_query("SET NAMES utf8");
mysql_query("update $tabla set $strupdate where id='$id'");
}
function reemplazaarchivo($archivo,$archivotemp,$tabla,$campoarchivo,$error,$id){
if($archivo!=''){
$qryant=mysql_query("select * from $tabla where id='$id'");
$rowant=mysql_fetch_array($qryant);
@unlink($rowant[$campoarchivo]);
$extension200=end(explode(".",strtolower($archivo)));
if($extension200!='jpg' && $extension200!='gif' && $extension200!='png' &&  $extension200!='doc' && $extension200!='zip' && $extension200!='pdf' && $extension200!='xls' && $extension200!='ppt' && $extension200!='swf'){
eval($error);exit;}
$foto2=md5(time()).$archivo;
copy($archivotemp,$foto2);
@chmod($foto2,0755);
mysql_query("update $tabla set $campoarchivo='$foto2' where id='$id'");
}
}
modificar($tabla,$_POST['id']);
reemplazaarchivo($_FILES['image1']['name'],$_FILES['image1']['tmp_name'],$tabla,'image1','',$_POST['id']);
for($i=1;$i<4;$i++){
reemplazaarchivo($_FILES['image1'.$i]['name'],$_FILES['image1'.$i]  ['tmp_name'],$tabla,'image1'.$i,'',$_POST['id']);
}
header("Location:$destino");
ob_end_flush();
?>

【问题讨论】:

  • 请,在您编写任何更多 SQL 接口代码之前,您必须阅读 proper SQL escaping 以避免严重的 SQL injection bugsaddslashes 不是有效的转义方法,mysql_query 不应在新应用程序中使用,它已从 PHP 中删除。像PDO is not hard to learn 这样的现代替代品。 PHP The Right Way 之类的指南将帮助您避免犯此类错误。
  • eval!? addslashes!? mysql!?您的代码充满了安全问题和非常糟糕的编码实践。扔掉这些垃圾,回到绘图板上……
  • 非常感谢您的评论,我进行了 php dreamweaver 培训,他们为我们提供了示例代码,我在不知不觉中重用了它。我会检查你的建议。

标签: php mysql


【解决方案1】:

你甚至谷歌? http://php.net/manual/en/features.file-upload.multiple.php

<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

另外,您的代码非常不清楚且不安全。请查看安全性。

【讨论】:

  • 感谢您的回复,我在谷歌上搜索了一个多星期,我找到了那个例子,但我无法实现。
  • 您在实际代码中所拥有的是输入字段的名称是相同的。所以它是覆盖。将其更改为数组或赋予它们不同的值。
猜你喜欢
  • 2016-05-28
  • 2015-01-01
  • 1970-01-01
  • 2020-10-10
  • 2012-02-28
  • 2018-08-26
  • 2015-05-25
  • 2016-03-13
  • 1970-01-01
相关资源
最近更新 更多