|
|||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
bootable [55]
commercial [7] no-commercial [42] unclassified [20] [7]
Software (10844)
|
PHP (101) - Apríl: Příklady z praxe
Ve speciálním jarním bonusovém přídavku seriálu (nejen) o PHP se podíváme, jak se
vlastně také programuje v praxi aneb šedá je teorie, zelený strom života.
Nekomerční sdělení: Doporučujeme zobrazení v čitelnějším "leet" formátu (pouze pro světa znalé, kteří ovládají hackerskou řeč). KomentářeO komentářích jste se už mohli dočíst ve 4. a 62. seriálu. Pro naše potřeby si to raději shrňme.
Syntakticky mohou být komentáře jednořádkové ( <? Obsah samotných komentářů může být různý, řekneme si hned na úvod, že okomentovaný kód by neměla být jediná dokumentace. Pravidla pro jejich psaní jsou popsána ve výše zmíněném 62. dílu, takže mi připadá zbytečné je opakovat.
Poměrně vhodný text k zamyšlení nad psaním komentářů najdete v
[...]
Což taky není vždy dobře. Je to zase pěkné popsané v
... celořádkový komentář vysvětlující to, co by se dalo daleko lépe
napsat bez komentáře a s proměnnou, která by se místo Stejně tak je zvěrstvo takové to co mají mnohé projekty – povinný popis funkce před její definicí – což obvykle končí tím že se převypráví slovně název funkce, názvy a typy argumentů a typ navrátové hodnoty. U dobře napsaného kódu je toto vše jasné z názvu funkce a parametru. Je-li použit nějaký trik, který tam fakt musí být, pak dokumentujme jen ten trik.
Primárním zdrojem informací o kódu má být kód samotný (jeho
čistota a čitelnost). Komentáře se často dostanou postupnými změnami
do rozporu se skutečností. Proto by jich mělo být co nejméně, a to
konkretně jen upozornění na nějaké triky a nestandardnosti (plus možná
nějaké celkové vysokoúrovňové povídání na začátku programu nebo modulu
nebo u nějaké podstatnějši funkce)." Tak ale dost bylo povídání, pojďme se podívat na praktické ukázky ...
Upozornění: Části kódu pochází většinou z jednoho nejmenovaného portálu, jehož zdrojový
kód máme kromě italských mafiánů pouze my; pokud tedy chcete číst dále,
doporučujeme vyhotovení a podpis dvou kopií non-disclosure
agreement, jednu zašlete prosím na naši adresu a druhou do
global $is_hotel; /* je uzivatel hotel ?? */
/* ----------- ukladaci skript pro polozky -------------
<notice>
chce to doinstalovat libpng2, libpng3 --> jinak to nepujde
problem solved, dragon founds ....
png jede bez komprese==>jpg na nahledy
</notice>
PNG bez komprese nelze – ten format to neumi --adh
*/
if(Count($access_priv) < 1) { $error_status = "no accesss priv set, developer error !!!!"; die($error_status); } $body = "cagos !, nekde je chyba.\n hori nam letadlo salalala hej\n sql error message\n from: http://$SERVER_NAME{$SCRIPT_NAME}\n request method: $REQUEST_METHOD\n user agent: $HTTP_USER_AGENT\n remote addr: $REMOTE_ADDR\n query string: $QUERY_STRING\nhttp post vars:\n"; /* ----- SHIT: tady to padalo. may be fix...... ------- */ global $static_link; global $lang; $static_link = ""; $lang = "cz"; $stredni_lista = $static_link."includes/script_edit.php"; /* ----------- ulozime si preventivne, co se odesilalo -------------- */ /* mozna se na nej vysereme na ukladani */ $error_status = "fucked, logged"; $SQL_dotaz = "INSERT INTO force_logs (username, typ, ip_address) VALUES ('".$vorgotten_email."', 1, '".$REMOTE_ADDR."') "; $mydb->do_sql($SQL_dotaz, "log_attacker", 0); if($over_limit != 1) { // ---------------- zjisti pocty ----------------------- if($mydb->get_row_count() > 0) { $celkem_vyhledanych = $mydb->get_res(0, 0); } else { $celkem_vyhledanych = 0; } /* let holubicko bila a potes nase domovy a pritom neslitni !!! */ // ------- HLAVNI ENGINE FORA + STROM ---------------------------- /* XXX: Tohle sem dalo nejaky pekny hovado, to proste nemuze fungovat --adh */ if (IsSet($l_visit[$id_kategorie])) $visit = $l_visit[$id_kategorie]; else $visit = 0; SetCookie("l_visit[".$id_kategorie."]", Time(), Time()+600000);
/* ---------- VLOZENI CI EDITACE PRISPEVKU DISKUSNIHO FORA ---------- */
/* ------- id_prispevku - prazdne - zadava se
- neprazdne, over moznost editace
fuck the share code and users !!!!!!
web: --> nahled
adm: --> ukladani
-------------------------------------------------------------------- */
/*---------------- I love you users !!!!!! ------------------- */ // XXX: tohle je prasarna a navic silne neoptimalni --adh $subject = (Get_Item_Name($id_parent, 6)); if(!EReg("^Re:", $subject)) { $subject = "Re: ".$subject; } //$xtpl_main->assign("SUBJECT_READONLY", " readonly"); } /* ------------------------ stredni_lista -------------------------- */ /* zacatecni tag <td> stredni listy ??????!!!!!! */ UnSet($xtpl_main); $xtpl_main = new Xtemplate($static_link."html_stredy/td_kousek.html"); $xtpl_main->parse("td_kousek"); $xtpl_main->out("td_kousek"); /* ----------------------------------------------------------------- */ /* attacker fuck ----- */ } else { $error_status = "Attack"; Unset($xtpl_main); $xtpl_main = new Xtemplate($static_link."html/cz/not_found.html"); $xtpl_main->assign("ROOT_LINK", $root_link); $xtpl_main->assign("STATIC_LINK", $static_link); $xtpl_main->parse("not_found"); $xtpl_main->out("not_found"); }
<?
/* ------ nosny skript DOMOVSKA STRANKA UZIVATELE ---------------------- */
// XXX: co to probuh znamena "nosny skript" ??? --adh
Create_Header("Administrace == Editace clanku a zprav");
// die("<H2>EDITACE CLANKU JE DO 19:00 MIMO PROVOZ.
DEKUJEME ZA POCHOPENI.</H2>")
if ($gauth=='foo'){ $mydb->do_sql('UPDATE hlasovani set value='.$vote.' where type_item=11 and id_item='.$id_galerie.' and id_owner='. $_SESSION['id_administratora']); } else{ // foo } } }
// TODO: Datova cast - je na to jejaka krasna funkce, RTFM
// define ("eshopRootLink", "http://www.linuxsoft.slavo/shop/");
/* ----------- BEGIN: added by me (pavel) --------- */ } elseif($aktual_dir == "de") { $root_link == ""; $lang_link = ""; $lang = "de"; $alter_lang = "en"; $lang_number = 2; $alter_lang_number = 1; /* ----------- END: added by me (pavel) -------------*/ $SQL_part = ""; /* ??????????? FIXME */
/* --- maxiterror welcome --
} // zadny obrazky -- err } // no image, welcome to peklo
/* ---------- vlozeni polozky SW ------- adm ---
-- sekundarni kategorie se resi z dat jiz z vyselektovaneho rekursivne
pole, pridaji se k tomu jeste sekundarni kategorie a porovnana
se obsah poli ---
Dobre, a ted jeste jednou a cesky --adh
--------------------------------------------------------------- */
eset($error_array); $qs = "user_edit.php".Create_Err_QS($error_array, $qs); // nejaka error ?? } // zadny obrazky -- err } // hotel nema obrazky -- jaktoze ( piskac, smarda, zeleny raquel ??)
-- spolecna jazykova sablona pro jidlo i piti
??? system...... not detected
// prefs ???????????????????
/* ---------- vychozi mena ------------------------- */
/* ------------------- vyber domenovych jmen -------------- */
// ujasnit jak bude ?????
} else { $error_status = "coze, do mailu nic neslo ???"; // sendni mie mail cici, protoze to je prusvih !!!! } else { $error_status = "Nic se nenaslo, ale melo ??!!!"; } /* TODO: <div align=center {DISABLE_ERR}>Nejsou zadne vysleky vyhledavani.</div> */ $error_status = "Neodesila maily !!!!"; ... $error_status = "Neodesila maily smejd !!!!"; $error_status = "<!-- sem se to nikdy dostat nemelo !!!! - chaos in decide engine -->"; die($error_status);
-- id_type - parametr -- go megashit go !!!!!
} else { // co se stane kdyz .... $error_status = "<!-- sem se to nikdy dostat nemelo !!! -->"; die($error_status); A na závěr z trošku jiného soudku aneb i jiné projekty mají drsný kód (zarytí vyznavači PHP doufáme odpustí). Schválně kdo pozná nejvíce ukázek: /* Ha, ha!! I did not realize C has a builtin XOR operator! */ #define XOR(a,b) (unsigned char) (((a&~b)|(~a&b)) & 0377) /* NOTE: a and b should be unsigned char */
exit 1 # maji to rozmrdane, kurvy jedny
while(*ptr) { *ptr=(*ptr & 0x7F); /* *ptr++ &= 0x7F. Yeah, I know... I just *like* long code */ ptr++; /* besides, it optimizes out the same anyway. */ } /* User torturation. */ /* You are worried about what you see here? You don't see anything in * the first place. Also, be assured that we know what are we doing. */ /* (We are killing the user, obviously.) */ /* TODO: Gettextify? Er, better not. More people (translators) could * find out what are we doing... ;-) --pasky */ /* TODO: Be more cruel when in trouble? ;-) --pasky */ fputs( "Wheeeeeeeeeee! You played with the config.h by hand, didn't you?\n" "Of _COURSE_ you did! Is that how a nice .. creature behaves like?\n" "Of _COURSE_ it isn't! I feel offended and thus I will revenge now!\n" "You will _suffer_ >:).\n" "\n" "CPU burning sequence initiated...\n", f); /* TODO: Include cpuburn.c here. --pasky */ while (1); /* Jump through some hoops for Alpha OSF/1 */ threadid = pthread_self(); #if SIZEOF_PTHREAD_T <= SIZEOF_LONG return (long) threadid; #else return (long) *(long *) &threadid; #endif /* Binary compatibility is good American knowhow fuckin' up. */ if(cmd == TIOCNOTTY) { ret = sys_setsid(); goto out; }
/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
/*
* Wirzenius wrote this portably, Torvalds fucked it up :-)
*/ novy_bordel->next=context->bordel; context->bordel=novy_bordel; novy_bordel->binec=string; to_je_ale_woprusz->ident=context->ptr; to_je_ale_woprusz->string=stracpy1(string); if(string) mem_free(string); to_je_ale_woprusz->doc_id=pna->handler; to_je_ale_woprusz->obj_id=pna->mid; if(pomint>pomint1) /* Elegantni prohazovani */ { pomint+=pomint1; pomint1=pomint-pomint1; pomint=pomint-pomint1; } /* Je pakarna, ze tu mam jenom dva pominty! */ /* Pul roku v pakarne a rekli, ze je zdravej. Tejden na to zastrelil svyho dohlizitele */ /* 10 to midnight */ if(!bufet)my_internal("Downcall narazil hlavou do futra!\n", context);
Related article
PHP (1) - Historie a budoucnost PHP (2) - Jak to funguje PHP (3) - Instalace PHP (4) - Základy syntaxe PHP (5) - Příkaz Echo; formátování kódu PHP (6) - Typy proměnných PHP (7) - Pole PHP (8) - Výrazy, konstanty, inkrementace PHP (9) - Přetypování proměnných PHP (10) - Logické výrazy a operátory PHP (11) - Operátory porovnání; priorita operátorů PHP (12) - Podmínky PHP (13) - Příkazy cyklu PHP (14) - Cyklus for PHP (15) - Funkce PHP (16) - Vyrobme si kalendář PHP (17) - Dokončujeme kalendář PHP (18) - Funkce pro práci s poli PHP (19) - Objekty PHP (20) - Objekty podruhé PHP (21) - Vkládání souborů PHP (22) - Regulární výrazy PHP (23) - Neztraťte se ve funkcích PHP (24) - Pracujeme s formuláři PHP (25) - Formuláře - nikomu nevěřte PHP (26) - Formuláře na sto způsobů PHP (27) - Příklady na formuláře PHP (28) - Chybovati je lidské PHP (29) - Soubory a adresáře PHP (30) - Počitadlo pomocí souborů PHP (31) - Upload a download souborů PHP (32) - Příklad na BLOG PHP (33) - HTTP hlavičky PHP (34) - Úvod do databází PHP (35) - Uložení dat v databázi PHP (36) - Připojujeme se k MySQL PHP (37) - Tvorba tabulek v MySQL PHP (38) - Dolujeme data z MySQL PHP (39) - Zobrazujeme a stránkujeme data PHP (40) - PHP a vkládání záznamů do databází PHP (41) - Měníme data v databázích PHP (42) - Odstraňujeme databázová data PHP (43) - MySQL rychleji a rychleji PHP (44) - MySQL ještě rychleji PHP (45) - Jsou data v databázi v bezpečí? PHP (46) - Importujeme data do databáze PHP (47) - Exportujeme data PHP (48) - Práce s binárními daty (BLOB) PHP (49) - Kam kráčíš, MySQL? PHP (50) - Ověřování uživatelů PHP (51) - Přenos dat mezi stránkami PHP (52) - Cookies PHP (53) - Sessions PHP (54) - Dodržování webových standardů PHP (55) - Odesílání e-mailů PHP (56) - Tisk a PDF PHP (57) - XML PHP (58) - XML lépe a radostněji PHP (59) - zapisujeme XML PHP (60) - Rozsáhlejší projekty 1. PHP (61) - Rozsáhlejší projekty 2. PHP (62) - Rozsáhlejší projekty 3. PHP (63) - Rozsáhlejší projekty 4. PHP (64) - Ladění kódu PHP (65) - Ladění kódu 2. PHP (66) - PHP debugger PHP (67) - Zdroje informací o PHP PHP (68) - Stavíme portál PHP (69) - Stavíme portál 2. PHP (70) - Registrace uživatelů na portálu PHP (71) - Přihlašování uživatelů na portál PHP (72) - Hrátky s uživateli PHP (73) - Frontend a backend PHP (74) - Administrátorské rozhraní portálu PHP (75) - Pokračujeme na portále PHP (76) - Zobrazujeme data na portále PHP (77) - Portál, databáze a relace PHP (78) - Informační obsah portálu PHP (79) - Triky s formuláři a ergonomie webu PHP (80) - Administrace diskografie hudebního portálu PHP (81) - Uživatel versus programátor PHP (82) - zabezpečení vstupů formulářů PHP (83) - Ukládání textů písní na hudebním portále PHP (84) - Ještě k registraci PHP (85) - ukládání souborů do databáze na portálu PHP (86) - zobrazení dat a stahování soborů pro registrované PHP (87) - finišujeme portál PHP (88) - provoz ve Windows PHP (89) - cesta do hlubin php.ini PHP (90) - Poťouchlé konfigurační volby PHP (91) - php.ini potřetí a naposledy PHP (92) - funkce pro interakci s operačním systémem PHP (93) - příkazový řádek PHP (94) - GUI PHP (95) - GUI podruhé PHP (96) - (ne)bezpečné PHP PHP (97) - bezpečnost ještě jednou PHP (98) - PHP 5. PHP (99) - Budoucnost PHP PHP (100) - Závěr php rewrite Byte order mark a PHP Previous Show category (serial) Next
|
Szukanie oprogramowania
|
|||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |