|
| MAX_FILE_SIZE på e-mail virker ikke Fra : Jimmy E. Frederiksen |
Dato : 04-04-04 18:19 |
|
Jeg har denne mailform, men problemet er at jeg kun vil tillade filer på 1
MB og det virker ikke. Umiddelbart ville jeg mener at hvis man forsøgte med
større filer, så skulle echo "Der skete en fejl - prøv igen!"; tages i brug,
men det gør den ikke.
<?php
if (isset($_POST['mailform'])) {
if (isset($_POST['mailform']) && empty($_POST['inputname'])) {
echo "Du mangler at udfylde navn!";
}
elseif (isset($_POST['mailform']) && empty($_POST['inputemail'])) {
echo "Du mangler at udfylde e-post!";
}
elseif (isset($_POST['mailform']) && empty($_POST['inputmessage'])) {
echo "Du mangler at udfylde besked!";
}
elseif (!empty($_POST['inputname']) && !empty($_POST['inputemail']) &&
!empty($_POST['inputmessage'])) {
if (empty($_FILES['inputfile']['tmp_name'])) {
$message = "$_POST[inputmessage]\r\n\r\n";
$headers = "Content-type: text/plain; charset=iso-8859-1\r\n";
}
else {
$boundary = uniqid('');
$mimeType = ($_FILES['inputfile']['type'] ?
$_FILES['inputfile']['type'] : 'application/unknown');
$file = fread(fopen($_FILES['inputfile']['tmp_name'], 'r'),
filesize($_FILES['inputfile']['tmp_name']));
$file = base64_encode($file);
$file = chunk_split($file);
$message = "\r\n--$boundary\r\n";
$message .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$message .= "Content-transfer-encoding: 8bit\r\n\r\n";
$message .= "$_POST[inputmessage]\r\n\r\n";
$message .= "--$boundary\r\n";
$message .= "Content-type: $mimeType;
name=".$_FILES['inputfile']['name']."\r\n";
$message .= "Content-disposition: attachment;
filename=".$_FILES['inputfile']['name']."\r\n";
$message .= "Content-transfer-encoding: base64\r\n\r\n";
$message .= $file."\r\n\r\n";
$message .= "--$boundary--";
$headers = "Content-type: multipart/mixed;
boundary=\"$boundary\"\r\n";
}
$recipient = "jimmy@remove.e-frederiksen.dk";
$subject = "$_POST[inputsubject]";
$message .= "$_POST[inputname]\r\n";
$message .= "$_POST[inputaddress]\r\n";
$message .= "$_POST[inputpostcode] $_POST[inputcity]\r\n";
$headers .= "From: \"$_POST[inputname]\" <$_POST[inputemail]>\r\n";
$headers .= "Bcc: webmaster@remove.e-frederiksen.dk";
mail ($recipient, $subject, stripslashes($message), $headers);
echo "Beskeden er sendt!";
unset ($_POST['inputname'], $_POST['inputemail'],
$_POST['inputmessage']);
}
else {
echo "Der skete en fejl - prøv igen!";
}
}
else {
echo "Felter med * skal udfyldes!";
}
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];
?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Navn* <input type="text" value="<?php if (isset($_POST['inputname'])) { echo
$_POST['inputname']; } ?>" name="inputname"><br>
E-post* <input type="text" value="<?php if (isset($_POST['inputemail'])) {
echo $_POST['inputemail']; } ?>" name="inputemail"><br>
Adresse <input type="text" name="inputaddress"><br>
Postnummer <input type="text" name="inputpostcode" size="3"> By <input
type="text" name="inputcity"><br>
Emne <select name="inputsubject">
<option value="Forespørgsel">Forespørgsel
<option value="Medlemskab">Medlemskab
<option value="Bidrag">Bidrag
</select><br>
Besked* <textarea rows="5" cols="0" name="inputmessage"><?php if
(isset($_POST['inputmessage'])) { echo $_POST['inputmessage']; }
?></textarea><br>
Vedhæft fil: <input type="file" name="inputfile"><br>
<input type="submit" name="mailform" value="Send">
</form>
Jimmy
| |
Kasper Garnæs (04-04-2004)
| Kommentar Fra : Kasper Garnæs |
Dato : 04-04-04 19:10 |
|
Jimmy E. Frederiksen <jimmy@remove.e-frederiksen.dk> wrote:
> Jeg har denne mailform, men problemet er at jeg kun vil tillade filer
> på 1 MB og det virker ikke. Umiddelbart ville jeg mener at hvis man
> forsøgte med større filer, så skulle echo "Der skete en fejl - prøv
> igen!"; tages i brug, men det gør den ikke.
Så vidt jeg forstår på
http://dk2.php.net/manual/en/features.file-upload.php#features.file-upload.post-method,
så er MAX_FILE_SIZE noget, som browseren *måske* håndterer - ikke noget som
påvirker din PHP kode.
Hvis du vil være sikker på at filer over 1MB ikke bliver håndteret, skal du
sørge for selv at lave et check i din PHP kode.
if ($_FILES['inputfile']['size'] < 1000000) {
//send en mail
}
--
Med venlig hilsen / Regards
Kasper Garnæs
http://kasper.garnaes.dk
| |
Jimmy E. Frederiksen (04-04-2004)
| Kommentar Fra : Jimmy E. Frederiksen |
Dato : 04-04-04 20:36 |
|
> Hvis du vil være sikker på at filer over 1MB ikke bliver håndteret, skal
du
> sørge for selv at lave et check i din PHP kode.
>
> if ($_FILES['inputfile']['size'] < 1000000) {
> //send en mail
> }
Tak, men jeg kan se hvad du mener og jeg tror også det virker - sådan da. Nu
vil den kun sende filer som er under 1MB, men sender alligevel mailen selvom
filen er større (dog uden filen). Er det ikke muligt at gøre sådan at man
fik at vide hvis filen var for stor (det jeg prøver at gøre med den
efterfølgende 'else')?
<?php
if (isset($_POST['mailform'])) {
if (isset($_POST['mailform']) && empty($_POST['inputname'])) {
echo "Du mangler at udfylde navn!";
}
elseif (isset($_POST['mailform']) && empty($_POST['inputemail'])) {
echo "Du mangler at udfylde e-post!";
}
elseif (isset($_POST['mailform']) && empty($_POST['inputmessage'])) {
echo "Du mangler at udfylde besked!";
}
elseif (isset($_POST['inputname']) && isset($_POST['inputemail']) &&
isset($_POST['inputmessage'])) {
if (empty($_FILES['inputfile']['tmp_name'])) {
$message = "$_POST[inputmessage]\r\n\r\n";
$headers = "Content-type: text/plain; charset=iso-8859-1\r\n";
}
elseif ($_FILES['inputfile']['size'] < "1000000") {
$boundary = uniqid('');
$mimeType = ($_FILES['inputfile']['type'] ?
$_FILES['inputfile']['type'] : 'application/unknown');
$file = fread(fopen($_FILES['inputfile']['tmp_name'], 'r'),
filesize($_FILES['inputfile']['tmp_name']));
$file = base64_encode($file);
$file = chunk_split($file);
$message = "\r\n--$boundary\r\n";
$message .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$message .= "Content-transfer-encoding: 8bit\r\n\r\n";
$message .= "$_POST[inputmessage]\r\n\r\n";
$message .= "--$boundary\r\n";
$message .= "Content-type: $mimeType;
name=".$_FILES['inputfile']['name']."\r\n";
$message .= "Content-disposition: attachment;
filename=".$_FILES['inputfile']['name']."\r\n";
$message .= "Content-transfer-encoding: base64\r\n\r\n";
$message .= $file."\r\n\r\n";
$message .= "--$boundary--";
$headers = "Content-type: multipart/mixed;
boundary=\"$boundary\"\r\n";
}
else {
echo "Der skete en fejl - prøv igen!";
}
$recipient = "jimmy@remove.e-frederiksen.dk";
$subject = "$_POST[inputsubject]";
$message .= "$_POST[inputname]\r\n";
$message .= "$_POST[inputaddress]\r\n";
$message .= "$_POST[inputpostcode] $_POST[inputcity]\r\n";
$headers .= "From: \"$_POST[inputname]\" <$_POST[inputemail]>\r\n";
$headers .= "Bcc: webmaster@remove.e-frederiksen.dk";
mail ($recipient, $subject, stripslashes($message), $headers);
echo "Beskeden er sendt!";
unset ($_POST['inputname'], $_POST['inputemail'],
$_POST['inputaddress'], $_POST['inputpostcode'], $_POST['inputcity'],
$_POST['inputmessage']);
}
}
else {
echo "Felter med * skal udfyldes!";
}
?>
<form enctype="multipart/form-data" action="?id=kontakt" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
Navn* <input type="text" value="<?php if (isset($_POST['inputname'])) { echo
$_POST['inputname']; } ?>" name="inputname"><br>
E-post* <input type="text" value="<?php if (isset($_POST['inputemail'])) {
echo $_POST['inputemail']; } ?>" name="inputemail"><br>
Adresse <input type="text" value="<?php if (isset($_POST['inputaddress']))
{ echo $_POST['inputaddress']; } ?>" name="inputaddress"><br>
Postnummer <input type="text" value="<?php if
(isset($_POST['inputpostcode'])) { echo $_POST['inputpostcode']; } ?>"
name="inputpostcode" size="3"> By <input type="text" name="inputcity"><br>
Emne <select name="inputsubject">
<option value="Forespørgsel">Forespørgsel
<option value="Medlemskab">Medlemskab
<option value="Bidrag">Bidrag
</select><br>
Besked* <textarea rows="5" cols="0" name="inputmessage"><?php if
(isset($_POST['inputmessage'])) { echo $_POST['inputmessage']; }
?></textarea><br>
Vedhæft fil: <input type="file" name="inputfile"><br>
<input type="submit" name="mailform" value="Send">
</form>
| |
Jimmy E. Frederiksen (04-04-2004)
| Kommentar Fra : Jimmy E. Frederiksen |
Dato : 04-04-04 22:00 |
|
Afprøvet lidt mere, men nu forstår jeg snart ikke en lyd. Nedenstående vil
ikke sende en .zip på 1.8MB, men godt én på 2.9MB?!
Hvis jeg prøver med den på 1.8MB melder den "Du kan kun vedhæfte en fil som
er mindre end 1MB!" som, iflg. min overbevisning er OK, men jeg fatter så
ikke hvorfor den vil sende den anden.
<?php
if (isset($_POST['mailform'])) {
if (isset($_POST['mailform']) && empty($_POST['inputname'])) {
echo "Du mangler at udfylde navn!";
}
elseif (isset($_POST['mailform']) && empty($_POST['inputemail'])) {
echo "Du mangler at udfylde e-post!";
}
elseif (isset($_POST['mailform']) && empty($_POST['inputmessage'])) {
echo "Du mangler at udfylde besked!";
}
elseif (isset($_POST['mailform']) && ($_FILES['inputfile']['size'] >=
1000000)) {
echo "Du kan kun vedhæfte en fil som er mindre end 1MB!";
}
elseif (isset($_POST['inputname']) && isset($_POST['inputemail']) &&
isset($_POST['inputmessage'])) {
if (empty($_FILES['inputfile']['tmp_name'])) {
$message = "$_POST[inputmessage]\r\n\r\n";
$headers = "Content-type: text/plain; charset=iso-8859-1\r\n";
}
elseif (isset($_FILES['inputfile']['tmp_name'])) {
$boundary = uniqid('');
$mimeType = ($_FILES['inputfile']['type'] ?
$_FILES['inputfile']['type'] : 'application/unknown');
$file = fread(fopen($_FILES['inputfile']['tmp_name'], 'r'),
filesize($_FILES['inputfile']['tmp_name']));
$file = base64_encode($file);
$file = chunk_split($file);
$message = "\r\n--$boundary\r\n";
$message .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$message .= "Content-transfer-encoding: 8bit\r\n\r\n";
$message .= "$_POST[inputmessage]\r\n\r\n";
$message .= "--$boundary\r\n";
$message .= "Content-type: $mimeType;
name=".$_FILES['inputfile']['name']."\r\n";
$message .= "Content-disposition: attachment;
filename=".$_FILES['inputfile']['name']."\r\n";
$message .= "Content-transfer-encoding: base64\r\n\r\n";
$message .= $file."\r\n\r\n";
$message .= "--$boundary--";
$headers = "Content-type: multipart/mixed;
boundary=\"$boundary\"\r\n";
}
else {
echo "Der skete en fejl - prøv igen!";
}
$recipient = "jimmy@remove.e-frederiksen.dk";
$subject = "$_POST[inputsubject]";
$message .= "$_POST[inputname]\r\n";
$message .= "$_POST[inputaddress]\r\n";
$message .= "$_POST[inputpostcode] $_POST[inputcity]\r\n";
$headers .= "From: \"$_POST[inputname]\" <$_POST[inputemail]>\r\n";
$headers .= "Bcc: webmaster@remove.e-frederiksen.dk";
mail ($recipient, $subject, stripslashes($message), $headers);
echo "Beskeden er sendt!";
unset ($_POST['inputname'], $_POST['inputemail'],
$_POST['inputaddress'], $_POST['inputpostcode'], $_POST['inputcity'],
$_POST['inputmessage']);
}
}
else {
echo "Felter med * skal udfyldes!";
}
?>
<form enctype="multipart/form-data" action="?id=kontakt" method="post">
<!-- <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> -->
Navn* <input type="text" value="<?php if (isset($_POST['inputname'])) { echo
$_POST['inputname']; } ?>" name="inputname"><br>
E-post* <input type="text" value="<?php if (isset($_POST['inputemail'])) {
echo $_POST['inputemail']; } ?>" name="inputemail"><br>
Adresse <input type="text" value="<?php if (isset($_POST['inputaddress']))
{ echo $_POST['inputaddress']; } ?>" name="inputaddress"><br>
Postnummer <input type="text" value="<?php if
(isset($_POST['inputpostcode'])) { echo $_POST['inputpostcode']; } ?>"
name="inputpostcode" size="3"> By <input type="text" name="inputcity"><br>
Emne <select name="inputsubject">
<option value="Forespørgsel">Forespørgsel
<option value="Medlemskab">Medlemskab
<option value="Bidrag">Bidrag
</select><br>
Besked* <textarea rows="5" cols="0" name="inputmessage"><?php if
(isset($_POST['inputmessage'])) { echo $_POST['inputmessage']; }
?></textarea><br>
Vedhæft fil: <input type="file" name="inputfile"><br>
<input type="submit" name="mailform" value="Send">
</form>
| |
Kasper Garnæs (05-04-2004)
| Kommentar Fra : Kasper Garnæs |
Dato : 05-04-04 12:56 |
|
Jimmy E. Frederiksen <jimmy@remove.e-frederiksen.dk> wrote:
> Afprøvet lidt mere, men nu forstår jeg snart ikke en lyd.
> Nedenstående vil ikke sende en .zip på 1.8MB, men godt én på 2.9MB?!
>
> Hvis jeg prøver med den på 1.8MB melder den "Du kan kun vedhæfte en
> fil som er mindre end 1MB!" som, iflg. min overbevisning er OK, men
> jeg fatter så ikke hvorfor den vil sende den anden.
Det lyder umiddelbart ret mystisk.
Prøv evt. at var_dump'e dine $_POST og $_FILES arrays, så du kan se, hvilke
værdier du får med fra form'en. Du kunne også prøve at tjecke filstørrelsen
vha. filesize($_FILES['inputfile']['tmp_name']) i stedet for at bruge
$_FILES['inputfile']['size'].
--
Med venlig hilsen / Regards
Kasper Garnæs
http://kasper.garnaes.dk
| |
|
|