Hallo allemaal,
In een website van mij kunnen gebruikers afbeeldingen uploaden. Nu is het probleem dat bij grote afbeeldingen het script wordt afgebroken.
Er zit een check op max filesize (die staat nu op 6621440 bytes, dus dat is zo'n 6,5mb)
Maar bij foto's van 3mb wordt het script ineens afgebroken.
Het lijkt mij dat er een soort time-out in PHP zit die dit afbreekt wanneer het te lang duurt? Een foto van 3mb uploaden duurt op de meeste pc's wel even.
Ziet iemand de fout in het script, of herkent iemand het probleem?
Alvast bedankt!
CODE:
PHP Code:
<?php
$id = replace_str($_GET['id']);
$Submit = replace_str($_POST['Submit']);
$userfile = replace_str($_POST['userfile']);
if($_SESSION['ingelogd'] != "OK") {
header("Location: edit1_bedrijf.php");
}
if($Submit || $userfile){
if($userfile != "none")
{
$max_size = "$max_grootte";
if ($_FILES['userfile']['type'] !== 'image/pjpeg' && $_FILES['userfile']['type'] !== 'image/jpeg'){
echo "<p>Helaas, het is alleen mogelijk om een foto te gebruiken van het type jpg. <br>De advertentie is toegevoegd zonder foto!</p><br><br>";
}
elseif ($_FILES['userfile']['size'] > $max_size)
{
echo "Helaas, de gekozen foto is te groot. Uw advertentie is toegevoegd zonder foto!<br><br>";
} else {
$thefilesize = filesize("inc.php");
$filenum = fopen("inc.php","r");
$nr = fread($filenum, $thefilesize+1);
fclose($filenum);
$nr++;
$filenum = fopen("inc.php","w");
fwrite($filenum,$nr);
fclose($filenum);
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
move_uploaded_file($_FILES['userfile']['tmp_name'], "images_upload/".$nr.".jpg");
$foto_url = "images_upload/{$nr}.jpg";
//chmod($foto_url, 0600);
}
$foto = "$nr.jpg";
include("thumb.php");
//Waar komt het bestand vandaan?
$bronvanhetbestand = "images_upload/$nr.jpg";
//De hoogte en breedte ophalen van het plaatje
$dimensions = getimagesize($bronvanhetbestand);
//Dit is de breedte die alle plaatjes krijgen
$doelbreedte = 200;
//Hoogte en breedte toekennnen aan nieuwe variabelen
$bronbreedte = $dimensions[0];
$bronhoogte = $dimensions[1];
//De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
$doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
//De hoogte, als het nodig is, afronden
$doelhoogte = round($doelhoogte, 0);
//Zeggen dat dit bestand een plaatje is
//header('content-type: image/jpeg');
//Het plaatje inlezen in de variabele $image
$image = imagecreatefromjpeg($bronvanhetbestand);
//een nieuw klein plaatje maken met de gewenste grootte
$destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
//Het nieuwe plaatje vullen met verkleinde plaatje
imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
//Het plaatje weergeven
//imagejpeg($destination);
imagejpeg($destination, "images_upload/thumbs/$nr.jpg");
$thumb_url = "images_upload/thumbs/{$nr}.jpg";
//chmod($thumb_url, 0600);
//Het bronplaatje verwijderen
imagedestroy($image);
//Het doelplaatje verwijderen
imagedestroy($destination);
$res = mysql_fetch_object(mysql_query("SELECT * FROM part WHERE id = '$id'"));
$foto1 = $res->foto;
$foto2 = $res->foto2;
$foto3 = $res->foto3;
$foto4 = $res->foto4;
$foto5 = $res->foto5;
$foto6 = $res->foto6;
$foto7 = $res->foto7;
$foto8 = $res->foto8;
$land = $res->land;
$accomodatie = $res->accomodatie;
$id = $res->id;
if (empty($foto1)) {
$sql = "UPDATE part SET foto = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto2)) {
$sql = "UPDATE part SET foto2 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto3)) {
$sql = "UPDATE part SET foto3 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto4)) {
$sql = "UPDATE part SET foto4 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto5)) {
$sql = "UPDATE part SET foto5 = '".$foto."' WHERE id = '" .$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto6)) {
$sql = "UPDATE part SET foto6 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto7)) {
$sql = "UPDATE part SET foto7 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto8)) {
$sql = "UPDATE part SET foto8 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto's zijn succesvol toegevoegd!</b><br><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om uw gewijzigde advertentie te bekijken";
} else {
echo "<b>U heeft reeds 8 foto's geupload</b><br><a href=\"$Url/$land/$accomodatie/$id.html\">Klik hier om de advertentie te bekijken.</a></b>";
unlink("images_upload/thumbs/$foto");
unlink("images_upload/$foto");
}
}
}
} elseif($_SESSION['ingelogd'] == "OK") {
echo "<center>";
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\" align=\"center\" class=\"post\" width=\"100%\">";
echo "<form method=\"POST\" action=\"" . $PHP_SELF . "?id=".$id ."\" enctype=\"multipart/form-data\">";
echo "<div align = \"left\"><p>Kies een foto: <input name=\"userfile\" type=\"file\" class=\"textfieldselect\"></p></div><br />";
echo "<div align = \"left\"><p><input type=\"submit\" name=\"Submit\" value=\"Toevoegen\" class=\"button\"/></p></div>";
echo "</form>";
echo "</table>";
echo "</center>";
} else {
echo "<p>U heeft geen rechten om deze pagina te bezoeken.</p>";
}
?>
- PHP upload time-out?
-
30-09-2010, 17:18 #1
- Berichten
- 348
- Lid sinds
- 16 Jaar
PHP upload time-out?
-
-
30-09-2010, 17:35 #2
- Berichten
- 2.816
- Lid sinds
- 19 Jaar
Elke php script heeft een time-out, zodat deze niet oneindig doorloopt (is wel mogelijk), je zult de timeout moeten verlengen.
ini_set(max_execution_time,90); 90 = seconden.
Kan zijn dat je hoster dit beperkt heeft.
Let er wel op dat niet iedereen even snel 6mb kan uploaden.
-
30-09-2010, 18:29 #3
- Berichten
- 1.031
- Lid sinds
- 17 Jaar
Bovenin je script dit neerzetten:
set_time_limit(0);
werkt vermoedelijk ook...
-
30-09-2010, 18:33 #4
- Berichten
- 203
- Lid sinds
- 16 Jaar
Dit moet je niet in je script gaan inbouwen, je kan het ook gewoon via je php.ini doen,,
-
30-09-2010, 21:26 #5
- Berichten
- 348
- Lid sinds
- 16 Jaar
Hmm ik heb net contact gehad met One.com (waar de site gehost is) en ik kan de php.ini niet in, dat mag daar niet pff ..en als ik het volgende in de htaccess zet krijg ik een Internal Server Error
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200
Is er nog een andere manier?
-
01-10-2010, 00:01 #6
- Berichten
- 2.971
- Lid sinds
- 18 Jaar
Logisch dat je niet in de php.ini mag wijzigen.
Probeer bovenstaande in PHP, maar verwacht er niet teveel van.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic