Autor Zpráva
Kyblicius
Profil
Zdravím,
teď o prázdninách jsem neměl co dělat, tak jsem se naučil PHP. Chtěl jsem udělat něco užitečného a ve škole jsme si poznámky většinou posílaly přes skype nebo přes uložto apod., což nebylo úplně ideální, takže jsem udělal stránky na sdílení dokumentů a obrázků. Snažil jsem se udělat co nejjednodušší a nejpřehlednější a to se mi snad povedlo. No, posuďte sami.

Adresa: http://nahrajmito.cz/
Jméno: test
Heslo: test

Jsou to moje první stránky, takže očekávám, že toho bude dost, co bych mohl zlepšit. Jen se do mě pusťte. :)
margin
Profil *
Bývá zvykem, že když kliknu vyplním jméno, po stisknutí tabulátoru se dostanu do inputu pro vyplnění hesla a po vypsání hesla opět stisknu tabulátor, tím se dostanu na potvrzovací tlačítko a odentruji, takže nemusím šahat na myš.

Maximální velikost: 2mb
Dva milibajty není moc, ale podažilo se mi nahrát soubory menší, než jeden mega, ale soubor o velikosti 1,5 MB už neprošel.
Rellik
Profil
Cituji: Špatná přípona souboru. nikde sem přitom nenašel informaci o tom, které soubory jsou povolené. Přitom, když budu někomu posílat třeba html stránku, nebo nějaký php script tak nikomu nic nepošlu... Navíc nejdou posílat ani dokumenty z open office calc a hromada dalších souborů z linuxu, které jsou normální pro tento systém (žádné nebezpečné jako třeba to php)... Jo a taky mi nešel nahrát soubor o velikosti 1,6Mb, takže propagovat max upload 2Mb je trochu mimo... ;)
Martin02
Profil
Kyblicius:
Trochu jsem tam zkoušel něco "zvorat" a povedlo se. Ne že bych ti chtěl zničit stránky, jen ti chci ukázat slabé stránky webu.
Když se dostaneš na stránku Spravovat skupiny, už ta by ti sama o sobě měla trochu blbnout (v levé tabulce dole je prázdná buňka, nelze vytvořit/nebo spíš nelze zobrazit nová skupina). To je tím, že jsem vytvořil novou skupinu a do její názvu jsem dal <script type="text/javascript">window.close()</script> neboli zavření okna. Toto úplně nekoná to, co to má konat (zavření okna), každopádně po tom, co jsem to tam napsal nejde vytvořit nová skupina, ani smazat a možná ani spousta dalších věcí.
Pro opravu stačí tam, kde pomocí php zobrazuješ názvy skupin (např. echo $nazev) použít funkci htmlspecialchars() - tedy echo htmlspecialchars($nazev).

A další věc, která je sice trochu mimo sekci Názor na stránku - když sem napíšeš jméno a heslo testovacího uživatele a já to heslo změním... Nevím, kolik lidí ti ještě napíše svoje postřehy ze stránky... :)
Krakatoa
Profil
Martin02:
Dal jsem tam pár </script> a vytváření nové skupiny je vyřešeno :-)

Kyblicius:
Chtělo by to pdf, jpg atd. přímo i zobrazovat, ne?
Proč nejde nahrávat soubor s příponou txt?
margin
Profil *
Koukám, že přípona .jpg nedělá problém, ale soubor s příponou JPG jde nahrát, ale když se kouknu na "Moje soubory", tak je tam otazník.

Koukám změna, "Maximální velikost: 5mb", takže už jde nahrát 5 milibitů!!! Vypadá to, že maximum je 5 megabajtů.
Darker
Profil
Kyblicius:
Hlavička Content-Type se dá zfalšovat. Kontroluj příponu souboru:
$name = $_FILES["x"]["name"];
$name = explode (".",$name);
$pripona = $name[count($name)-1];  //Pripona
unset($name[count($name)-1]);
$nazev = implode(".",$name);
mimochodec
Profil
Připadá mi to dost neohrabané. Předně: jak mě přiměješ k registraci? Podobných skladů je spousta a drtivá většina z nich se obejde bez registrace. Chápu, že tady můžu mít těch souborů víc a regulovat přístup k nim, ale myslím, že nejčastější situace je, že chci někam nahrát soubor, který je moc velký, než abych ho poslal mailem. Potřebuju ho poslat a po stažení smazat, ale bez toho, že bych se někam registroval.

Doporučil bych umožnit klasické nahrání souboru bez registrace, s tím, že si budeš evidovat vazbu souborů na jednotlivé uživatele a když se budou vracet, uvidí ty své staré soubory. Registrací můžeš podmínit třeba jejich smazání nebo zaheslování a všechny pokročilejší funkce, které nabízíš už teď.

Detaily:
- že můžu soubor smazat kliknutím na křížek, je nebezpečné. Můžu se ukliknout, chtělo by to potvrzovací dialog
- u "Nahrát soubor" je nastavení, kdo k němu bude mít přístup. Můžu to ale nastavit jen tady, nikoliv dodatečně.
- přihlašovací formulář, kde se po zadání loginu Tabem dostanu na potvrzovací tlačítko a pak až na heslo, je silně nepohodlný
- design je velmi zvláštní. A nemyslím to jako pochvalu.

Dodatek k tomu zapamatování uživatele: můžeš se chytit několika informací: prohlížeč, IP adresa, OS.. nevím teď co dál. Každému z těch údajů dej nějakou váhu a "jeho" soubory hledej podle nějakého algoritmu. Když mi je nenajdeš, o nic nejde. Když ano, je to významné plus.
peta
Profil
Darker
$str  = $_FILES["x"]["name"];
$pos  = strrpos($str, ".");
$name = substr($str,0,$pos);
$ext  = substr($str,$pos+1);
mimochodec
Profil
Darker, peta:
Nerozumím, jak jste přišli na to, že Kyblicius neumí zjistit příponu souboru. Každopádně oba tam máte tu chybu, že nerozpoznáte, když přípona chybí.
peta
Profil
mimochodec: Dik, to vim. Nechtel jsem kod komplikovat. Spis jsem chtel pridat Darkerovi jinou variantu nez explodovat na pole.
Darker pise o tom, ze se da hlavicka zfalsovat (ze by nekdo podstrcil php kod?) a ze pouziva k detekci podle typu priponu souboru. Coz mi tez neprijde nic extra reseni, protoze pripony muzou byt i stejne nebo chybne a presto je to treba word. Viz jeho doc a docx.
Kyblicius
Profil
Všem díky za rady, už jsem opravil přechod tabulátorem při přihlášení, nahrávání souborů do 2MB (nikoliv 2mb) a vytváření skupin s javascriptem nebo html v názvu. Seznam povolených přípon jsem tam ještě nedal, ale už by mělo jít nahrát vše z tohoto seznamu: http://cz2.php.net/manual/en/function.mime-content-type.php#87856, ale to ještě budu muset změnit, protože se to, jak psal Darker dá zfalšovat. + se ještě chci zeptat: Je tam něco nebezpečného, co bych neměl mít povolené?
Darker
Profil
mimochodec:
Nerozumím, jak jste přišli na to, že Kyblicius neumí zjistit příponu souboru
Tak, že tam šly nahrát PHP soubory. Ve skutečnosti to ale bylo tím, že naivně důvěřoval hlavičce Content-Type.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0