Autor | Zpráva | ||
---|---|---|---|
Meldo Profil |
#1 · Zasláno: 5. 9. 2007, 13:19:08 · Upravil/a: Meldo
Robim e-shop system. Prave som sa dostal ku kosiku a chcem sa poradit, akou formou je to najlepsie robit. Nie ako to urobit, to zvladnem ale aku by to malo mat formu/logiku?
Predtym som robil kosik tak, ze po pridani produktu do kosiku sa ulozilo uzivatelovy cookeis s nejakym identifikatorom. Neviem vsak, ci to je dobry a bezpecny sposob. Ake su ine riesenia. Ukladat do DB? Session? alebo inak? POradte... Este by som podotkol, ze chcem umoznit nakupovat aj registrovanym aj neregistrovanym, teda by sa to na prihlasovanie nemalo viazat. diky |
||
nightfish Profil |
#2 · Zasláno: 5. 9. 2007, 13:41:59
Meldo
ukládej do session a identifikátor session ukládej do cookie (nebo to za sebe nech dělat PHP) jedinou otázkou je, co dělat se zákazníky, kteří mají vypnuté cookies - já jsem zastáncem toho vypsat jim, že bez vypnutých cookies nemohou v prodejně nakupovat (samozřejmě po provedení testu podpory cookies) a odkázat je na alternativní kanál - e-mail, fax, objednávkový formulář... |
||
Meldo Profil |
#3 · Zasláno: 5. 9. 2007, 15:05:26
Hmm....
Mohol by si mi trosku viac priblizit, ako by to malo fungovat? Kazdy produkt bude mat vlastne name? ake value? (myslim v session) Ako to potom vybrat? |
||
Sebasti Profil * |
#4 · Zasláno: 5. 9. 2007, 18:25:36
sessions pracují jako asociativní pole.
a kdyz chces pracovat se sessions promennyma, tak je musis zaregistrovat, napr. $_SESSION['Jmeno'] = $_POST['Jmeno'] <-- tím vytvoříš session promenou jmenem Jmeno, pokud s ni chces pracovat, tak k ni budes pristupovat pres kouzelne sluvko $_SESSION |
||
nightfish Profil |
#5 · Zasláno: 5. 9. 2007, 19:06:58
Kazdy produkt bude mat vlastne name?
já dávám přednost katalogovému číslu, které je pro každý výrobek jedinečné hodnotou může být třeba objednaný počet kusů |
||
Meldo Profil |
#6 · Zasláno: 5. 9. 2007, 20:57:48
nightfish
Aha. Jasne. Takze po kliknuti na "pridat do kosika" posles napr.: $_SESSION['id_produktu_v_katalogu'] = "1"; Ako ich potom ale vyberas? Ked tam mam aj ine session? Prave na toto neviem dojst. Sebasti Nastastie toto mam uz zasebou. Ale diky. |
||
peta Profil |
#7 · Zasláno: 6. 9. 2007, 14:20:06
nightfish
??? co dělat se zákazníky, kteří mají vypnuté cookies v php.ini se da nastavit neco jako transitid nebo tak. To dela to, ze ke kazdemu linku a do kazdeho formulare pridava session_name a session_id Ja osobne to delam rucne pres string a input. V tom pripade te nemusi zajimat, ze ma uzivatel vyple cookies, JS a pod, protoze to posilas se strankou. Meldo Zajimave reseni je JS + cookies, co pouzivas. Avsak cookies ma v IE omezenou velikost na tusim 1k? Mozna vic. V tom pripade tam treba ukladat informace usporne. se session se pracuje takto: http://www.volny.cz/peter.mlich/www.htm#msub13 - minichat - php kod a dej si v editoru hledani slova session a pak pripadne promennych, ktere tam jsou. (ten chat je pouzitelny, ale pri refresh ti smaze psany text, tusim; lze poresit skrytym inputem odeslat=1 =0) |
||
Azu Profil * |
#8 · Zasláno: 7. 9. 2007, 19:30:14
- inicializovat session
- při uožení do košíku zapsat do DB id session a k tomu id produktu a počet kusů |
||
nightfish Profil |
#9 · Zasláno: 7. 9. 2007, 19:39:24
Meldo
ano, buď tak a nebo do session ukládat pole, tzn. $_SESSION['zbozi']['id_produktu'] = $pocetKusu; a zpracování pak if (is_array($_SESSION['zbozi'])) { foreach ($_SESSION['zbozi'] as $katalog => $pocetKusu) { // a tady pracujes s promennymi $katalog a $pocetKusu } } peta o tom, zda-li předávat session ID v URL nebo ne již bylo napsáno dost... z mého pohledu nevýhody převažují, počet uživatelů, kteří mají cookies vypnuté je minimální... |
||
Azu Profil * |
#10 · Zasláno: 8. 9. 2007, 15:55:57
Ukládat pole do session je blbost, na to časem přijdeš. Když to máš ukládáno v databázi, tak se s tím inteligentně snadno pracuje a spojuje, není problém ponechat jednoduše zboží v košíku i přihlášeným uživatelům pro příští návštěvu obchodu atd.
|
||
Meldo Profil |
#11 · Zasláno: 10. 9. 2007, 19:19:34
Velmi pekne dakujem vsetkym za odpovede.
Nakoniec som sa priklonil k variante ukladania do DB. Ako napisal Azu, oveľa jednoduchšie sa s tým manipuluje ..... a naviac, daju sa robit rozne statistiky. nightfish Som blbec. Vobec ma nenapadlo pouzit viacrozmerne pole :-) heh. |
||
H13 Profil |
#12 · Zasláno: 12. 9. 2007, 08:13:19
Mě by zajímalo co všechno ukládáš do databáze, když uživatel ještě není přihlášený, ale vybírá si zboží a má třeba v košíku 2 druhy po X kusech. Jak nepřihlášeného zákazníka identifikovat? Potom už je to jednoduché, vypsat zboží a kusy podle této identifikace. Ale jak ho identifikovat a jak to vše uložit do databáze?
|
||
Meldo Profil |
#13 · Zasláno: 12. 9. 2007, 11:20:08 · Upravil/a: Meldo
Neviem ci to je najlepsi sposob, ale vymyslel som to takto:
Po vstupe na stranku (kdekolvek nielen na titulnu samozrejme) vygenerujem pre kazdeho uzivatela 40miestne unikatne (aspon v ramci moznosti unikatne) cislo. A toto cislo ho sprevadza pri celom pohybe po stranke a nakupovani. Ak sa prihlasi, toto cislo sa prepise jeho osobnym ID. Zaroven mam v DB aj kolonku aby som vedel, ze tento je prihlaseny a tento nieje. Dalo by sa to riesit SESSION ID namiesto generovania cisla, ale SESISION ID neje vzdy celkom bezpecne tak to riesim radsej takto. |
||
H13 Profil |
#14 · Zasláno: 12. 9. 2007, 11:44:02
Proč není použití sessionid bezpečné?
|
||
Meldo Profil |
#15 · Zasláno: 12. 9. 2007, 11:48:37 · Upravil/a: Meldo
|
||
H13 Profil |
#16 · Zasláno: 12. 9. 2007, 12:37:10
Meldo
můžeš mi říct z čeho generuješ to unikátní číslo a máš ošetřen i nějakým způsobem čas, např. že druhej den bude unikátní číslo jiné (např. když si ke stejnému počítači sedne někdo jiný), atd. |
||
Meldo Profil |
#17 · Zasláno: 12. 9. 2007, 12:43:29
Generujem nieco taketo:
<?php $a = microtime(); $b = rand(10000000000, 90000000000); $c = microtime(); $d = $a.$b.$c; $e = str_replace(".", "", $d); // odstranenie bodky $f = str_replace(" ", "", $e); // odstranenie prazdnych medzier $nahodne_cislo = $f; ?> Takto to si vygenerujem cislo. Potomtoto cislo ulozim do session a s tym pracujem. Session sa pri zatvoreni prehliadaca zmaze, takze problem nieje. |
||
Anonymní Profil * |
#18 · Zasláno: 12. 9. 2007, 13:13:02
To znamená, že na začátku skriptu máš podmínku:
Když neexistuje např. $_SESSION['cislo'] - vygeneruj ho a ulož ho do proměnný $_SESSION['cislo'] a když existuje tak použij číslo z $_SESSION['cislo'] např. při ukládání nakoupených položek do databáze (nákupní košík) A při jaký příležitosti pak to unikátní číslo odstraňuješ? |
||
Meldo Profil |
#19 · Zasláno: 12. 9. 2007, 13:45:48
Ano. V podstate takto mi to funguje. Len este musis overit, ci je uzivatel prihlaseny aby sa mu tam potom hodilo id loginu alebo nieco take.
|
||
Acid21 Profil * |
#20 · Zasláno: 13. 9. 2007, 12:57:13
no to su zaujimave stranky (konečne).
nieaké vychitávky ? |
||
Časová prodleva: 17 let
|
0