Přihlášení

registrace ~ obnova hesla

MyEgo.cz › Užitečné funkce pro PHP - díl 1. .

Užitečné funkce pro PHP - díl 1.

Thursday, 29.07.04 - PHP - autor: Radek Hulán

V tomto seriálu budu publikovat jednoduché funkce v PHP, které jsou ovšem velice užitečné pro běžné programování redakčního systému.

Vytvoření náhodného hesla pro uživatele

function createPassword($length){
 $vowels = array('a', 'e', 'i', 'o', 'u');
 $cons = array('b', 'c', 'd', 'g', 'h', 'j', 'k', 'l', 
               'm', 'n', 'p', 'r', 's', 't', 'u', 'v', 
               'w', 'tr', 'cr', 'br', 'fr', 'th', 'dr', 
               'ch', 'ph', 'wr', 'st', 'sp', 'sw', 'pr',
               'sl', 'cl');
 $num_vowels = count($vowels);
 $num_cons = count($cons);
 $password = '';
 for($i = 0; $i < $length; $i++)
   $password .= 
     $cons[rand(0, $num_cons - 1)] . 
     $vowels[rand(0, $num_vowels - 1)];
 return substr($password, 0, $length);
}

Zaslání hlaviček (pokud je příjemce umí)

function serverVar($name) {
 return $_SERVER[$name];
}
function sendContentType($contenttype, $charset = 'utf-8') {
 $accept=false;
 if ($contenttype == 'application/xhtml+xml') {
  if (stristr(serverVar("HTTP_ACCEPT"),"application/xhtml+xml")) {
   if (preg_match("/application\/xhtml\+xml;q=0(\.[1-9]+)/i",serverVar("HTTP_ACCEPT"), $matches)) {
    $xhtml_q = $matches[1];
    if (preg_match("/text\/html;q=0(\.[1-9]+)/i",serverVar("HTTP_ACCEPT"), $matches)) {
     $html_q = $matches[1];
     if($xhtml_q >= $html_q) $accept=true;
    }
   } else
   $accept=true;
  }
  if (stristr(serverVar("HTTP_USER_AGENT"),"W3C_Validator")) $accept=true;
 }
 // cannot accept xhtml+xml
 if (!$accept && ($contenttype == 'application/xhtml+xml')) $contenttype='text/html';
 // content type
 header('Content-Type: ' . $contenttype . '; charset=' . $charset);
}
Thursday, 29.07.04 - PHP - autor: Radek Hulán - 15479x

