【发布时间】:2016-06-12 21:20:10
【问题描述】:
我已经编写了这段代码,现在我已经把我的头撞到了墙上。
似乎代码无法验证文件的大小或扩展名!
我确实收到了文件和电子邮件。有人可以解释一下为什么我的验证失败了吗?
<?php
//Get the uploaded file information
$name_of_uploaded_file =
basename($_FILES['uploaded_file']['name']);
//get the file extension of the file
$type_of_uploaded_file =
substr($name_of_uploaded_file,
strrpos($name_of_uploaded_file, '.') + 1);
$size_of_uploaded_file =
$_FILES["uploaded_file"]["size"]/1024;//size in KBs
//Settings
$max_allowed_file_size = 2000; // size in KB
$allowed_extensions = array("jpg", "jpeg", "gif", "bmp", "pdf");
$upload_folder = '../receivedfiles/';
//Validations
if($size_of_uploaded_file > $max_allowed_file_size )
{
$errors .= "\n Fejl: Filen er for stor";
}
//------ Validate the file extension -----
$allowed_ext = false;
for($i=0; $i<sizeof($allowed_extensions); $i++)
{
if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)
{
$allowed_ext = true;
}
}
if(!$allowed_ext)
{
$errors .= "\n The uploaded file is not supported file type. ".
" Send venligst filer af følgende type: ".implode(',',$allowed_extensions);
}
//copy the temp. uploaded file to uploads folder
$path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
$tmp_path = $_FILES["uploaded_file"]["tmp_name"];
if(is_uploaded_file($tmp_path))
{
if(!copy($tmp_path,$path_of_uploaded_file))
{
$errors .= '\n error while copying the uploaded file';
}
}
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$call = $_POST['call'];
$company = $_POST['company'];
$type = $_POST['type'];
$adress = $_POST['adress'];
$hesteid = $_POST['hesteid'];
$hestenavn = $_POST['hestenavn'];
$message = $_POST['message'];
$areacode = $_POST['areacode'];
$land = $_POST['land'];
$formcontent=" Fra: $company \n Navn: $name \n Adresse: $adress , $areacode \n Land: $land \n Telefon: $phone \n Ringes op: $call \n Type: $type \n Hoppens navn og ID: $hestenavn , $hesteid \n Besked: \n $message \n Vedhæftede filer: \n $path_of_uploaded_file";
$recipient = "my@email.dk";
$subject = "Besked fra hjemmesiden";
$mailheader = "Fra: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header('Location: /thank_you.shtml')
?>
HTML 表单代码:
<form class="contactform" action="php/mail.php" method="post" enctype="multipart/form-data">
<label for="company">Firma</label>
<input type="text" name="company" id="company" />
<label for="name">Navn</label>
<input type="text" name="name" placeholder="Dit navn" id="name" required="required" /><span class="red">*</span>
<br />
<label for="email">Email</label>
<input type="email" name="email" placeholder="din@mail.dk" id="email" required="required" /><span class="red">*</span>
<br />
<label for="phone">Telefon</label>
<input type="text" name="phone" placeholder="012345678" id="phone" required="required" /><span class="red">*</span>
<br />
<label for="adress">Adresse</label>
<input type="text" name="adress" placeholder="Din adresse" id="adress" />
<br />
<label for="areacode">Postnummer og By</label>
<input type="text" name="areacode" placeholder="Postnummer og By" id="areacode" />
<br />
<label for="land">Land</label>
<input type="text" name="land" placeholder="Land" id="land" />
<br />
<br />
<label for="call">Vil De ringes op?<span class="red">*</span></label>
<table class="callme">
<tr>
<td class="callmetext"><p>Ja</p></td>
<td class="callmecheck"><input type="radio" value="Ja" name="call" id="call" required="required" /></td>
</tr>
<tr>
<td class="callmetext"><p>Nej</p></td>
<td class="callmecheck"><input type="radio" value="Nej" name="call" /></td>
</tr>
</table>
<br />
<label for="type">Emne</label>
<select name="type" size="1" id="type" required="required">
<option value="">Vælg fra listen</option>
<option value="Bestille dekæning">Bestille bedækning</option>
<option value="Bestille brochure">Bestille brochure</option>
<option value="Information om en hingst">Information om en hingst</option>
<option value="Information om stutteriet">Information om stutteriet</option>
<option value="Information om salgsheste">Information om salgsheste</option>
<option value="Information om Afkomsformidling">Information om afkomsformidling</option>
<option value="Information om samarbejdspartnere">Information om vore samarbejdspartner</option>
<option value="Andet">Andet</option>
</select><span class="red">*</span>
<br />
<label for="hesteid">Hoppens ID</label>
<input type="text" name="hesteid" placeholder="208333DW..." id="hesteid" />
<br />
<label for="hestenavn">Hoppens navn</label>
<input type="text" name="hestenavn" placeholder="Hoppens navn..." id="hestenavn" />
<br />
<br />
<label for="message">Din besked<span class="red">*</span></label>
<textarea name="message" rows="6" cols="20" placeholder="Skriv din besked her..." id="message" required="required"></textarea>
<br />
<br />
<label for="uploaded_file">Vælg en fil:</label>
<input type="file" name="uploaded_file">
<br />
<br />
<div class="center">
<label for="captcha"> </label>
<div id="captcha" class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="6LfnbiATAAAAAOBV8B7qaPGzfpyjdahePpyGhLjj"></div>
</div>
<br />
<br />
<div class="center">
<label for="submitBtn"> </label>
<input class="contactbtn" type="submit" value="Send besked" id="submitBtn" disabled />
</div>
</form>
额外问题:我能否复制此代码并将“uploaded_file”更改为“uploaded_file2”和 3,依此类推,并能够添加更多文件?
【问题讨论】:
-
我看不出这段代码有什么问题。
print_r($_FILES)产生什么样的输出? -
对不起,我不熟悉这个命令。我怎样才能插入这个?
-
它打印
$_FILES数组的内容。只需将其插入代码中的任何位置即可。 -
感谢@Midas,它没有显示任何内容。我添加了“print_r($FILES);”
-
$_FILES不是$FILES:)
标签: php forms validation email-attachments