用PHP上传文件
我已经用各种编程语言编程多年了。我也有一些标记和脚本语言的经验。不过我对PHP还是新手。我正在努力为我爸爸修复他的网站,我在这过程中学到了很多东西。我已经解决了很多问题,但目前仍处于困境。我爸爸使用的PHP主机从5.1升级到5.4,网站瘫痪了。我注意到其中一个变化是现在需要定义变量。我修复了很多功能,但我在修复允许websit用户将图片上传到服务器的部分时遇到了问题。文件没有上传,我不知道为什么。 以下是PHP:用PHP上传文件,php,html,post,upload,Php,Html,Post,Upload,我已经用各种编程语言编程多年了。我也有一些标记和脚本语言的经验。不过我对PHP还是新手。我正在努力为我爸爸修复他的网站,我在这过程中学到了很多东西。我已经解决了很多问题,但目前仍处于困境。我爸爸使用的PHP主机从5.1升级到5.4,网站瘫痪了。我注意到其中一个变化是现在需要定义变量。我修复了很多功能,但我在修复允许websit用户将图片上传到服务器的部分时遇到了问题。文件没有上传,我不知道为什么。 以下是PHP: $file = $_POST['file']; $file_name = $_PO
$file = $_POST['file'];
$file_name = $_POST['file']['name'];
if ($file && $file_name)
{
if ($_FILES['file']['size']>$maxsize) $status = "Error: Picture size too large. Max file size is $maxsize bytes.<br>";
if (($_FILES['file']['type']!="image/gif") && ($_FILES['file'] ['type']!="image/jpeg") && ($_FILES['file']['type']!="image/jpg") && ($_FILES['file'] ['type']!="image/png")) $status .= "Error: Wrong file type. Must be JPG or GIF only.<br>";
$picext = substr($file_name,-3);
$picext = strtolower($picext);
if ((!isset($status)) && ($picext!="gif") && ($picext!="jpg") && ($picext!="png")) $status .= "Error: Wrong file type. Must be JPG or GIF or PNG only.<br>";
}
if (!isset($status)){
//die("write".$id);
$email = $_POST['email'];
$aim = $_POST['aim'];
$icq = $_POST['icq'];
$yahoo = $_POST['yahoo'];
$homepage = $_POST['homepage'];
$myip = $_POST['myip'];
if (!$myip) $myip = $ip;
$email2 = $_POST['email2'];
$password = $_POST['password'];
$title = $_POST['title'];
$download = $_POST['download'];
$approved = $_POST['approved'];
$allowdelete = $_POST['allowdelete'];
$author = $_POST['author'];
$facebook = $_POST['facebook'];
$piclink = $_POST['piclink'];
$domain = $_POST['domain'];
$option3 = $_POST['option3'];
$secret = $_POST['secret'];
$q= "insert into $table values('', '$email', '$aim', '$icq', '$yahoo', '$homepage', '0','0', '0', '0', '0', '0', '', now(),'$myip','$email2','$password','$title','$download','$approved','$allowdelete','$auth or','$facebook','$piclink','$domain','$option3','$secret')";
$result = mysql_query($q) or die("Failed: $sql - ".mysql_error());
$q = "select max(id) from $table";
$result = mysql_query($q);
$resrow = mysql_fetch_row($result);
$id = $resrow[0];
$picext = "png";
$q = "update $table set picfile = '".$id.".".$picext."' where id='$id'";
$result = mysql_query($q);
$file = $_POST['file'];
@copy($file, "../pics/".$id.".".$picext);
$picfile=$id.".".$picext;
$act = "update"; //set mode back to update
Header("Location: newadmin.php?id=$id");
}
$file=$\u POST['file'];
$file\u name=$\u POST['file']['name'];
如果($file&&$file\u name)
{
如果($_FILES['file']['size']>$maxsize)$status=“错误:图片大小太大。最大文件大小为$maxsize字节。
”;
如果($U文件['file']['type']!=“image/gif”)和($U文件['file']['type']!=“image/jpeg”)&($U文件['file']['type']!=“image/jpg”)&($U文件['file']['type']!=“image/png”)$状态。=“错误:错误的文件类型。必须是jpg或gif格式。”;
$picext=substr($file\u name,-3);
$picext=strtolower($picext);
如果((!isset($status))&&($picext!=“gif”)&&($picext!=“jpg”)&&($picext!=“png”))$status.=“错误:文件类型错误。必须仅为jpg或gif或png。
”;
}
如果(!isset($status)){
//死(“写“..$id”);
$email=$_POST['email'];
$aim=$_POST['aim'];
$icq=$_POST['icq'];
$yahoo=$_POST['yahoo'];
$homepage=$_POST['homepage'];
$myip=$_POST['myip'];
如果(!$myip)$myip=$ip;
$email2=$_POST['email2'];
$password=$_POST['password'];
$title=$_POST['title'];
$download=$_POST['download'];
$approved=$_POST['approved'];
$allowdelete=$_POST['allowdelete'];
$author=$_POST['author'];
$facebook=$_POST['facebook'];
$piclink=$_POST['piclink'];
$domain=$_POST['domain'];
$option3=$_POST['option3'];
$secret=$_POST['secret'];
$q=“插入$table值(''''$email','$aim','$icq','$yahoo','$homepage','0','0','0','0','0','0','',now(),'$myip','$email2','$password','$title','$download','$approved','$allowdelete','$auth','$facebook','$piclink','$domain','$option3','$secret'”;
$result=mysql\u query($q)或die(“失败:$sql-”.mysql\u error());
$q=“从$table中选择最大值(id)”;
$result=mysql\u查询($q);
$resrow=mysql\u fetch\u row($result);
$id=$resrow[0];
$picext=“png”;
$q=“更新$table set picfile=”“$id.”“$picext。”“其中id=”$id“;
$result=mysql\u查询($q);
$file=$_POST['file'];
@复制($file,“../pics/”$id.“..$picext”);
$picfile=$id.“..$picext;
$act=“update”//将模式设置回更新
标题(“Location:newadmin.php?id=$id”);
}
以下是表单html代码:
<td width="91"><div align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">Upload
Picture:</font></div></td>
<td width="403"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">
<form name='file' method='post' enctype="multipart/form-data" action="newadmin.php">
<input name="file" type="file" size="50" maxlength="50">
</form>
</font></td>
<td width="200"> </td>
<td width="18"> </td>
</tr>
<tr>
<td width="91">
<div align="right"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">
<!-- update & create button -->
<button type='submit' name='submit' value='Submit'><img src='../images/formbutton.gif' width='40' height='40' /><?echo $tag;?>
上传
图片:
任何帮助都将不胜感激。如果这有帮助,由于错误日志中的某些原因,$picext未设置。但是如果我放入“$picext=“png”;”文件仍然无法上载。尝试使用
$file = $_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], "../pics/".$id.".".$picext);
而不是
$file = $_POST['file'];
将前两行更改为:
$file = $_FILES['file'];
$file_name = $_FILES['file']['name'];
以下几行:
$file = $_POST['file'];
@copy($file, "../pics/".$id.".".$picext);
致:
你有没有试过制作一个简单的文件上传程序,看看问题是出在这段代码还是主机升级上?我没有,但是Krish R.下面的答案让它起作用了。非常感谢。这真是太棒了!非常感谢克里斯·R。!新代码有什么不同之处?有些主机可能会禁用securityAh的
copy()
功能。它的安全漏洞是什么?它们几乎禁用了所有文件处理功能它是$\u文件
而不是$\u文件
$file = $_FILES['file'];
move_uploaded_file($file['tmp_name'],"../pics/".$id.".".$picext);