Portál AbcLinuxu, 2. května 2025 22:24

Vytvářím eshop v php & mysql

13.12.2008 16:08 | Přečteno: 8594× | Php | poslední úprava: 13.12.2008 16:12

Konečně jsem se odhodlal k naprogramování vlastního řešení eshopu, předpokládám, že mě čeká běh na dlouhou trať, ale momentálně se nacházím ve fázi, kdy mi Zencart jako základ mého eshopu přestává vyhovovat. Předně bych rád podotknul, že nejsem programátor. Php i mysql používám poměrně dlouho, ale vzdělání v oboru nemám. Proto jsem se k tvorbě vlastního řešení tak dlouho odhodlával.

Proč ne Zencart? Zencart má něco do sebe - je to aplikace, kterou je možné používat po pár hodinách nastavování vpodstatě v jakémkoli oboru internetového prodeje. Má silnou komunitu a to i v ČR (viz zencart.cz), existují pro něj snad všechny myslitelné moduly. Za to však platí velkou náročností na hosting, je to zkrátka moloch se spoustou kódu, každá úprava je těžkopádná a předchází ji sáhodlouhé pátrání v mnoha souborech. Já mám po čtyřech letech provozování obchodu poměrně jasnou představu, jak by měl eshop fungovat a Zencart mé stále specifičtější požadavky přestává splňovat.

Co potřebuji? Potřebuju jednoduchou aplikaci, jejímuž kódu budu rozumět a budu tak moci rychle dělat změny ve funkcích a vzhledu. Potřebuju aplikaci, která bude intuitivní jak pro uživatele, tak v administraci. Doposud jsem enarazil na OS eshop, který by mé požadavky splňoval - od velikánů typu Magento, Oscommerce, přes phpshop až k bezdatabázovému Quickcartu, na němž jsem obchod rovněž jistý čas provozoval. Nakonec jsem se vrátil k začátkům.

První verze mého obchůdku jela na velice jednoduchém kódu Plaincartu, celý tutoriál, kterak vytvořit obchůdek z několika souborů a jednduché databáze je k mání na www.phpwebcommerce.com. Není to nic převratného - uživatelské rozhraní dělané tabulkama (ale velice snadno skinovatelné - což mi silně vyhovuje), členění kategorií pouze do druhého kolena, žádná registrace zákazníků, za to však jednoduchý objednávací proces. Ani administrace nevyniká ničím zázračným - jednoduché prohlížení a editace. Zkrátka výtečný základ, které po několika rozšířeních přesně splní to, co potřebuju.

Má první úprava zahrnuje vytvoření tabulky tbl_manufacturers - stačí mi id a název, práce i se zakomponováním do vkládání produktů na hodinku. V noci jsem ještě stihnul přidat ke zboží položku daň, přišlo mi zbytečné vytvářet vlastní tabulku, takže do produktové databáze vkládám pouze číslo 0, 9 nebo 19. Samotnou daň potřebuji pouze ke zobrazení na faktuře, takže další zásahy do kódu nejsou potřeba. Dnešní úpravy zahrnovaly změnšení databáze objednávek na polovic - systém vyžaduje dodací a fakturační adresu. Já prodávám pouze maloobchodně, stačí mi proto jeden záznam, přidal jsem ale položku email.

V nejbližší době se chystám na vytvoření dobrovolné registrace (zákazník vyplní o jedno políčko navíc), uvažuju o zrušení políčka pro telefon (uživatelé jej neradi uvádějí a já tento údaj příliš nevyužívám - volám opravdu jen nouzově). Větší úpravou bude přidávání více obrázků k produktu, zde bych rád použil nějaké elegantní řešení. Rozsáhlejší úpravou bude možnost přidání atributů k produktům, nebylo by to tak složité nebýt návaznosti na skladovou dostupnost...

Co mě trápí? Našel jsem na internetu závažný bug, kód plaincartu je náchylný na sql injection (viz tato stránka), při zadání:

http://www.site.com/[script]/index.php?c=16&p=-3+UNION+SELECT+user_name,user_password,3,4,5+from+tbl_user--

lze totiž vytáhnout z databáze login a heslo (jakkoli zašifrované), rád bych tento problém nějak účinně vyřešil, ale příliš se nevím rady. Rád bych požádal o radu zkušenějších, zdrojový kód problematického souboru je zde, problematická je proměnná $p. Předem děkuji za jakékoli ohlasy.

       