Komentáře:

  1. [1] Pavel SPS 222.netcentrum.cz

    Davas diteti kulomet?

    a] nejsem schopen to naprogramovat sam. Pak mi ale zdrojove kody bez komentare spise uskodi, nez pomohou.

    b] jsem to schopen naprogramovat sam, pak to nectu

    Muj soukromy nazor.

    Ty funkce ani nejdou pouzit jako "cerna skrinka", protoze chybi:
    a] popis vstupnich parametru
    b] popis navratove hodnoty
    c] popis co presneji ta fce dela

    odpověz na tento komentář
    1. na komentář reagoval Roman — #4
    2. na komentář reagoval markon — #5
    karma: 0 Thursday, 29.07.04, 13:12:05
  2. [2] markon k152.chello.upc.cz

    To generování hesla se jednodušeji dělá, když vezmeš aktuální čas, uděláš jeho MD5 a vytáneš z něho přesně kolik znaků potřebuješ. Proč to děláš tak složitě?

    To generování content-type je dobré, přesně tohle už delší dobu používám, ovšem pozor všem neznalým, pokud neuzavřte byť jen jeden tag, nezobrazí se vám vůbec nic, naštěstí v PHP5 je integrované HTML Tidy, které by tohle mělo časem opravovat automaticky na straně serverů. Myslím, že lepším řešením než opravovat chyby u prohlížečů je opravovat je na serveru, protože tam to vidí každý, když je to špatně.

    odpověz na tento komentář
    1. na komentář reagoval Radek Hulán — #3
    2. na komentář reagoval Roman — #4
    3. na komentář reagoval kakoo — #6
    karma: 0 Thursday, 29.07.04, 14:12:31
  3. [3] Radek Hulán

    odpovídá na markon — #2 pokud vezmu md5, tak to heslo nebude vyslovitelné, takto ano, bude to normální relativně pěkné heslo, co se dá i zapamatovat, takže proto ;)

    PS: pro Pavla, srand() není potřeba.

    odpověz na tento komentář
    1. na komentář reagoval markon — #5
    2. na komentář reagoval kakoo — #6
    karma: 10 Thursday, 29.07.04, 17:35:57
  4. [4] Roman a42.nitranet.nr.gtsi.sk

    odpovídá na Pavel SPS — #1 mne to pripada uplne jasne a zrozumitelne. (Inak samozrejme som si funkciu onehda robil sam a s filtrom na neslusne slova ;-) Ono klient ktory sa prihlasi do systemu a pride mu vase heslo je "kokoti18" nebude velmi nadseny.

    odpovídá na markon — #2 Presne ako pise Rado, tento generator hesla je robeny s umyslom vytvorit heslo ktore sa da vyslovita lahko zapamatat.

    odpověz na tento komentář karma: 0 Thursday, 29.07.04, 19:44:06
  5. [5] markon k152.chello.upc.cz

    odpovídá na Pavel SPS — #1 PHP je samo o sobe kulomet dany diteti, protoze tak mocny nastroj, pro ktery mohou programovat ehm... Kdyby nebylo v PHP tolik lam, mohl by to byt znatelne uznavanejsi jazyk, t.j.fakt.

    odpovídá na Radek Hulán — #3 Ja si stejne myslim, ze si nkdo nezapamatuje tebou generovane heslo, pokud nebude obsahovat nejaka slova. Heslo mamomamo no alespon se to lepe pise, ale to tak jedine

    odpověz na tento komentář
    1. na komentář reagoval markon — #7
    karma: 0 Friday, 30.07.04, 08:27:43
  6. [6] kakoo 66.74.108.194.contactel.net

    odpovídá na markon — #2 odpovídá na Radek Hulán — #3 navíc pokud to vypočteš z aktuálního času, je to poměrně malá množina hesel a nebude zase až takový problém se do tvé aplikace dostat, zvlášť pokud budu vědět, že dotyčný se registroval někdy kolem 20:30 v pondělí...

    odpověz na tento komentář
    1. na komentář reagoval markon — #7
    2. na komentář reagoval Pavel SPS — #8
    karma: 0 Friday, 30.07.04, 09:57:35
  7. [7] markon k152.chello.upc.cz

    odpovídá na markon — #5 odpovídá na kakoo — #6 Počítám to z mikrosekund, takže myslím že to docela problém bude, navíc je tam daná předpona a tu neznáš, nicméně fakt je, že by se možná měli spíš generovat náhodná čísla :-D

    Nicméně to tu asi nebudeme pitvat, nabízím nové téma - http://www.pcsvet.cz/art/ar...

    Přečti si to až dolů a budeš se chytat za hlavu, to mě teď trápí více, že lamy programují v PHP a kazí jméno těm co umí programovat :(-

    odpověz na tento komentář karma: 0 Friday, 30.07.04, 22:32:45
  8. [8] Pavel SPS gw-sitel.lam.cz

    odpovídá na kakoo — #6 pridas microtime, IP adresu klienta, cas posledniho restartu serveru vahu tve matky... v tom bych problem nevidel.

    Ohledne nedokumentovani fci trvam na svem. I kdyz bude fce jen scitat 1+1, tak tam komentar byt musi. Jeste ze nemusim cist vase zdrojaky :)

    odpověz na tento komentář karma: 0 Saturday, 31.07.04, 21:13:11
  9. [9] kr4UT1k gw-sitel.lam.cz

    Stare tema, ale prece. Ten prvni zdrojak je samovysvetlujici, ten druhy by nejaky komentar asi potreboval, jsou tam takovy nepochopitelny funkce
    !stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')
    , ale mozna jsem opravdu MOC lama

    odpověz na tento komentář karma: 0 Sunday, 17.10.04, 22:03:40
  10. [10] JK 89.32.broadband2.iol.cz

    V druhem skriptu je syntakticka chyba. Kdyz uz tam je ta funkce serverVar (navic v tomto pripade zcela zbytecna) je radek if (stristr(serverVar["HTTP_USER_AGENT"],"W3C_Validator")) $accept=true;.
    Navic bych hadal, ze strpos bude rychlejsi nez stristr , v druhem pripade je mohu zamenit zcela jiste, v prvnim bych to riskl taky.

    odpověz na tento komentář
    1. na komentář reagoval Radek Hulán — #11
    karma: 1 Sunday, 19.12.04, 22:32:07
  11. [11] Radek Hulán

    odpovídá na JK — #10 ten řádek je tam naprosto nutný, pro w3c validátor totiž dává MIME typ application/xhtml+xml, i když w3c reportuje v HTTP_ACCEPT něco jiného..

    Ohledně strpos versus strstr - strpos NENÍ rychlejší. Howgh.

    odpověz na tento komentář
    1. na komentář reagoval JK — #12
    karma: 10 Sunday, 19.12.04, 22:51:36
  12. [12] JK 89.32.broadband2.iol.cz

    odpovídá na Radek Hulán — #11 Ojoj, koukam, ze jsem pri snaze projit pres spam filtr po 6x nenapsal prispevek uz zcela spravne.
    Melo tam byt, ze dany radek obsahuje chybu, bud pisu
    serverVar("HTTP_USER_AGENT") nebo $_SERVER["HTTP_USER_AGENT"] ale ne to, co tam je - to je syntakticka chyba.
    W3C validator posila ted prazdne HTTP_ACCEPT, to mate pravdu.
    strstr je mozna stejne rychle jako strpos (ackoliv strstr vraci retezec a tudiz by tam mela byt vetsi rezie) ale case insensitive porovnavani (ja jsem porovnaval stristr a strpos) je zcela jiste pomalejsi.

    odpověz na tento komentář karma: 1 Sunday, 19.12.04, 23:40:12

Přidejte nový komentář:

Pro přidání komentáře a hlasování se musíte nejdříve zaregistrovat nebo přihlásit.