【发布时间】:2019-06-30 06:02:03
【问题描述】:
我正在为学校运行一个小型 PHP 项目,我正在尝试设置一个表单,用户可以在其中上传个人资料图片。
我尝试使用 W3Schools,但无法让它与我的代码一起使用。 这是该页面的链接:https://www.w3schools.com/php/php_file_upload.asp
首先我声明一些变量:
$target_dir = "profilepic/";
$target_file = $target_dir . basename($_FILES["image_to_upload"]["name"]);
然后我将上传的文件移动到正确的目录。注册后使用以下命令对其进行检查:
move_uploaded_file($_FILES["image_to_upload"]["tmp_name"], $target_file);
我已经在表单中设置了参数,所以用户只能选择图像文件:
<form action='index.php' method='post' enctype='multipart/form-data'>
<input type= 'text' name='leerlingid' placeholder='Username' required>
<input type= 'text' name='mail' placeholder='Email Address' required>
<input type= 'password' name='wachtwoord' placeholder='Password' required>
<input type= 'password' name='wachtwoordcheck' placeholder='Password confirmation' required>
<input type= 'text' name='voornaam' placeholder='First name' required>
<input type= 'text' name='achternaam' placeholder='Last name' required>
<select name='sekse'>
<option value='Man'>Man</option>
<option value='Vrouw'>Vrouw</option>
</select>
Profile picture:
<INPUT id='image_to_upload' NAME=image_to_upload' TYPE='file' accept='image/x-png,image/gif,image/jpeg' required>
<input type='submit' name='reg' value='Register'>
</form>
wachtwoord 是密码
leerlingid 是用户名
voornaam 是名字
achternaam 是姓氏
sekse 是性
这个项目是荷兰语的,所以很抱歉荷兰人的名字。
表单运行正确,我得到 0 个错误,但在用户注册后没有文件上传。 我使用的是学校服务器,但如果我是正确的 $target_dir 应该从放置 form.php 的位置开始。
我不知道 ini 文件中的 file_uploads = On 是否,但我可以从 FileZilla 上传我的文件,所以我认为是。 (虽然我无权访问该文件,所以我无法检查或更改它)。
如果有人能指出为什么它不起作用,那将是一个很大的帮助。
编辑:
我现在也尝试了这段代码:
$upload = move_uploaded_file( $_FILES["image_to_upload"]["tmp_name"], $target_file );
if( $upload ) {
header("Location: good.php");
} else {
header("Location: error.php");
//echo "Error:" . $_FILES["image_to_upload"]["error"];
}
但我的代码完全跳过了这一点。还是不上传图片,直接进入确认注册页面。
编辑:我解决了我的问题。看看我的另一个回答。它包含我的错误。
【问题讨论】:
-
“我不知道 ini 文件中的 file_uploads = On” - 然后找出 - ini_get 或 phpinfo。 “但我可以从 filezilla 上传我的文件,所以我认为是这样” - 这两件事完全没有任何关系。
-
"我已经在表单中设置了参数,所以用户只能选择图像文件" 注意!客户端的代码很容易被篡改,如果您不检查服务器端的文件(在您的 php 代码中),黑客可能会上传恶意代码来接管您的服务器。
-
您的文件上传字段的名称是not
image_to_upload。修复您的 HTML。 -
嗯,谢谢,我会试试的,就像我说的我不确定,所以谢谢你的澄清。 @Null 它仅适用于学校项目,因此除非我的老师想要破解我的网站,否则这并不是真正的问题,因为它不是作业的一部分,我只是想要更高的成绩。谢谢,我没看到
-
To
NAME='image_to_upload', orNAME="image_to_upload", orNAME=image_to_upload… 只是 not 在末尾带有一个属性值分隔符,在从 - 开始,因为这目前使它成为属性值的一部分。