NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Diskuze: Nahrávání obrázku

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Rasta_Man
Člen
Avatar
Rasta_Man:11.5.2013 15:59

Ahoj potřeboval bych poradit kód na Upload a Ověření obrázků, spíše to ověření zda je obrázek PNG nebo JPEG.

Předem děkuju.

 
Odpovědět
11.5.2013 15:59
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Rasta_Man
David Hartinger:12.5.2013 10:19

Ahoj, k nahrání použiješ jednoduše formulář (input type="file" name="soubor").

V PHP potom pracuješ s polem $_FILES. K přesunutí obrázku na dané umístění slouží funkce move_uplaoded_file, takto:

$nazev = ($_FILES["soubor"]["name"]);
$docasneUmisteni = ($_FILES["soubor"]["tmp_name"]);
$velikost = ceil(filesize($docasneUmisteni)/1024/1024);
move_uploaded_file($docasneUmiseni, 'nahrane/' . $nazev);
}

Kód výše je nutné zabaezpečit podle typu souboru nebo přípony, aby ti někdo nenahrál skript .php a nespustil si ho u tebe na serveru.

K ověření typu slouží:

$info = getimagesize($docasneUmisteni);
$typ = $info[2];
if ($typ == IMAGETYPE_PNG)
...
Editováno 8.10.2013 11:44
Nahoru Odpovědět
12.5.2013 10:19
New kid back on the block with a R.I.P
Avatar
Nahoru Odpovědět
13.6.2013 18:17
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:13.6.2013 18:21

Ne, našel jsi dost špatný návod, udělej to jak jsem ti říkal výše.

Nahoru Odpovědět
13.6.2013 18:21
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:13.6.2013 18:28

Vždyť to je podobný :D

Nahoru Odpovědět
13.6.2013 18:28
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:13.6.2013 18:28

Také tam máš chybu.

Nahoru Odpovědět
13.6.2013 18:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Nahoru Odpovědět
13.6.2013 18:29
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:13.6.2013 18:45

Nečetl jsem to po sobě, není to kompletní kód, ale postup. Co poslal Dan umožňuje vykrást databázi.

Nahoru Odpovědět
13.6.2013 18:45
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:13.6.2013 19:09

Vždyť tam není o databázi ani zmínka ?

Nahoru Odpovědět
13.6.2013 19:09
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Žůrek - misaz:13.6.2013 19:32

ale co kdyby ti tam někdo poslal php script a vykrad tvoji databázi?

 
Nahoru Odpovědět
13.6.2013 19:32
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:13.6.2013 19:34

To je jedno, mají špatně ošetřenou kontrolu typů souboru, lze tam podstrčit PHP soubor co se bude tvářit jako obrázek. A přes ten si vypsat obsah skriptu, kterým se připojuješ k db a tak zjistit heslo. Zbytek si domyslíš sám.

Nahoru Odpovědět
13.6.2013 19:34
New kid back on the block with a R.I.P
Avatar
Nahoru Odpovědět
13.6.2013 19:36
Neaktivní uživatelský účet
Avatar
Nahoru Odpovědět
13.6.2013 19:39
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:13.6.2013 19:45

Protože jsi tam nepodstrčil falešný typ. Jinak i tu kontrolu velikosti mají špatně.

Nahoru Odpovědět
13.6.2013 19:45
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:13.6.2013 19:51

tu stejně nepoužívám :)

Nahoru Odpovědět
13.6.2013 19:51
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:13.6.2013 19:52

Pokud tomu tady někdo opravdu bude rozumět, tak to bude sdraco. Nevím co tu řešíte, zrovna v tomhle bych mu bezmezně věřil - podívejte se na devbook ...

Nahoru Odpovědět
13.6.2013 19:52
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:13.6.2013 19:56

No na devbooku je hodně věcí, co by se měly udělat lépe :D Ale díky.

Nahoru Odpovědět
13.6.2013 19:56
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:13.6.2013 19:59

CSS přeci není řešeno inline zápisem, vybírání lidí v příspěvcích také funguje, double post také není problémem - co že by šlo udělat lépe :D?

Nahoru Odpovědět
13.6.2013 19:59
Neaktivní uživatelský účet
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:13.6.2013 20:16

Myslím že to je problémem který je neustále zacyklen :). Jakimle se nabalují věci , zjistíme že už to není tka pěkný jak bývalo... to mi připomíná moji tvorbu enginu :D ... opět jsem přepsal mírně jádro a stejně není dořešený úplně všehcno, ono to ani nepůjde - vyřešit vše ale chtěl bych většinu tak aby to bylo univerzálně připravený :D ... ale jsem s ním už i celkem spokojený :) Rýsuje se to pěkně ... brzy dám nějaký info

Nahoru Odpovědět
13.6.2013 20:16
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:13.6.2013 20:41

Jenže oni tam mají kontrolu falešných typů.

Nahoru Odpovědět
13.6.2013 20:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:13.6.2013 20:42

SQL dotazy :)

Nahoru Odpovědět
13.6.2013 20:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:13.6.2013 20:54

Do těch nevidím, ty kritizovat nemůžu :)

Nahoru Odpovědět
13.6.2013 20:54
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:13.6.2013 21:02

Však já mu věřím, ale taky to trochu potřebuju vysvětlit :) (proto jsem mu říkal ať na to udělá tutoriál...)

V tom návodu, co jsem si našel já, to bylo vysvětlený...

Nahoru Odpovědět
13.6.2013 21:02
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:13.6.2013 21:10

Pokud vím, mají to jen přes to co odeslal uživatel, tam si může každý napsat co chce. Co se neověří na serveru není bezpečné.

Nahoru Odpovědět
13.6.2013 21:10
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Nahoru Odpovědět
13.6.2013 21:18
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:11.6.2014 17:23

To 1024/1024 je zjištění velikosti?

Nahoru Odpovědět
11.6.2014 17:23
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
mkub:12.6.2014 2:47

funkcia filesize() ti vrati velkost suboru v bajtoch a tych 1024/1024 je prepocet na MB
dalo by sa to tych 1024/1024 zapisat aj ako 1048576 (1024*1024)
cize:

$velikost = ceil(filesize($docasneUmisteni)/1024/1024);

by sa dalo zapisat aj ako:

$velikost = ceil(filesize($docasneUmisteni)/1048576);
 
Nahoru Odpovědět
12.6.2014 2:47
Avatar
Neaktivní uživatel:8.9.2014 21:00

Jak se to dá udělat tak aby ten soubor mohl být jakýkoli jen ne php a zároveň to bylo bezpečné?

Nahoru Odpovědět
8.9.2014 21:00
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 28 zpráv z 28.