我有下一个问题:验证姓名、地址和电子邮件的代码有效,但验证图像的代码不起作用,也不知道为什么会这样。一如既往地打印"选择图像"
我做了一个测试,并设置了一行以使用"print $photo"打印图像的临时名称,但没有打印!
形式.php
<form id="formregister" name="formregister" action="register.php" method="post">
<input id="name" name="name" type="text"/>
<input id="address" name="address" type="text"/>
<input id="email" name="email" type="email" />
<input id="photouser" name="imguser" type="file"/>
<input id="bregister" name="bregister" type="submit" value="Registrer"/>
</form>
注册.php
..............
$name = $_POST['name'];
$address = $_POST['address'];
$email = $_POST['email'];
$photo = $_FILES['imguser']['tmp_name'];
$errors = array();
if(!isset($photo)) {
$errors[] = "Select an image";
} else {
$fototemp = addslashes(file_get_contents($_FILES['imguser']['tmp_name']));
$fotoname = addslashes($_FILES['imguser']['name']);
$fotosize = getimagesize($_FILES['imguser']['tmp_name']);
if ($fotosize == false) {
$errors[] = "Invalid format";
}
}
//Code to validate the other fields (name, address, email)
....................
您缺少表单上文件上传的正确enctype
。应该是enctype='multipart/form-data'
<form id="formregister" name="formregister" action="register.php" method="post" enctype='multipart/form-data'>
与其直接访问辅助tmp_name
键,不如测试是否先设置了辅助键以避免未定义的索引通知:
if (isset($_FILES['imguser']) {
$photo = $_FILES['imguser']['tmp_name'];
}