NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 18 - Tvorba knihoven v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:21.3.2014 16:36

Nechce se mi číst ten román, ale už první věta je špatně - "Ošetrovať stačí vždy iba tie vstupy, ktoré si získal priamo od používateľa". Ty nikdy nevíš která proměnná to je, protože ošetřuješ při výpisu, ne při zápisu. Když ti uživatel něco pošle, tak v tom může být XSS. Ale ty tu hodnotu uložíš do databáze (neošetřenou, protože do DB se ukládají surová data) a až při načtení z DB a při výpisu ji budeš ošetřovat a tam to už nepoznáš odkud byla.

Editováno 21.3.2014 16:36
Odpovědět
21.3.2014 16:36
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na jnao01
David Hartinger:21.3.2014 16:41

Díky, opraveno.

Odpovědět
21.3.2014 16:41
New kid back on the block with a R.I.P
Avatar
Mazwor
Člen
Avatar
Mazwor:18.7.2014 1:12

Ahoj,
děkuju za skvělé tutoriály, moc mi pomohly. Zatím jsem neměl s ničím problém, jen tentokrát jsem narazil na nesrovnalost.
Pochopil jsem správně podle 13. kapitoly ("S textovými řetězci lze v novějších verzích PHP pracovat jako s polem"), že tedy např. text 'ahoj' lze považovat za pole, kde znak a má index 0, znak h má index 1 a tak dále?
Snažil jsem se totiž u funkce vypisující počet samohlásek použít cyklus foreach následovně:

foreach ($text as $i) {
         if (in_array($i, $samohlasky)) {
             $pocet++;
         }
}

Doufal jsem, že nebude nutné použít funkci mb_substr(), ale při zadání prostého textu (např. $text = 'ahoj') na mě vyskočila chyba. Když jsem pak zkusil do vstupu jako proměnnou $text zadat pole (např. $text = array('a', 'h', 'o', 'j')), vše běželo v pořádku a výstup mi vypsal číslo 2 (dvě samohlásky).
Dělám někde chybu nebo pouze příkaz foreach nedokáže samostatný text zpracovávat jako pole?

Předem moc díky za odpověď, snad jsem vše popsal srozumitelně, teprve s programováním začínám, tak doufám, že jsem nenapsal úplnou hloupost :D.

Editováno 18.7.2014 1:14
Odpovědět
18.7.2014 1:12
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Odpovídá na Mazwor
Martin Konečný (pavelco1998):18.7.2014 1:26

Foreach požaduje jako parametr pole, řetězec nebere. Můžeš si ten text do pole nacpat pomocí funkce str_split(). Ta ale neumí pracovat s UTF-8 řetězci.
Možná k tomu pomůže článek na stackoverflow.com:

http://stackoverflow.com/…ray-of-chars

Odpovědět
18.7.2014 1:26
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Mazwor
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Mazwor:18.7.2014 1:48

Super, moc díky za rychlou odpověď! :)
Tak nějak jsem předpokládal, že problém bude v tom, že si foreach řetězec nedokáže přebrat jako pole, jen mě zmátla ta poznámka z předešlých kapitol, kde bylo řečeno, že lze string za pole považovat (a bylo tak s ním i částečně nakládáno). Je to tedy nejspíš tak, že se sice textový řetězec za určitých podmínek jako pole chová, ale je nutné to brát s rezervou (?). Teď už je mi vše jasné, díky.

Odpovědět
18.7.2014 1:48
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Odpovídá na Mazwor
Martin Konečný (pavelco1998):18.7.2014 11:46

Popravdě to neznám tak detailně, takže ti neřeknu, jak přesně se to chová na úrovni bitů, ale co znám, tak řetězec sám o sobě polem není, jen můžeš přistoupit k jeho bytům pomocí indexu (jako u pole). Tzn. že třeba u:

$string = "ahoj";
echo $string[0];

ti to vypíše první byte toho stringu (čili 'a').

Odpovědět
18.7.2014 11:46
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
filiploja
Člen
Avatar
filiploja:31.3.2015 16:17

Fakt veľmi dobrý tutorál. Chcel by som sa ale opýtať, snažil som sa to naprogramovať použitím foreach ale funguje mi to len s písmenami bez diakritiky, ako náhle zadám á é č tak tie písmená nezapočíta aj keď som ich do pola prial. V čom môže byť chyba?

function pocet($text)
      {$text=mb_strtoupper($text);
       $pole=array('Á','A', 'É', 'Í','Č');
       $dlzka=mb_strlen($text);
       $pocet=0;

       for ($i=0;$i<$dlzka;$i++)
         foreach ($pole as $index => $hodnota)
           if ($text[$i]===$hodnota)
             $pocet++;

       return $pocet;}
 
Odpovědět
31.3.2015 16:17
Avatar
MArtin
Člen
Avatar
MArtin:30.10.2015 15:55

Ja by som sa chcel opytat, ze ked chcem prerobit projekt do OOP a mam kniznicu s jednoduchymi funkciami, ktore spolu nesuvisia a mozu byt pouzite na viacerych miestach vramci projeku, je v poriadku nacitat takuto kniznicu s funkciammi rovno niekde na zaciatku alebo je lepsie vytvorit nejaky class kontainer a pristupovat k nim staticky? Alebo existuje ina metoda?

 
Odpovědět
30.10.2015 15:55
Avatar
Odpovídá na filiploja
Martin Konečný (pavelco1998):30.10.2015 17:32

Chyba je v tom, že se to nebere po znacích, ale po bytech. Písmena jako ěšč atd. mají byty dva (aspon myslim), proto ti to vypíše nějakou blbost.

Odpovědět
30.10.2015 17:32
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na filiploja
Neaktivní uživatel:30.10.2015 18:23

Jak říká Martin Konečný (pavelco1998).
Změň

$text=mb_strtoupper($text);

na

$text=preg_split("//u", mb_strtoupper($text));
Odpovědět
30.10.2015 18:23
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 10 zpráv z 45.