« 1 2 3 4 5 6 »
Autor Zpráva
peta
Profil
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
Nekde tady v diskuzi jsem nasel pekny link, ten se take muze nekomu hodit:
http://www.radinks.com/upload/config.php
Joker
Profil
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!"; 
A pak rename. Jenze, kdybych chtel hackovat, tak do toho zipu dam treba jmeno nejakeho php programu v tom adresari nebo jine jmeno, treba zalohy db. Bud pripravim cloveka o zalozni soubor a nebo mu tam nahraji parazitni php ci mu nejaky php prepisi. coz je nezadouci. Dohledal jse, ze to jde primo vybalit pres getFromIndex a pak ulozit do souboru, napr pres file_put_contents. Spouste lidi by ten kod mohl usnadnit praci.
    $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
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
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í .htaccess

Ně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í
Pokud se u direktivy zadává datová velikost (např. omezení velikosti uploadovaných souborů), je možné ji zadat buď v bajtech jako číslo, nebo zkráceným zápisem.
Alphard
Profil
[#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
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á.
Davex
Profil
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.
Amunak
Profil
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
Souhlasím, v nejbližší době tam něco napíši.
Alphard
Profil
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
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.
lionel messi
Profil
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
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']));
ale chci tam dát parametrizovaný dotaz
("SELECT COUNT(*) FROM users WHERE username = ? AND password = ?", $username, $password)
Navíc tam není dořešené escapování pro html kontext a nelíbí se mi tam odhlášení (zničí i jiné proměnné v session). Větší přepracování mám v plánu, už asi 3 roky :-) Dávám si to za úkol do konce února.

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
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
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().
Alphard
Profil
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
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
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
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
kokolino [#25]:
A tato verze pastebin.com/03E8YbEV? S jednoduchým vlastními funkcemi pracovat umíš?
Jan Tvrdík
Profil
Nebo třeba takhle: gist.github.com/JanTvrdik/8d813cfc7a4a8e0db2c7 =)
Kubo2
Profil
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
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.
« 1 2 3 4 5 6 »

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0