Bild-Upload-Script

HiHo Leute

ich habe mir ein kleines Script gebastelt für Bild-Upload…
aber leider funzzelt das ganze nicht so richtig…

  1. Kann man beliebig viele pics hochladen obwohls als VIP nur 9 und als user 6 darf
  2. werden irgendwie die daten nicht kontrolliert, ob sie JPG etc. sind und die grösse… :frowning:

ich finde den fehler einfach nicht wirklich… :-/

hier mal das script:

<?php require(dirname( __FILE__ ) .'/includes/index.php');
dbconn(true); loggedinorreturn(); if (isset($\_GET['action'])) { $action = trim(htmlentities($\_GET['action'])); } elseif (isset($\_POST['action'])) { $action = trim(htmlentities($\_POST['action'])); } else { $action = 'view'; } if ($action == 'view') { stdhead(); if (get\_user\_class() \>= UC\_VIP) { print(" \n". " \n". " Fotos\n". " \n". " \n". " \n"); $sql = "SELECT \* FROM users\_pics WHERE userid = ". $CURUSER['id'] ." LIMIT 9"; $res = $db -\> queryObjectArray($sql); if ($res) { $zeile = 0; print(" \n"); foreach ($res AS $key =\> $val) { if ($zeile == 0) print(" \n"); if ($val['privat'] == 'yes') { $privat = "öffentlich"; } else { $privat = "nicht öffentlich"; } if ($val['profilbild'] == 'yes') { $profilbild = "Ja"; } else { $profilbild = "Nein"; } print(" \n". " \n". " Heraufgeladen am: ". strftime("%d.%m.%Y",$val['added']) ." \n". " Foto ist: ". $privat ." \n". " Profilbild: ". $profilbild ." \n". " [Ändern](%255C%2522%2522.)   [Löschen](%255C%2522%2522.)\n". " \n"); $zeile++; if ($zeile == 3) { print(" \n"); $zeile = 0; } } if (($zeile != 3) && ($zeile != 0)) { print("  \n". " \n"); } print(" \n"); } else { print(" Du besitzt momentan noch keine Bilder."); } print(" \n". " \n". " \n". " \n"); if($GLOBALS['MAX\_BITBUCKET\_VIP'] != 9) { print(" Du kannst keine Pics mehr hochladen\n"); } else { print(" Du kannst noch [Pics hochladen](%255C%2522%2522.)\n"); } print(" \n". " \n". " \n"); } else { print(" \n". " \n". " Fotos\n". " \n". " \n". " \n"); $sql = "SELECT \* FROM users\_pics WHERE userid = ". $CURUSER['id'] ." LIMIT 6"; $res = $db -\> queryObjectArray($sql); if ($res) { $zeile = 0; print(" \n"); foreach ($res AS $key =\> $val) { if ($zeile == 0) print(" \n"); if ($val['privat'] == 'yes') { $privat = "öffentlich"; } else { $privat = "nicht öffentlich"; } if ($val['profilbild'] == 'yes') { $profilbild = "Ja"; } else { $profilbild = "Nein"; } print(" \n". " \n". " Heraufgeladen am: ". strftime("%d.%m.%Y",$val['added']) ." \n". " Foto ist: ". $privat ." \n". " Profilbild: ". $profilbild ." \n". " [Ändern](%255C%2522%2522.)   [Löschen](%255C%2522%2522.)\n". " \n"); $zeile++; if ($zeile == 3) { print(" \n"); $zeile = 0; } } if (($zeile != 3) && ($zeile != 0)) { print("  \n". " \n"); } print(" \n"); } else { print(" Du besitzt momentan noch keine Bilder."); } print(" \n". " \n". " \n". " \n"); if($GLOBALS['MAX\_BITBUCKET\_USER'] != 6) { print(" Du kannst keine Pics mehr hochladen\n"); } else { print(" Du kannst noch [Pics hochladen](%255C%2522%2522.)\n"); } print(" \n". " \n". " \n"); } stdfoot(); } if ($action == 'delete') { $id = intval($\_GET['id']); stdhead(); print(" \n". " \n". " Foto löschen\n". " \n"); $sql = "SELECT COUNT(\*) FROM users\_pics WHERE id = ". $id ." LIMIT 1"; $res = $db -\> queryObjectArray($sql); if ($res) { $bucketfile = mysql\_fetch\_array(mysql\_query("SELECT \* FROM users\_pics WHERE id = ". $id ." LIMIT 1")); $delerr = unlink($GLOBALS['BITBUCKET\_DIR'] ."/". $bucketfile['filename']); if ($delerr) { print(" \n". " Datei erfolgreich gelöscht...\n". " \n"); } else { print(" \n". " FEHLER!! -- Die Datei wurde nicht gelöscht...\n". " \n"); } $sql = "DELETE FROM users\_pics WHERE id=". $id ." LIMIT 1"; $db -\> execute($sql); if ($db) { print(" \n". " Daten erfolgreich aus der Datenbank gelöscht...\n". " \n"); } else { print(" \n". " FEHLER!! -- Die Daten konnten nicht gelöscht werden...\n". " \n"); } } else { print(" \n". " Diese Datei wurde nicht gefunden.\n". " \n"); } print(" \n". " [zurück](%255C%2522%2522.)\n". " \n". " \n"); stdfoot(); } if ($action == 'edit') { $id = intval($\_GET['id']); stdhead(); print(" \n". " \n". " Foto bearbeiten\n". " \n". " \n". " \n"); $sql = "SELECT \* FROM users\_pics WHERE id = ". $id ." LIMIT 1"; $res = $db -\> queryObjectArray($sql); if ($res) { foreach ($res AS $key =\> $val) { print(" \n". " \n". " \n". " \n". " Profilbild: Ja       Nein \n". " Privates Foto: Ja       Nein \n". " Speichern\n". " \n". " \n"); } } else { print(" Diese Datei wurde nicht gefunden."); } print(" \n". " \n". " \n". " [zurück](%255C%2522%2522.)\n". " \n". " \n"); stdfoot(); } if ($action == 'picupload') { stdhead(); if (get\_user\_class() \>= UC\_VIP) { print(" \n". " \n". " Fotos Hochladen (max. Dateigrösse: ". ($GLOBALS['MAX\_UPLOAD\_FILESIZE']/(1024\*1024\*1024)) ." MB)\n". " \n". " \n". " \n". " Wichtig: Bitte beachte, dass wir nur Fotos akzeptieren auf welchen du alleine mit deinem Gesicht erkennbar bist. Fotos mit weiteren Personen, im Hintergrund, oder auch Gruppenfotos sind nicht erlaubt. Andere Fotos, insbesondere Bilder welche urheberrechtlich geschützt sein könnten, werden von uns ohne Kommentar gelöscht. Es werden nur folgende Dateitypen akzeptiert: JPG\n". " \n". " \n". " \n". " \n". " \n". " Bild: \n". " \n". " \n". " \n". " \n". " \n"); } else { print(" \n". " \n". " Fotos Hochladen (max. Dateigrösse: ". ($GLOBALS['MAX\_UPLOAD\_FILESIZE']/(1024\*1024\*1024)) ." MB)\n". " \n". " \n". " \n". " Wichtig: Bitte beachte, dass wir nur Fotos akzeptieren auf welchen du alleine mit deinem Gesicht erkennbar bist. Fotos mit weiteren Personen, im Hintergrund, oder auch Gruppenfotos sind nicht erlaubt. Andere Fotos, insbesondere Bilder welche urheberrechtlich geschützt sein könnten, werden von uns ohne Kommentar gelöscht. Es werden nur folgende Dateitypen akzeptiert: JPG\n". " \n". " \n". " \n". " \n". " \n". " Bild: \n". " \n". " \n". " \n". " \n". " \n"); } stdfoot(); } if ($action == 'takeedit') { $id = intval($\_POST['id']); $privat = $\_POST['privat']; $profilbild = $\_POST['profilbild']; $db -\> updateRow(array( "privat" =\> $privat, "profilbild" =\> $profilbild, ),"users\_pics","id=". $id); header("Location: ". $\_SERVER['PHP\_SELF']); } if ($action == 'takepicupload1') { $maxsize = 2097152; $name = renameFile($\_FILES['Datei']['name']); $size = $\_FILES['Datei']['size']; $tempname = $\_FILES['Datei']['tmp\_name']; $type = $\_FILES['Datei']['type']; if ($type != "image/jpeg") { $fehler = "nur und jpeg Dateien dürfen hochgeladen werden."; } if ($maxsize Maximale Dateigrösse beträgt ". ($GLOBALS['MAX\_UPLOAD\_FILESIZE']/(1024\*1024\*1024)) ." MB!"; } if (@move\_uploaded\_file($tempname, $GLOBALS['BITBUCKET\_DIR'] ."/". $name)) { $data = array( "added" =\> time(), "filename" =\> $name, "originalname" =\> $\_FILES['Datei']['name'], "privat" =\> "no", "profilbild" =\> "no", "size" =\> $size, "user" =\> $CURUSER['username'], "userid" =\> $CURUSER['id'] ); $db -\> insertRow($data,"users\_pics"); stdhead(); print(" \n". " \n". " \n". " Die Datei wurde erfolgreich gespeichert. \n". " [weiteres Bild hochladen](%255C%2522%2522.) | [kein weiteres Bild hochladen](%255C%2522%2522.) \n". " \n". " \n". " \n"); stdfoot(); } else { stdhead(); print(" \n". " \n". " \n"); foreach($fehler as $error) { print("". $error ."\n"); } print(" [Zurück zum Upload-Formular](%255C%2522%2522.) \n". " \n". " \n". " \n"); stdfoot(); } } if ($action == 'takepicupload2') { $maxsize = 2097152; $name = renameFile($\_FILES['Datei']['name']); $size = $\_FILES['Datei']['size']; $tempname = $\_FILES['Datei']['tmp\_name']; $type = $\_FILES['Datei']['type']; if ($type != "image/jpeg") { $fehler = "nur und jpeg Dateien dürfen hochgeladen werden."; } if ($maxsize Maximale Dateigrösse beträgt ". ($GLOBALS['MAX\_UPLOAD\_FILESIZE']/(1024\*1024\*1024)) ." MB!"; } if (@move\_uploaded\_file($tempname, $GLOBALS['BITBUCKET\_DIR'] ."/". $name)) { $data = array( "added" =\> time(), "filename" =\> $name, "originalname" =\> $\_FILES['Datei']['name'], "privat" =\> "no", "profilbild" =\> "no", "size" =\> $size, "user" =\> $CURUSER['username'], "userid" =\> $CURUSER['id'] ); $db -\> insertRow($data,"users\_pics"); stdhead(); print(" \n". " \n". " \n". " Die Datei wurde erfolgreich gespeichert. \n". " [weiteres Bild hochladen](%255C%2522%2522.) | [kein weiteres Bild hochladen](%255C%2522%2522.) \n". " \n". " \n". " \n"); stdfoot(); } else { stdhead(); print(" \n". " \n". " \n"); foreach($fehler as $error) { print("". $error ."\n"); } print(" [Zurück zum Upload-Formular](%255C%2522%2522.) \n". " \n". " \n". " \n"); stdfoot(); } } ?\>

