www.www.zaachi.com »  Blog/Jen tak mimochodem  »  Programátor vs. Programátor

Programátor vs. Programátor



Existuje celá řada programátorů, kteří něco dokázali a jsou na svoji práci hrdí. Stejně tak existuje celá řada programátorů, kteří jsou sice hrdí, ale v životě nic nedokázali a většinou ani nedokážou. Schopnosti některých programátorů mě někdy udivují.

 

Reklama

Pokud mě chcete podpořit a jste milovník jedné stopy, navštivte můj projekt: MotoArena.cz

Je to už nějaký čas, kdy se na mě obrátil jede zákazník, zda bych mu nemohl udělat analýzu zabezpečení jeho webové presentace a zda bych mu nemohl poradit co kde vylepšit. Analýza se týkala předně zabezpečení a optimalizace pro SEO.

Jednalo se o internetový obchod, za který zákazník zaplatil nelidovou cenu (několik set tisíc korun českých). Bohužel cena daleko předčila kvalitu webu a osobně bych chtěl potkat programátora (popřípadě team programátorů), který systém programoval.

Za cenu kterou zákazník zaplatil bych očekával precizní prácí, bohužel tomu tak nebylo a řekl bych že zákazník koupil zajíce v pytli.

Struktura kódu

Celý systém je naprogramován v PHP s podporou databáze MySQL. Bohužel bych řekl, že pan programátor si přečetl několik stránek z některé levné publikace a pustil se do programování.

V podstatě celý systém stojí na podmínce IF, kterých je v každém .php souboru kvanta, někdy i několik stovek, takže struktura kódu většinou vypadá takto:

To je jenom slabý nástin toho jak kód vypadá. Celý systém obsahuje cca 600 souborů .php, ve kterých je většinou spleteno HTML spolu s PHP a dohromady to tvoří neuvěřitelnou omáčku, která nejde ani číst, natož sem něco doprogramovat, jak bylo domluvené se zákazníkem.

Každý ze souborů obsahuje blok pro připojení k databázi, což je řešeno příkazem MySQL_Connect a zadáním údajů. Osobně bych chtěl vidět, co by se stalo, kdyby se změnily údaje pro připojení k databázi a zákazník musel tyto data měnit.

No zkrátka celá struktura kódu je velice podivná a už po nahlédnutí do některých souborů mě přecházela nálada něco v tomto systému dodělávat.

Více Administrátorů? Není problém

Kupodivu mi bylo sděleno, že systém obsahuje více administrátorů a každý má své práva. Zákazník potřeboval tyto práva u některých administrátorů změnit. Myslel jsem si že mě v systému nemůže nic překvapit a tak jsem začal zkoumat, jak jsou řešeni admini.

Bohužel jsem se spletl a překvapen jsem byl.

Systém obsahuje 11 administrátorů a pro každého je zvlášť vytvořen adresář (admin_1, admin_2, … admin_11). Každý adresář obsahuje několik desítek souborů podobné struktury jako celý systém a navíc zabezpečení heslem, které vypadá asi takto:

$heslo="password";
$sprava_oddeleni=1;

if ($vstup==$heslo):
//kompletní obsah souboru
endif;

No tak o už bylo i na mě moc a ztrácel jsem naději, že by se se systémem dalo v budoucnu něco dělat.

SEO

Další z požadavků byl optimalizace pro SEO. Bohužel jsem opět zjistil, že tento požadavek je nesplnitelný. V celém systému jsem nenašel ani jeden (ani jeden jedinný) nadpis typu H, ale pouze tagy font, ve kterých bylo upraveno písmo.

Navíc většina souborů obsahuje několikrát vloženou hlavičku stránky, čili úpravy alespoň pro základní optimalizaci by zabrali nehorázně mnoho času.

Struktura SQL

O SQL toho programátor asi taky moc nevěděl. Struktura SQL dotazů by potřebovala v celém systému velké změny. Počínaje výběrem z databáze, kdy programátor používá zcela zásadně SELECT * FROM, končeje vkládáním proměnných do dotazů. Ani v jednom dotazu jsem nenašel alespoň náznak zabezpečení a ošetření vstupní proměnné. Stačilo by alespoň jedno použití funkce HtmlSpecialChars, nebo AddSlashes, ale ne. Vůbec nic.

Bezpečnost systému

Bezpečnost systému je kapitola sama o sobě. Vcelku se divím tomu že obchod vůbec funguje, v takovém stavu jak je napsaný.

Co se týká základů, jsem nastínil u struktury SQL. Dotazy jsou neošetřené a téměř všechny obsahují SQL Injection chyby a XSS se vyskytuje všude kam jsem se jenom podíval. Nebyl pro mě vůbec problém zjistit si emaily všech registrovaných uživatelů a přes administrační rozhraní jim bez přihlášení například poslat email a to je opět jenom hrubý nástin toho jak to vypadá.

Závěrem

Tabulkovy layout celého webu je nepoužitelný a někdy trvá i několik vteřin než je stránka vykreslena prohlížečem.

Pro přístup k výsledkům z databáze se používá zásadně Mysql_Result, které jsou psány způsobem @mysql_result();

Spojeni PHP a HTML je kodu je velice špatné a je na úrovni školáka na střední škole.

Špatné používání Ifů v celém kódu, kdy nebyl programátor schopen nahradit jednoduchý kód například příkazem Switch:

if ($platba==4) $platba_popis = " (platba eBankou)";
if ($platba==5) $platba_popis = " (bankovnφ p°evod)";
if ($platba==6) $platba_popis = " (proforma faktura)";
if ($platba==7) $platba_popis = " (na splßtky)"; 

Při výběrech z databáze je zásadně vybíráno pomocí příkazu LIKE, který je velice pomalý. Databáze, která by obsahuje několik tisíc záznamů (tudíž není velká) má objem několik desítek mega.

Proč jsem tohle všechno popisoval?

Je až zarážející, jak neschopní lidi mohou dělat u velkých společností (nebudu jmenovat) a z toho se potom odvíjí kvalita zpracování presentací, nebo nedej bože složitějších aplikací. Konkrétně PHP je jazyk, který je se schopný naučit každý puberťák během několika týdnů a své získané znalosti se snaží na internetu zúročovat. Stoupá mu Ego a říká si programátor. Takový programátor nedokáže používat základy algoritmizace, nedokáže řešit jednoduché problémy a když je vyřeší tak na úkor efektivitě výsledků práce.

Říkat si PHP programátor a neznát alespoň základní rozdíly mezi PHP4.x a PHP5.x neznát základy databázi, nevědět co je to httpd.conf, nevědět co je to Register_Globals?

Tomu já neříkám programátor a osobně takové lidi nesnáším, nebo jimi spíše opovrhuji. A to se netýká pouze PHP, ale i dalších programovacích jazyků.

Jazyk PHP je krásný jazyk, ve kterém lze snadno a během krátké doby vytvořit efektivní internetové aplikace, ale nikdy se základními znalostmi.

Schopný programátor musí umět číst manuál, musí se v problematice vyznat a ne napsat tisíce řádků kódu a až potom přemýšlet zda by to mohlo fungovat. Důležitá je analýza, ale ne až po vyřešení problému, ale před jeho samotným řešením.

Programátor si před řešením problému vezme do ruky papír a tužku a zkoumá okolnosti, analyzuje, řeší problém.

 

 


linkuj topclanky
Komentáře (21)

Autor: Zaachi
Publikováno: 27.11.2007 12:29:25


Mohlo by vás zajímat:
Proč (ne)chtít být programátor
TOPLIST.cz
rss coments img img img