Autor | Zpráva | ||
---|---|---|---|
peta Profil |
#1 · Zasláno: 18. 3. 2014, 14:00:33
Nevim, zda to nekde je ve faq, ale ted jsem treba hledal, jak zmenit limity pro upload. Na vsech ruznych forech maji furu reci, kde, jak, ale neni tam example. Predstavoval jsem si neco takoveho:
--- php.ini --- upload_max_filesize = 16M post_max_size = 16M --- .htaccess --- php_value upload_max_filesize 16M php_value post_max_size 16M http://www.radinks.com/upload/config.php |
||
Joker Profil |
#2 · Zasláno: 18. 3. 2014, 14:07:11
peta:
Nevidím moc důvod, proč v FAQ popisovat jednotlivé direktivy php.ini Jsou jich stovky a jsou popsány v manuálu. |
||
peta Profil |
Joker:
To je ale presne ten stupidni pristup, na ktery jsem pri hledani narazil. Casto potrebujes nastavit limity pro upload. Melo by to byt u faq k upload a neni. A potrebujes vedet, jak se to dela. Ano, v manualu mas stovky promennych, ale neni tam jediny priklad toho, jak se to zapisuje do htacces a jak do php.ini a ze ty zapisy jsou odlisne. Konkretne na odkazane strance neni zadny priklad :) Tez jsem treba resil import xml do db, kdy jsem potreboval nahrat zip (500kB -> 10MB), protoze se tak daji obejit 2MB limity. Coz bych take povazoval za zajimavou informaci do kapitoly o upload, to nejspis resi spoustu lidi, import xml do mysql z ucetnictvi. A treti vec, kterou jsem pracne hledal. v tom zipu mam xml. Potrebuji ho move_upload, a vybalit do souboru import.xml. Normalne bys pouzil http://cz2.php.net/manual/en/zip.examples.php $zip = new ZipArchive; $zip->open('teste.zip'); $zip->extractTo('./'); $zip->close(); echo "Ok!"; $zip = new ZipArchive; if ($zip->open($from) === true) { for($i = 0; $i < $zip->numFiles; $i++) { file_put_contents($to, $zip->getFromIndex($i)); chmod ($to, 0777); $zip->close(); //echo "Odzipovano xml."; break; } |
||
Joker Profil |
#4 · Zasláno: 19. 3. 2014, 09:06:16
peta:
„Casto potrebujes nastavit limity pro upload.“ Třeba já to nikdy nepotřeboval a takhle po paměti se mi ani nezdá, že by to byl nějak často řešený problém tady na diskusi. Kolik dotazů tu na to padlo? Navíc u velké části tazatelů řešení nebude tohle, ale „Napište na hosting, ať zvýší velikost uploadu“. „Melo by to byt u faql k upload a neni.“ FAQ o uploadu je jen pár odkazů na jiné články. „neni tam jediny priklad toho, jak se to zapisuje do htacces a jak do php.ini a ze ty zapisy jsou odlisne“ V FAQ je ukázka, jak nastavit display_errors a error_reporting. Zrovna upload je zvláštní v čem? Nebo bychom tam měli mít ukázky nastavení všech těch 648 položek z manuálu? |
||
peta Profil |
Joker:
google = "upload velikost souboru site:diskuse.jakpsatweb.cz" Přibližný počet výsledků: 375 google = "pri nahravani velikost souboru site:diskuse.jakpsatweb.cz" Přibližný počet výsledků: 141 google = "nahrani velikost souboru site:diskuse.jakpsatweb.cz" Přibližný počet výsledků: 197 google = "upload velkych souboru site:diskuse.jakpsatweb.cz" Přibližný počet výsledků: 90 >> Navíc u velké části tazatelů řešení nebude tohle, ale „Napište na hosting, ať zvýší velikost uploadu“. Ano, muze, ale casto to neni resenim. Hosting ma tyhle limity nastavene natvrdo, podle toho, jaky druh si platis Free/Lite/Full/Business. Tim padem se touhle cestou casto nemuzes ubirat. Proto mi prijde dobre zminit dalsi a vhodnejsi postupy. "pár odkazů na jiné články" Ano, ty jsou strasne slozite a neprehledne napsane a pomoc jsem v nich nenasel. "V FAQ je ukázka" Ano, ale ve FAQ nemas zadne informace, obecny seznam moznosti. Odkazy na clanky, ktere zitra muzou byt smazane mi neprijde cool. Pro google potrebuji vyhledavaci slova. Jediny, pomerne uzitecny odkaz je na manual v kapitole "Nefungují proměnné z formuláře nebo z URL (vypnuté register globals)", ktery ovsem v upload sekci nenajdes :) Nejčastější potíže s PHP (FAQ) » Upload souborů Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals) Chceme-li uploadovat soubor, pracujeme s $_FILES. Dalsi uzitecny odkaz by mel byt http://cz1.php.net/move_uploaded_file A pak by potesil nejaky vlidny popisek, 2-3 radky, ktery objasni zakladni princip a proc odkazujes na manual. Jestli chces, muzu se pokusit neco takoveho sepsat? --- Jo, mimochodem, koukam, ze mas stale v Nejčastější potíže s PHP (FAQ) » Výpis výsledků z databáze (nebo z jiného zdroje) do tabulky o více sloupcích tu nepeknou vec s $i % COLS == 0 . To tedy neni moc like pro zacatecniky a pokrocily by to zas nikdy nepouzil, protoze zhlediska mnoha cyklu jsou rychlejsi zpusoby nez deleni.
|
||
Joker Profil |
#6 · Zasláno: 19. 3. 2014, 11:23:14
peta:
„google =“ Ne, nebudu prohledávat stovky výsledků Googlu a hledat něco relevantního. „Ano, muze, ale casto to neni resenim. Hosting ma tyhle limity nastavene natvrdo(…)“ V takovém případě důsledkem výše uvedené rady nejspíš bude, že dotyčný si napíše .htaccess a pak si sem přijde stěžovat, že mu to nefunguje. „Odkazy na clanky, ktere zitra muzou byt smazane mi neprijde cool.“ Říká člověk „proslavený“ (mimo jiné) odpověďmi obsahujícími několik nicneříkajících odkazů bez jakéhokoliv vysvětlení. Shodou okolností jsem ale při souvisejícím Googlení narazil na článek Jakuba Vrány, který tu problematiku docela hezky vysvětluje. Přidám ho do FAQ. Což snad řeší i to, na co si stěžuje peta. |
||
peta Profil |
Joker:
"Ne, nebudu prohledávat stovky výsledků Googlu" Ty slova jsem zadal tady do vyhledavani, presmerovalo mne to na google, tak jsem to napsal uz primo pro google a neztracel cas vysvetlovanim, ze jsem pouzil hledani na jwp. Myslel jsem, ze jako moderator vis, ze vyhledavani nahore odkazuje na google. Ale o to nejde, najde to prispevky z fora a je jich tam pomerne dost na to, aby stalo za to rozebrat tema podrobneji nez jen 4 odkazy. článek Jakuba Vrány - ne tak uplne, ale jsou tam slova, kterych se da pri vyhledavani chytit. Zkus tam taky pridat ten prvni link, tam je to sice v anglictine, ale tez slusne rozepsane. Kazdopadne dik, je tam treba zminka o chybe pri prekroceni max size, kterou jsem tam chtel do meho scriptu zabudovat a nevedel, pod cim to hledat. http://www.radinks.com/upload/config.php stěžuje peta - ? ja myslel, ze jsme ve foru navrhy ne stiznosti :) |
||
Tori Profil |
Co kdybychom do části "Konfigurace PHP" přidali další bod, kde by bylo obecně popsané, jak měnit nastavení PHP v .htaccess? To by pokrylo petovy požadavky na nastavování limitu uplodu, a zároveň to je dostatečně obecné, aby mělo smysl to tam přidat. Např.:
Konfigurace PHP pomocí .htaccessNěkterá nastavení je možné měnit i v souboru .htaccess (pokud to váš hosting umožňuje), zapisují se ale trochu jinak než v php.ini. Nejdřív je potřeba zjistit v přehledu konfiguračních direktiv, jestli se dané nastavení vůbec dá změnit pomocí .htaccess. Pokud ano, musí tam být u něj napsané "PHP_INI_ALL" nebo "PHP_INI_PERDIR". Potom si kliknutím na název direktivy zobrazíme její podrobnější popis - tady nás zajímá hlavně datový typ (je uvedený hned za názvem direktivy).# takto nastavujeme logické hodnoty (boolean) php_flag název On #nebo php_flag název Off # všechny ostatní typy nastavujeme pomocí php_value. Příklady: php_value iconv.internal_encoding "UTF-8" # pokud řetězec neobsahuje mezeru, uvozovky jsou nepovinné. php_value upload_max_filesize 5M # zkrácený zápis datové velikosti, viz dále php_value error_reporting 30719 # odpovídá hodnotě E_ALL v PHP 5.3. Na rozdíl od php.ini nemůžeme používat konstanty. php_value název none # klíčové slovo "none" zruší předchozí nastavení |
||
Alphard Profil |
#9 · Zasláno: 19. 3. 2014, 14:34:13
[#8] Tori i ostatní
Konkrétně tato formulace samostatně není použitelná, protože je třeba vycházet z již přítomné sekce Nejčastější potíže s PHP (FAQ) » Zapnutí výpisu všech chyb a varování. Ale určitě si umím představit její začlenění. Zároveň bych neviděl problém v tom, kdybychom v sekci konfigurace PHP vytáhli několik nejpoužívanějších parametrů jako příklady. Odkazy na manuál, jen aby začátečníci nemuseli pročítat ty stovky parametrů v manuálu. |
||
peta Profil |
Mozna pak udelat v kazde sekci, ktera tam ma parametry, odkaz. Aby clovek vedel, ze tu neco takoveho je. Treba, mne by nenapadlo hledat rozdily zapisu php.ini vs .htaccess jako zapnuti zobrazovani chyb.
--- Mimochodem, vim, ze to je off, ale mam na druhe strance "Nejnovější diskuse" * Rozbalování a sbalování obahu 1 sobulek 18.3.2014 13:34:53 * Klikací menu 1 Pavel015 18.3.2014 11:38:01 * Pomoc s dropdown menu 4 jefitto44 18.3.2014 10:54:31 * li ul horizontálne rozbalovacie menu 11 Tomáš123 17.3.2014 21:27:49 Nejspis by jim problemy vyresil funkcni kod menu :) To jsou hned 4 zodpovezene dotazy jednim faq :) Kdyz pouziji zas google * menu site:diskuse.jakpsatweb.cz -- 17 900 * rozbalovaci menu site:diskuse.jakpsatweb.cz -- 339 * rozbalujici menu site:diskuse.jakpsatweb.cz -- 58 * rozbal menu site:diskuse.jakpsatweb.cz - 267 * vysouvaci site:diskuse.jakpsatweb.cz - 489 * vysunovaci site:diskuse.jakpsatweb.cz - 42 Ze by to chtelo nejake faq i pro ostatni veci. nebo na jpw spesl stranky pro zacatecniky, ktera bude obsahovat kody/ukazky nejbeznejsich veci, jako menu, tabulka, 2 sloupcovy layout, 3 sloupcovy a pod... mozna bych to dal jako zalozku desing stranek nahoru do menu. |
||
Tori Profil |
#11 · Zasláno: 20. 3. 2014, 23:23:45
Zdá se, že při nějaké editaci FAQ zmizel konec #2. Možná se to týká přidání/editace části "Jaké kódování použít pro pro stránku", ta mi připadá poměrně nová.
|
||
Časová prodleva: 19 dní
|
|||
Davex Profil |
#12 · Zasláno: 8. 4. 2014, 21:55:40
Tori:
„Zdá se, že při nějaké editaci FAQ zmizel konec #2.“ Příspěvek je moc velký. Kdyby se někomu chtělo příspěvek naklonovat a rozdělit obsah, tak podle webarchivu bylo na konci // zde chceme řetězec "true" a ne logickou hodnotu true, proto použijeme uvozovky $pozice = strpos("Slovo true je obsaženo v tomto řetězci", "true"); // vyhledáváme v řetězci slovo "true" Při té příležitosti se mi podařilo odhalit nedostatek nového zobrazení FAQ a nepříjemnou vlastnost porovnávání verzí příliš velkých příspěvků s mnoha revizemi, ale o tom možná někdy jindy a jinde. |
||
Časová prodleva: 2 měsíce
|
|||
Amunak Profil |
#13 · Zasláno: 10. 6. 2014, 21:39:55
PHP FAQ by možná mohlo obsahovat nějakou zmínku o nejčastěji používaných, v nových verzích *deprecated* funkcí; především mysq_*, a nabídnout alternativy.
|
||
Alphard Profil |
#14 · Zasláno: 10. 6. 2014, 22:01:53
Souhlasím, v nejbližší době tam něco napíši.
|
||
Časová prodleva: 2 měsíce
|
|||
Alphard Profil |
#15 · Zasláno: 2. 8. 2014, 15:55:56
PhpVersionSwitcher – nástroj na přepínání verzí PHP přišlo v době, kdy jsem si našel chvíli trochu upravit FAQ.
Tori [#8]: Díky, začleněno v rozšířeném Nejčastější potíže s PHP (FAQ) » Konfigurace PHP. Ve stejné sekci je uveden i PHPVersionSwitcher. Tori [#11], Davex [#12]: Také díky, kódování v php jsem ze shora přesunul do vlastní sekce, takže zbylo trochu místa pro opravení ztraceného obsahu. Bohužel to není první případ, dávejte všichni prosím pozor, jestli nepíšete moc dlouhé příspěvky. Tím jsou připomínky snad zpracovány. Jsem si vědom, že se v tom dá vyznat jedině s fulltextovým vyhledáváním, ale nevím, jak to řešit. Napadá mě jenom vytahat z toho co nejvíc ucelených věcí, uvést je na pehapko.cz a zde nechat jen nejdůležitější část a zbytek pouze odkazovat. Konstruktuvní návrhy řešení jsou vítány. |
||
Tori Profil |
#16 · Zasláno: 2. 8. 2014, 21:24:06
U FAQ mi trochu není jasná jedna věc: jakým způsobem předpokládáme, že bude používáno (resp. chceme, aby bylo používáno)? Neumím si moc představit, že by to někdo postupně procházel od začátku do konce, není to moc logicky uspořádané. Odkazu na rozcestník na konci prvního příspěvku jsem si po letech na djpw všimla až teď, pod těmi výraznými texty není moc vidět.
Návrhy: 1. vyhradit první příspěvek pouze na obsah, a odkazovat jen na jmenné kotvy (obsah se pak dá libovolně uspořádat, např. podle stupně min. nutných znalostí). Takže přijdu na FAQ a hned vidím navigaci. 2. současný obsah prvního příspěvku se může přesunout do #>3 místo současného rozcestníku. 3. odkaz na vlákno „Framework ano či ne“ v #>1 bych dala pod #>navrh-aplikace 4. pod #>informace přidat odkaz na pehapko.cz 5. na konci delších částí (resp. aspoň jednou na každou výšku obrazovky) by mohly být odkazy nahoru na obsah 6. pokud je pod nadpisem jen externí odkaz a žádný text, mělo by to patřit pod #>uzitecne-odkazy (momentálně se to týká jen části #>vykon v prvním příspěvku) |
||
Alphard Profil |
Obsah je v sandboxu generován automaticky. Já to vlákno vidím takhle ctrlv.in/369776 (nevšímejte si hlavičky, to je zase jiný experiment). V obsahu je i tak nelogická struktura, to změním. Současný rozcestník by měl časem zmizet.
Díky i za další nápady, někdy (radší neříkám datum) to zkusím trochu přeskládat. „jakým způsobem předpokládáme, že bude používáno (resp. chceme, aby bylo používáno)?“ To je ten zásadní problém. Vyvíjelo se 10 let formou přidávání tam „kde bylo místo“. Já se v tom orientuji pomocí fulltextu. Rád bych slyšel nějaké návrhy, jak to koncipovat. |
||
Časová prodleva: 6 měsíců
|
|||
lionel messi Profil |
#18 · Zasláno: 8. 2. 2015, 15:15:59
Zdravím,
keďže databázová extenzia MySQL je označovaná ako zastaralá a v PHP 7 bude odstránená, už dlhšiu dobu jej používanie neodporúčame ani začínajúcim programátorom. Napriek tomu, že v FAQ na túto skutočnosť upozorňujeme, niekoľko kódov z často kladených otázok však mysql_* funkcie používa (napr. návod na registráciu a prihlásenie užívateľov, ktorý napríklad ja často odkazujem). Samotný prechod na MySQLi je síce jednoduchou záležitosťou, domnievam sa však, že by kódy pre začiatočníkov mali používať MySQLi a tak som sa rozhodol niektoré kódy z FAQ prepísať tak, aby využívali iba toto podporované rozšírenie. Zmenil som len absolútne nevyhnutné veci tak, aby neprišlo k žiadnej inej zmene a konzistencia kódu zostala zachovaná. Bol by som veľmi rád, keby sa našli skúsenejší programátori ochotní sa mojim zmenám venovať, upozorniť na chyby, aby napokon mohli byť kódy v FAQ primerane zaktualizované. Registrácia užívateľov Výpis výsledkov z db do viacstĺpcovej tabuľky (dovolil som si spojiť riadkové a stĺpcové radenie do jedného súboru a naznačiť oddelenie komentármi) Odlíšenie párnych a nepárnych riadkov 1 Odlíšenie párnych a nepárnych riadkov 2 (to isté len iný spôsob a generuje sa odrážkový zoznam) Warning mysql_fetch_array() (nebo jiná MySQL funkce): supplied argument |
||
Alphard Profil |
#19 · Zasláno: 8. 2. 2015, 15:34:07
Díky za připomenutí.
K té registraci uživatelů, nešel bych cestou klasického escapování $username = db_escape($link, trim($_POST['username'])); ("SELECT COUNT(*) FROM users WHERE username = ? AND password = ?", $username, $password) Zároveň už mám nějakou dobu rozepsaný článek „Tipy pro efektivní práci s databází pomocí dibi pro začátečníky“, ale pořád si nejsem jistý, jestli je správné takto propagovat dibi. Bohužel ani MySQLi, ani PDO se mi nezdá dostatečně dobré na rutinní používání. |
||
Jan Tvrdík Profil |
#20 · Zasláno: 8. 2. 2015, 15:54:38
Nevidím moc smysl ve vytváření
db_escape jako aliasu mysqli_real_escape_string , akorát to zvyšuje komplexitu kódu a snižuje čitelnost. Jinak těch problémů tam je spousta, asi to nemá cenu vypisovat, počkám si, až to Alphard přepíše =)
|
||
Alphard Profil |
#21 · Zasláno: 8. 2. 2015, 15:57:36
Jan Tvrdík:
„Nevidím moc smysl ve vytváření db_escape jako aliasu mysqli_real_escape_string “
Kdysi dávno tam bylo myslím zapodmínkované ověřování get_magic_quotes_gpc(). |
||
Časová prodleva: 6 dní
|
|||
Alphard Profil |
#22 · Zasláno: 15. 2. 2015, 00:20:11
Jan Tvrdík:
„počkám si, až to Alphard přepíše =)“ To abych to sem dal s předstihem :-) pastebin.com/AbZ8uxZH Nedokázal jsem vytvořit publikovatelný kód bez OOP, takže mě zajímá názor i méně zkušených, vyznáte se v tom? Dokázali byste to použít? Kromě vyčlenění samotné aplikační logiky jsem se snažil rozbít tu původní celoscriptovou podmínku na menší bloky, které by měly být lépe použitelné. |
||
Jan Kozák Profil |
#23 · Zasláno: 15. 2. 2015, 09:23:10
Mám pocit, že jsi špatně odhadnul cílovou skupinu, Alpharde. Člověk, který se musí ptát na to, jak zařídit registraci uživatelů, tomu skriptu rozumět nemůže. Sice tu na Diskusi někteří lehce pokročilí uživatelé předkládají začátečníkům rádoby sofistikovaná řešení, ale dělají to spíš pro vlastní zviditelnění, nemám pocit, že by tazatel odcházel poučen.
Nevybavuji si žádný případ, kdy bych mohl tazatele na tvé zpracování odkázat s ohledem na jeho předpokládané znalosti. |
||
Alphard Profil |
#24 · Zasláno: 15. 2. 2015, 10:51:51
Ano, tuto obavu jsem naznačoval, mám připravené záložní řešení, motivace je přibližně následující. Než jsem to začal psát, prošel jsem i existující návody (klidně odkáži jinam, nemám potřebu psát vše vlastní), ale nenašel jsem prakticky nic, co by se mi nezdálo ošklivé. Když se dívám na kódy začátečníků i lehce pokročilých, zdají se mi jak z minulého století, ale pak si řeknu, že kromě studia zdrojových kódů frameworků nemají začátačníci v podstatě žádné zdroje, které studovat. Chtěl jsem vytvořit kód, který by mohl třeba i inspirovat středně pokročilé uživatele, ne jen 101. polovičaté řešení.
Mé dojmy jsou takové, že když se dá dohromady třeba naše přihlašování, do toho se nakopíruje nějaké řešení pro dynamické includování obsahu a vše zůstane uprostřed výpisu html, vznikne nepřehledné a těžce upravitelné řešení. Napadlo mě, že o tento kód rozšířím pokročilou kapitolu na pehapku Sessions nebo to tam po domluvě s Jokerem přidám do pokročilé části jako hotové řešení. Vytvoření zjednodušené verze pro úplné začátečníky se nebráním, co považuješ za největší problém? To, že jsem rozbil tu velkou podmínku považuji za výhodné, byť to čtenář možná hned neocení, dle příkladu by podle mě měl být schopný s tím pracovat. Kdybych tam dal jednoduché hashování a OOP nahradil prostými funkcemi (ale jinak zachoval současnou strukturu), bude to lepší? Asi nějak takhle pastebin.com/03E8YbEV. |
||
kokolino Profil |
#25 · Zasláno: 15. 2. 2015, 11:15:06
Alphard:
Ako úplny začiatočník si dovolím súhlasiť s Jan Kozák ten OOP kód je na mňa náročný (mám len minimálne znalosti OOP, čo som si prečital teóriu po rôznych fórach). AK by som ho mal v budúcnosti upraviť, doplniť o nejaké veci nezvládol by som to. mimo téma: nemohli by ste spraviť nejaký malý web v OOP a potom aj procedurálne, poukázať tak na rozdieli a výhody ako inšpiráciu. |
||
Alphard Profil |
#26 · Zasláno: 15. 2. 2015, 11:20:37
|
||
Jan Tvrdík Profil |
#27 · Zasláno: 15. 2. 2015, 11:34:38
Nebo třeba takhle: gist.github.com/JanTvrdik/8d813cfc7a4a8e0db2c7 =)
|
||
Kubo2 Profil |
#28 · Zasláno: 15. 2. 2015, 12:31:49
Alphard:
„ // na db connection bych se asi dostal pomoci global “
Použitie global je zlo. Možno transparentnejším riešením by bolo volanie funkcie vrátivšej odkaz na objekt pripojenia k databázi, asi nejak takto:
/** * @param bool * @return \PDO * @throws \PDOException */ function getDbConnection($new = false) { static $pernament; if($pernament instanceof \PDO) { if($new) { return clone $pernament; } return $pernament; } $pernament = new \PDO('mysql:host=localhost;dbname=djpw'); } |
||
Jan Tvrdík Profil |
#29 · Zasláno: 15. 2. 2015, 13:35:38
Kubo2:
Blahopřeji k vymyšlení horšího řešení než global . Je to úplně stejně globální, akorát to vyžaduje víc kódu.
|
||
Kubo2 Profil |
Jan Tvrdík:
Nie je zase o toľko horšie. Pri getDbConnection() máš zaručené, že ti vždy vráti objekt PDO alebo vyhodí PDOException , oproti tomu však nikdy nemáš zaručené, že v $db bude vždy objekt typu PDO. V rozsiahlejšej aplikácii sa ti pri znovupoužívaní premenných omylom môže stať, že do $db priradíš niečo úplne odveci, a zhodíš tak každú časť aplikácie, ktorá onu globálnu premennú používa.
|
||
Téma pokračuje na další straně.
|
0