einfach hi simply,


if ($maxsize



hast Du mal geschaut, was in $type steht?

ich nehme bei Bildern auch lieber getimagesize(), weil es da mehr Infos zum Bild gibt.

mfg
Klaus

das hab ich ja drinne, aber funzzeln tut das nicht… :-/
und ja man kann jedes format nehmen… auch das funzzelt nicht… :frowning:

ich versteh einfach nicht wieso und warum…

das hab ich ja drinne, aber funzzeln tut das nicht… :-/
und ja man kann jedes format nehmen… auch das funzzelt
nicht… :frowning:
ich versteh einfach nicht wieso und warum…

dann solltest Du mal besser lesen was du da „drinne gefunzzelt“ hast:
du prüfst ob maxsize größer als filesize ist
denke mal, Du willst es genau andersherum !
oder drehe „“

und was steht denn konkret in $type??

ah, *hihi* hab ich nicht gesehen… *bissl müde bin*

also bei type als echo steht:
image/jpeg

also bei type als echo steht:
image/jpeg

manchmal kann da aber auch
image/pjpeg"p" für progressiv
stehen - macht der IE ganz gerne

und die ganzen file-attribute stehen Dir nur zur Verfügung, wenn der upload ohne Fehler erfolgte.
Also besser vorher auf $_FILES[‚Datei‘][‚error‘] testen.