PHP gevorderde |
|
ik heb het volgende script:
<form method="POST" enctype="multipart/form-data" title="Om kans te maken op een prijs">
<hr>
<p> <font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif">Omschrijving:</font>
<input name="omschrijving" type="text" id="omschrijving" size="39">
<br>
<font size="2">Typ als eerst je naam en geef daarna een beschrijving van de
foto </font> </p>
<p>
<input type="file" name="file">
<input type="submit" value="Submit" name="B1">
</p>
<hr>
</form>
<?
?>
<?
//vars:
$query_nhon = mysql_query("SELECT * FROM rome") or die(mysql_error());
$npics = mysql_num_rows($query_nhon)or die(mysql_error()); // AANTAL FOTO'S
$max = $npics; //MAXIMALE FOTOGETAL
$id = $max+1; //VOLGEND GETAL
$toegelaten = "jpg png gif";
$toegelaten = explode(" ",strtolower($toegelaten));
//toegelaten bestandsextensies(in een array), als je er geen wilt, comment je deze twee lijnen uit!
$locatie = ""; //zie info hierboven
$maxgrootte = "1000"; //aantal Kilobytes (1000 KB != 1MB!!!!! onthoud dit!!!, omdat ik lui ben, beweer ik dat het wel zo is ;)
//als je je afvraag vanwaar dit komt, in 1 byte gaan er 8 bits, in 2 kilobyte, gaan er dus 1600 bits enzovoorts
$maxgrootte .= "000"; //ik voeg er 3 nulletjes aan toe, om er kilobytes van te maken (denk ik, ik HAAT bestandsgrootes op computers)
$geldig_bestand = false;
//het bestand moet juist zijn, indien het uit de temporary dir naar de uiteindelijke locatie bewaard moet worden
if ($REQUEST_METHOD == 'POST') {
//heb ik al een suitgelegd
if($file) {
//logisch
$image1 = $HTTP_POST_FILES[file][name];
// Filename + extensie van geuploade bestand
//$grootte = $HTTP_POST_FILES[file][size];
//geeft de grootte in een array, [0] = breedte en [1] = hoogte
$extentie = substr($image1, -3);
//neem de extensie van het bestand
$image = Addslashes($image1);
mysql_query("INSERT INTO rome (id,image,omschrijving) VALUES ('" . $id . "','" . $image . "','" . $omschrijving . "')") or die(mysql_error());
if ($grootte <= $maxgrootte) {
//indien de bestandsgrootte al niet klopt, is het onnuttig van de rest te controleren
for ($i=0;$i<sizeof($toegelaten);$i++) {
//herhaal zoveel keer als er toegelaten bestandsextensies zijn
if ($extensie = $toegelaten[$i]) {
//$afmetingen = getimagesize($image);
//if ($plaatje[0] <= $width || $plaatje[1] <= $height) //gn accolade, want mr 1 opdracht!
$geldig_bestand = true; //aangezien ik gn accolade gebruik gebruik ik geen tab vooraan, dit zou alles onduidelijk maken!
//alle voorwarden gaven direct een true, en dus het bestand is door alle beproengen geraakt
break;
//fuck die for loop, het bestand is toch al goed
//als ik dit niet zet, zal het script nog x keren door de lus gaan, wat de uitvoer een paar microseconden vertraagt
//en dus ook de server ook een beetje meer belast! probeer dus altijd zo braaf mogelijk te zijn voor de server
}
}
}
$files = Addslashes($file);
if ($geldig_bestand = true)
copy($image1, $locatie . $image1);
//copieer van het temporary dir naar de uiteindelijke dir!
exit();
//stoppen, anders toont hij het formuliertje!
?>
<?
}
}
?>
</body>
</html>
<form method="POST" enctype="multipart/form-data" title="Om kans te maken op een prijs"> <hr> <p> <font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif">Omschrijving:</font> <input name="omschrijving" type="text" id="omschrijving" size="39"> <br> <font size="2">Typ als eerst je naam en geef daarna een beschrijving van de foto </font> </p> <p> <input type="file" name="file"> <input type="submit" value="Submit" name="B1"> </p> <hr> </form> <? ?> <? //vars: $max = $npics; //MAXIMALE FOTOGETAL $id = $max+1; //VOLGEND GETAL $toegelaten = "jpg png gif"; //toegelaten bestandsextensies(in een array), als je er geen wilt, comment je deze twee lijnen uit! $locatie = ""; //zie info hierboven $maxgrootte = "1000"; //aantal Kilobytes (1000 KB != 1MB!!!!! onthoud dit!!!, omdat ik lui ben, beweer ik dat het wel zo is ;) //als je je afvraag vanwaar dit komt, in 1 byte gaan er 8 bits, in 2 kilobyte, gaan er dus 1600 bits enzovoorts $maxgrootte .= "000"; //ik voeg er 3 nulletjes aan toe, om er kilobytes van te maken (denk ik, ik HAAT bestandsgrootes op computers) $geldig_bestand = false; //het bestand moet juist zijn, indien het uit de temporary dir naar de uiteindelijke locatie bewaard moet worden if ($REQUEST_METHOD == 'POST') { //heb ik al een suitgelegd if($file) { //logisch $image1 = $HTTP_POST_FILES[file][name ]; // Filename + extensie van geuploade bestand //$grootte = $HTTP_POST_FILES[file][size]; //geeft de grootte in een array, [0] = breedte en [1] = hoogte $extentie = substr($image1, -3); //neem de extensie van het bestand mysql_query("INSERT INTO rome (id,image,omschrijving) VALUES ('" . $id . "','" . $image . "','" . $omschrijving . "')") or die(mysql_error()); if ($grootte <= $maxgrootte) { //indien de bestandsgrootte al niet klopt, is het onnuttig van de rest te controleren for ($i=0;$i<sizeof($toegelaten);$i++) { //herhaal zoveel keer als er toegelaten bestandsextensies zijn if ($extensie = $toegelaten[$i]) { //$afmetingen = getimagesize($image); //if ($plaatje[0] <= $width || $plaatje[1] <= $height) //gn accolade, want mr 1 opdracht! $geldig_bestand = true; //aangezien ik gn accolade gebruik gebruik ik geen tab vooraan, dit zou alles onduidelijk maken! //alle voorwarden gaven direct een true, en dus het bestand is door alle beproengen geraakt break; //fuck die for loop, het bestand is toch al goed //als ik dit niet zet, zal het script nog x keren door de lus gaan, wat de uitvoer een paar microseconden vertraagt //en dus ook de server ook een beetje meer belast! probeer dus altijd zo braaf mogelijk te zijn voor de server } } } if ($geldig_bestand = true) copy($image1, $locatie . $image1); //copieer van het temporary dir naar de uiteindelijke dir! //stoppen, anders toont hij het formuliertje! ?> <? } } ?> </body> </html>
Waarom zet hij wel in de tabel de goede bestandsnaam terwijl de naam van het bestandje er anders uit komt te ziet?
dit zijn de bestandjes:
Sipscape-'challenge 3'-Roy de Kleijn(Tacx) 21-08-2004-#1.im
Groeten,
Roy
|