我已經制作了這段代碼,現在我的頭靠牆了。PHP發送帶附件的電子郵件表格驗證尺寸和擴展
看來代碼無法兼顧文件的大小或擴展名!
我收到文件和電子郵件。有人能解釋我爲什麼驗證失敗嗎?
<?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 = "[email protected]";
$subject = "Besked fra hjemmesiden";
$mailheader = "Fra: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header('Location: /thank_you.shtml')
?>
HTML formcode:
<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="[email protected]" id="email" required="required" /><span class="red">*</span>
<br />
<label for="phone">Telefon</label>
<input type="text" name="phone" placeholder="" 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)'產生什麼樣的輸出? – Midas
對不起,我不熟悉這個命令。我怎樣才能插入這個? –
它打印'$ _FILES'數組的內容。只需將它插入代碼中的任何位置。 – Midas