Autor Zpráva
Meldo
Profil
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
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
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 *
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
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
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
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 *
- 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
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 *
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
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
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
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
Proč není použití sessionid bezpečné?
Meldo
Profil
http://www.google.sksearch?as_q=session+injection&hl=sk&num=10&btnG=H% C4%BEada%C5%A5+v+Google&as_epq=&as_oq=&as_eq=&lr=lang_cs&as_ft=i&as_fi letype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=


http://php.vrana.cz/zabezpeceni-session-promennych.php

alebo hladaj session injection
H13
Profil
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
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 *
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
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 *
no to su zaujimave stranky (konečne).
nieaké vychitávky ?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0