Hodnocení: 40 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Fluttershy, yay! avatar 13.12.2008 16:33 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin
Není MySQL náhodou zdarma jen pro nekomerční použití?
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
13.12.2008 16:53 Ritchie | skóre: 27 | blog: Ritchie's | Berlin
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
A jak toho chcete pod GPL licencí dosáhnout?
Fluttershy, yay! avatar 13.12.2008 16:57 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Duální licencování.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
13.12.2008 17:08 Ritchie | skóre: 27 | blog: Ritchie's | Berlin
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
To tím nevyřešíte. Jako soukromá osoba získám MySQL pod licencí GPL a obratem ji pod stejnou licencí poskytnu své firmě, na což mám v souladu s GPL plné právo. Nějaký lepší návrh?
hikikomori82 avatar 13.12.2008 16:56 hikikomori82 | skóre: 18 | blog: foobar | Košice
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
http://www.mysql.com/tcosavings/ - plati sa len za podporu, ale mozno existuje nejaka closed source platena verzia, na co by bola dobra, neviem
Fluttershy, yay! avatar 13.12.2008 16:59 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Nevím, před nějakou dobou, když mne ještě MySQL zajímalo, jsem cosi ve smyslu, že MySQL je zdarma jen pro určité účely, četl...
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
hikikomori82 avatar 13.12.2008 17:08 hikikomori82 | skóre: 18 | blog: foobar | Košice
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Z /usr/share/doc/mysql-server-5.0/copyright:

Nejake doplnujuce podmieky ku GPL a nasleduje:
>      If the above conditions are not met, then the Program may only be
>      copied, modified, distributed or used under the terms and
>      conditions of the GPL or another valid licensing option from MySQL
>      AB. 
V zozname su napr. BSD, LGPL atd...
Luk avatar 13.12.2008 17:18 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
To už je hodně dávno, a pokud vím, týkalo se to jen Windows verze. Teď je to vždy GPL (dokonce s výjimkami pro software pod určitými licencemi), pokud nepočítám proprietární licenci.
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
Fluttershy, yay! avatar 13.12.2008 17:23 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Aha, tak to jo... dobré vědět.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
the.max avatar 13.12.2008 17:45 the.max | skóre: 46 | blog: Smetiště
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

Tenkrat kdy byla nejakym zpusobem placena licence pro win to bylo proto, protoze vyvojove nastroje pro win jsou take placene a programatori si je museli take koupit.

KERNEL ULTRAS Fan Team || Sabaton - nejlepší učitel dějepisu || Gentoo - dokud nás systemd nerozdělí.
15.7.2009 13:20 HHONZA.MM
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

Podívejte se na stránky OXID eShop.Na stránkách je možnost stáhnutí české verze zdarma Community Edition jako open source e-shop http://www.oxid-eshop.cz/vlastnosti-community-edition-d305/

gogloid avatar 13.12.2008 16:35 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin

Oprava by měla být velmi snadná - zavoláním funkce mysql_real_escape_string nad vstupem stringu či funkce intval nad vstupem integeru. 

Příklad:
 

$pdId = (isset($_GET['p']) && $_GET['p'] != '') ? $_GET['p'] : 0; →

$pdId = (isset($_GET['p']) && $_GET['p'] != '') ? intval($_GET['p']) : 0; 

 

Doporučil bych strávit chvíli, projít zdrojový kód a opravit tyhle chyby - oprava nebude trvat dlouho a člověk se vyhne problémům.

13.12.2008 17:32 Jan Grmela | skóre: 45 | blog: Kilo šťávy z lachtana | Brno
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

Souhlasím. Osobně všechen numerický vstup přetypovávám na int a všechno ostatní ověřuji pomocí regulárních výrazů (možno použít i rozšíření filter). Escapování funkcemi DB driveru případně bindování proměnných je samozřejmostí. Tak se mi do stránek nedostane nic, co by mohlo aplikaci nějak poškodit.

 

skaven avatar 13.12.2008 19:08 skaven | skóre: 10 | blog: skavenovo | Ostrava
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

Děkuji za tip, měl jsem podobnou představu, jen jsem si nebyl jistý, zda to tímto způsovem vyřeším.

hikikomori82 avatar 13.12.2008 16:51 hikikomori82 | skóre: 18 | blog: foobar | Košice
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin
No pokial nie je osetrene SQL injection ani pri prihlasovany, myslim ze cely produkt bude deravy ako reseto. Ak jeho autor neriesil SQL injection, o XSS asi ani nepoucul.
Slobodný font na technické kreslenie
cezz avatar 13.12.2008 19:04 cezz | skóre: 24 | blog: dm6
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

