Autor | Zpráva | ||
---|---|---|---|
Radimovic Profil * |
#1 · Zasláno: 14. 9. 2011, 10:13:56
Cau,
Potrebuju nahrat fotku na server a ulozit jeji nazev do databaze do sloupce "photo". Skript mam tenhle: function AddNews($id, $nazev, $datum, $popis, $photo) { echo "<center>"; $dotaz = MySQL_Query("INSERT INTO news VALUES('$id','$nazev','$datum','$popis','$photo')"); $slozka = "img/aktuality"; $cil = $slozka . "/" .$_FILES['photo']['name']; $nazev_souboru = $_FILES['photo']['tmp_name']; $copy = move_uploaded_file($nazev_souboru, $cil) or die ("Přenesený soubor nelze zkopírovat"); chmod ($cil, 0644); if(!$dotaz): echo "<strong>Chyba</strong><br />Data nebyla uložena... <a href='javascript:history.back();'>Zpět</a>"; echo mysql_error(); else: echo "Data byla úspěšně uložena. Pokračujte <a href='admin.php?akce=News'>zde</a>"; endif; echo "</center>"; } a nasledne takto takto: if($akce=="AddNews") AddNews($_POST['id'], $_POST['nazev'], $_POST['datum'], $_POST['popis'], $_POST['photo']); Soubor to uploaduje v poradku ale nazev se do databaze nezapise. P |
||
Medvídek Profil |
#2 · Zasláno: 14. 9. 2011, 10:16:51
Radimovic:
Tak si shválně nech vypsat, co ti vraci $photo v té funkci před dotazem. :) Každopádně bych dotaz do DB prováděl až po uploadu. |
||
Radimovic Profil * |
#3 · Zasláno: 14. 9. 2011, 10:27:54
nevypise nic.
Ok, dotaz provedu po uploadu. Ale i pokud celej upload vynechám a chci ho nechat jenom zapsat do databáze, kolonka photo je prazdná, takže chyba bude někde jinde |
||
Medvídek Profil |
#4 · Zasláno: 14. 9. 2011, 10:34:51 · Upravil/a: Medvídek
Radimovic:
Předpokládám, že input s name photo je typu FILE, neměl by si tedy k němu přistupovat tak, jak se k němu přistupovat má? Tedy jako to děláš tady: $nazev_souboru = $_FILES['photo']['tmp_name']; Jinak doporučuju při uploadu název souboru měnit, radějio odstranit diakritiku atd. a vytvořit tomu unikátní název, aby se nemohlo stát, že se ti soubory přepíší. A očekáváš-li pouze obrázek, tak taky udělt kontrolu mime-type ( $_FILES['photo']['type'] |
||
CZechBoY Profil |
#5 · Zasláno: 15. 9. 2011, 10:06:40
1) INSERT dej po uploadnutí obrázku
2) do SQL dej $cil namísto $nazev 3) sql_injection ;) 4) mime-type jak již bylo řečeno, může útočník uploadnout třeba php skript který se zřejmě spustí máš tam vůbec kontrolu jestli uživatel nahrál soubor? |
||
Leo Profil |
#6 · Zasláno: 15. 9. 2011, 10:17:54
Kontrola mime type je k ničemu, protože to tvrdí prohlížeč, čili to přichází zvenku, a to se pak nesmí věřit ničemu. Sama o sobě není bezpečná ani kontrola skrutečného souboru co přišel, třeba přes getimagesize, je možné uploadnout jpg, který kontrolou projde ale spustím ho jako php kód. Co je potřeba ošetřit je především to, aby se soubor neuložil s příponou ".php". Leo
|
||
CZechBoY Profil |
#7 · Zasláno: 15. 9. 2011, 10:45:46
tak třeba exif informace
|
||
Leo Profil |
#8 · Zasláno: 15. 9. 2011, 10:53:07
CZechBoY:
„tak třeba exif informace“ Nepomůže, pokud to uživatel pošle s příponou .php a vy ji s ní uložíte. Leo |
||
Časová prodleva: 13 let
|
0