Suhlas.. A bezpecnost je ta najdolezitejsia feature kazdeho webshopu..

Computers are not intelligent. They only think they are.
Jan Drábek avatar 13.12.2008 18:01 Jan Drábek | skóre: 41 | blog: Tartar | Brno
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin

Taky jsem k tomu došel, jen se rozcházíme (zřejmě) rozcházíme v jednom požadavku. Eshop co vytvářím já by neměl být Ready to Use (tedy ho nainstaluje a nastavít kde jaký Franta Berousek), ale zároveň bude dost jednoduchý pro mě a bude tak dostatečně rychle přidávat jakékoliv funkce (stavím na Kohaně).

01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
skaven avatar 13.12.2008 19:13 skaven | skóre: 10 | blog: skavenovo | Ostrava
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

Já nepotřebuji eshop "ready to use" - dělám jej pro sebe, proto nemusím dělat žádné user friendly rozhraní na každou hloupost, když budu vědět kam v kódu na co šáhnout, když bude potřeba. U Zencartu je úplně šílený systém template - člověk chce změnit třebas jednu třídu a zjistí, že musí přes tři includované templaty do adresáře modulů a odtud vystopue proměnnou v jazykovém souboru. Fakt děs...

Jan Drábek avatar 13.12.2008 19:25 Jan Drábek | skóre: 41 | blog: Tartar | Brno
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Přesně ;-)
01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
Jan Drábek avatar 13.12.2008 19:30 Jan Drábek | skóre: 41 | blog: Tartar | Brno
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
http://code.google.com/p/re-eshop/ V současnosti mám rozpracované uživatele (měly by být použitelné jen volitelně), návrh by měl být ve wiki (akorát se musím ještě zamyslet nad adresami (fakturační atd.)). Bohužel teď se tomu nemůžu plně věnovat, neb mám jinou zakázku (doufám ve Vánoce).
01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
skaven avatar 18.12.2008 00:04 skaven | skóre: 10 | blog: skavenovo | Ostrava
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

nevypadá to zle!

14.12.2008 10:10 Jakub Suchy | skóre: 22 | Praha
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin

Misto znovuvynalezani kola zkuste treba Ubercart z Drupalu :)

Drupal
skaven avatar 18.12.2008 00:02 skaven | skóre: 10 | blog: skavenovo | Ostrava
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql

Já osobně nemámDrupal rád - měl jsem tu čest na něm stavět jednu dobu portál www.drevarny.cz a byl to mor. Rád bychměl řešení na míru, ale o tom jsme tady už psali

2.1.2009 14:54 Radek
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin

Nechtel by jste se radeji podilet na vytvareni reseni v teamu na jiz pokrocile aplikaci?

webmaster@webin.cz

20.7.2009 09:35 KAMIL
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin

Při vytváření nového e-shopu se podívejte na stránky OXID eShop. Je tam možnost stažení české verze zdarma pro obchodování na internetu jako open source software.

http://www.oxid-eshop.cz/vlastnosti-community-edition-d305/

skaven avatar 23.11.2009 21:18 skaven | skóre: 10 | blog: skavenovo | Ostrava
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
po čase se opět vracím do diskuze, projekt OXID eshop vypadá dobře, nainstaluju, otestuju a napišu nějaký článek, pokud budu zaujmut :)
21.2.2010 04:53 djB
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin
Nevím, zkoušel sem, ale nemohu se dostat do administrace..

Chyby mězi židlí a klávesnicí, nebo chhyby v kódu??
14.9.2010 23:29 Coosom
Rozbalit Rozbalit vše Re: Vytvářím eshop v php & mysql
Odpovědět | Sbalit | Link | Blokovat | Admin
Ahojte, pre programovanie / úpravu a ďalší predaj Vám odporúčam knihu "Programujeme internetový obchod", ktorá obsahuje prĺlohu - CD so zdrojovými kódmi a licenciou pre možnosť úpravy a ďalšieho predaja.

Viac o knihe: Kniha Vám ponúka kompletný návod tvorby internetového obchodu spolu s administračným rozhraním. Rieši otázky: vytvorenia inštalačného súboru, registrácie a prihlásenia užívateľov, vytvorenie administračného rozhrania pre správu obchodu, nákupné košíky, opisuje spôsob vytvorenia virtuálnych košíkov, vytvorenia objednávky, výpisu a vyhľadávania produktov a podobne.

Web: http://www.programujemeinternetovyobchod.sk

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.