Egyszerű bevásárló kosár PHP-ban
2012-03-01T21:18:25+01:00
2012-03-03T21:16:02+01:00
2022-07-24T05:27:22+02:00
  • ilyen kosarat én gif-ben csinálnék
    Mutasd a teljes hozzászólást!
  • 1. SOHA!!! nem GET -ben adjuk tovább a kosárba helyezés adatait. (ID,DB)

    Akkor miben? Postban?

    De szerintem ennek a topiknak így semmi értelme. Nyilván ahány megrendelő annyi megoldás lehet. Lehet hogy tegnap rendelte meg a terméket, akkor még a tegnapi áron kapja. Ma meg már új ára van, ami lehet kevesebb, de akár lehet több is. Ha pedig berakja valaki a kosárba, akkor lehet hogy le is foglalja. Gondolj arra, amikor közértbe mész, és berakja a kosaradba a gyereked a kedvenc csokiját. És mikor odaérsz a pénztárhoz, észreveszed, és nem veszed meg neki, mert tanulja meg hogy szól, ha valamit akar. De amíg a kosaradban volt a csoki, addig valaki más megvehette volna. Ahogy annak sem örülsz, ha berakod a kosaradba a 20Ft-os zsemlét, aztán a pénztárnál már kiderül hogy 30Ft. Ez működhet így a neten is, ráadásul így nem éri meglepetésként a vevőt, amikor összeállítja a csomagját, hogy valójában teljesen üres a raktárad és 1000Ft-jából nem jön ki, pedig amikor rendelte még kijött.

    Aztán persze lehet hogy úgy szeretné a megrendelő, ahogy Te írtad. Csak az a rossz, amikor közli a projekt végén, hogy de hát Ő így gondolta, hogy Te ezt így fogod csinálni. Jobb ezt inkább előre tisztázni.
    Mutasd a teljes hozzászólást!
  • Azzal kell törődnöd, hogy a felhasználó ne adhasson hozzá olyan terméket, amely nincs az adatbázisban, nincs raktáron. A felhasználó ne tehessen a kosárba 1-nél kevesebb terméket és többet sem, mint amennyi raktáron van (persze, ha ez tárolva van). A felhasználó ne adhasson hozzá más kosarához tételeket és ne is tudja azokat módosítani.

    Innentől kezdve azt csinál a kosarával, amit szeretne, kárt nem tud okozni.
    Mutasd a teljes hozzászólást!
  • "token" -nek semmi értelme!!!
    1. SOHA!!! nem GET -ben adjuk tovább a kosárba helyezés adatait. (ID,DB)
    2. Ha valaki játékos kedvű az akkor is áttudja írni, ha hidden input mezőben van.
    3. Ha olyan termék ID -t írbe, ami nincs, akkor nem kerülhet kosárba, mert nincs Termék Ára/Adatai.
    4. "token", csak plussz adatbázis körök, és terhelés...

    Max olyankor van értelme, ha valami védet tartalom van, amihez tároljuk pl. SESSION-ban a "token" -t, és ezzel határozzuk meg, hogy X ideig letudja tölteni, eltudja érni az oldalt.
    Mutasd a teljes hozzászólást!
  • Először is a logikai felépítését kell megértened!
    Van egy USER, annak egy USER ID -a.
    Mikor az USER felépp adnod kell neki egy virtuális kosarat.
    Virtuális kosár ID -het add majd Termék ID -ket, darabszámot, egység árat.
    Minden egyes termék kosárba helyezése, kivétele, módosítása után frissíteni kell a kosár össz árát, illetve minden termék árát.
    (pl. tegnap helyezte a kosárba, de azóta akciós lett)

    Termék kosárba helyezésénél meg kell nézni, hogy az adott termékből van-e már kosárba, ha van akkor a hozzá adott mennyiséggel növeled a db számot, ha nincs ISERT -el beszúrod.

    Kosár adatainál a termék mennyiség módosításakor, UPDATE -ed a darabszámot, ha 0, akkor törlöd a bejegyzést.

    Termék eltávolítása esetén, törlöd az adott bejegyzést.

    Előfordulhat, hogy egy terméknek lehet tulajdonsága, ami alapján rendel. Ha ilyen lehetséges, akkor azt is rögzíteni kell a kosár adatainál.
    pl.:
    Férfi Poló 1db, Színe: Fehér, Mérete: XL
    Férfi Poló 3db, Színe: Fekete, Mérete: XL
    Férfi Poló 1db, Színe: Fekete, Mérete: L
    Mutasd a teljes hozzászólást!
  • Tanulni mindenből lehet valamit. Ne is egy MVC frameworkel kezd a PHP tanulást.
    ez kicsit túlbonyolítja a dolgot szerintem. Kezd egy alap kosárral. Csinálj egy hozzáad és egy kivesz függvényt, meg egy ürítést. Tárold sessionben. Ha az megvan, és működik szépen, akkor lehet bővíteni. Akár egy Cart osztályt is összedobhatsz. Aztán megteheted, hogy átírod úgy, hogy, ha be van lépve, akkor adatbázisba tárolja, ne sessionbe.
    Mutasd a teljes hozzászólást!
  • Hát éppen ez az, amiért feltettem a kérdést, mert ezeket a találatokat már én is néztem. Amiért a kérdés megszületett, hogy egy 2005-ben, vagy 2007-ben született cikket mennyire szabad alapul venni? Mikortól minősül valami elavultnak? Érdemes-e megtanulni egy több mint hat éve született cikkben írtakat? Ezért kérdeztem, hogy mi az ami manapság elfogadott és nem elavult.
    Egyébként ez milyen?
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Most mi a baj? Rájöttél, hogy rossz felé jársz? Nem? De!


    Úgy látom, hogy azért elég csípős a hangulat ma este. Igen, kedves R.T.F.M! Azt látom, hogy rossz felé járok, de eddig még derült ki számomra, hogy merre kellene induljak.
    Mutasd a teljes hozzászólást!
  • Most mi a baj? Rájöttél, hogy rossz felé jársz? Nem? De!
    Mutasd a teljes hozzászólást!

  • Kedves klorand!

    Elismerve tudásodat azért halkan jegyzem meg, hogy a prog.hu-t érő negatív kritikáknak az alapjait az olyan viselkedések adják, mint amilyen a tied ma este. Ahelyett, hogy negatív, lelombozó hangvételű postokat küldenél, lehetett volna annyit mondani, hogy : "figyu, rossz felé jársz nagyon, inkább nézz utána ennek vagy ennek... (esetleg itt és itt)"


    Nem tudom, te hogy vagy vele, de én azért szeretném megvédeni a felhasználót saját magától, főleg mert tudom, hogy kik fogják használni....
    Mutasd a teljes hozzászólást!
  • Sőt, ha nem vigyázol eléggé, meg is veszi.
    Mutasd a teljes hozzászólást!
  • Tehat a rosszindulatu tamado egy url meghivasaval tetszoleges termeket pakolhat a sajat bevasarlokocsijaba. Zsenialis, ezt foltetlenul ki kell vedeni!
    Mutasd a teljes hozzászólást!
  • a bevásárló kosár tartalmát a SESSION tömbben tárolja ->ennek a hátránya - szerintem -, hogy ha a felhasználó kilép anélkül, hogy rögzítené a rendelést, akkor elvész a kosár tartalma

    Ha nem akarod, hogy elvesszen, ne sessionbe tedd, hanem mondjuk adatbázisba.


    - a másik lehetőség, hogy ahány cikket kilistázok egy adott oldalon, annyi formot hozok létre, amelyek mindig a listázó oldalt hívják meg, majd az oldal betöltésekor ellenőrzöm, hogy be lett-e nyújtva bármelyik form. Ha igen, akkor feldolgozom a $_POST tömböt.

    Pontosan nem értem, de gyanús, hogy butaság.

    - a harmadik lehetőség, hogy a cikkek kosárba rakását egy másik php fájllal oldom meg, ahol get-tel adom át a kosárba rakandó tételek adatait. A kérdésem, hogy ez mennyire biztonságos? Ha a termékek adatait átadom az URL-ben, akkor az kijátszható-e valahogy? Alternatív megoldásként olvastam, hogy ne konkrét product id-t adjak át, hanem valamilyen tokent generáljak a termékekhez, majd a token segítségével dolgozzam fel a kosárba rakást. Pl: a listázó oldal generálásakor a product id-khoz generálok egy tokent, majd a product id-token párost beteszem egy SESSION tömbbe. A kosárba rakáskor a tokent adom át a feldolgozó oldalnak, ami annak segítségével kikeresi a megfelelő product id-t, majd azt rögzíti az adatbázisban. Az a kérdésem, hogy kb 70000 tételnél ez mennyire lassítja a működést?

    Mitől akarod megvédeni? Egy kosárba rakó funkció kosárba rakást lát el. Attól kell félni, hogy -100 db -ot tesz bele, nem attól, hogy átírja az id-t és mosógép helyett porszívót rendel. Az legyen az ő baja. Azt meg úgyis ellenőrizni kell, hogy létezik-e a termék, és van-e mondjuk belőle.
    Mutasd a teljes hozzászólást!
  • Pl, ha folyamatos a termékek id-jének képzése, akkor elvileg - és persze nem megfelelő védelem mellett - előfordulhat, hogy valaki közvetlenül egy url beírásával tehet terméket a kosárba:
    pl:
    - a hivatkozott oldal urlje: ...insert.php?id=2&db=10
    - jön a vállalkozó kedvű felhasználó, és poénból beírja közvetlenül az böngésző címsorába: ...insert.php?id=133&db1000
    Ebben az esetben ugye úgy teheti be a terméket a kosárba, hogy nem is "tudja" mi az.
    Erre lehetne megoldás a "token", mert azért azt elég nehéz pontosan eltalálni (..insert.php?token=dcxkk2kld2ladlf&db10). Majd az insert.php-ban a token értékét ki lehet olvasni a SESSION-ből. Ez persze csak elmélet....
    Mutasd a teljes hozzászólást!

  • Én is megadom a 10 pontot a hozzászólásra, mert van humorérzékem. Azért mégis érdekelne a miként, hiszen nem a tudástárban tettem fel a kérdést. Persze mondhatnánk, hogy csináltassam meg mással, én meg majd a mostantól számított harmadik teliholdat követő második félhold éjszakáján hajnal kettő és négy között mindenfajta előképzettség nélkül megtanulom, de azért ennek vajmi kevés az esélye.
    Tanulni szeretnék, ezért kérdezem meg a hozzáértőket
    Mutasd a teljes hozzászólást!
  • Kivancsiva tettel.

    "Alternatív megoldásként olvastam, hogy ne konkrét product id-t adjak át, hanem valamilyen tokent generáljak a termékekhez, majd a token segítségével dolgozzam fel a kosárba rakást."

    Es ez miert is jobb a sima id-s megoldasnal? Ha id-t adsz at, az hogy lehet "kijatszani"?
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • szeretném megkérdezni, hogy manapság melyik az elfogadott és egyben biztonságos eljárás?


    Hozzaerto fejlesztore kell bizni a feladatot, ennyi.
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Egy egyszerű bevásárló kosarat kellene írnom, ami a következőket tudja:
    - adatbázisban legyen tárolva a kosár, akár le van zárva, akár nincs
    - csak autentikálás után használható
    - árucikkeket kell hozzáadni/törölni

    A neten kutakodva kezdek elveszni a megvalósítási lehetőségek között, ezért szeretném megkérdezni, hogy manapság melyik az elfogadott és egyben biztonságos eljárás?

    Amiket eddig nézegettem:
    - a bevásárló kosár tartalmát a SESSION tömbben tárolja ->ennek a hátránya - szerintem -, hogy ha a felhasználó kilép anélkül, hogy rögzítené a rendelést, akkor elvész a kosár tartalma
    - a másik lehetőség, hogy ahány cikket kilistázok egy adott oldalon, annyi formot hozok létre, amelyek mindig a listázó oldalt hívják meg, majd az oldal betöltésekor ellenőrzöm, hogy be lett-e nyújtva bármelyik form. Ha igen, akkor feldolgozom a $_POST tömböt.
    - a harmadik lehetőség, hogy a cikkek kosárba rakását egy másik php fájllal oldom meg, ahol get-tel adom át a kosárba rakandó tételek adatait. A kérdésem, hogy ez mennyire biztonságos? Ha a termékek adatait átadom az URL-ben, akkor az kijátszható-e valahogy? Alternatív megoldásként olvastam, hogy ne konkrét product id-t adjak át, hanem valamilyen tokent generáljak a termékekhez, majd a token segítségével dolgozzam fel a kosárba rakást. Pl: a listázó oldal generálásakor a product id-khoz generálok egy tokent, majd a product id-token párost beteszem egy SESSION tömbbe. A kosárba rakáskor a tokent adom át a feldolgozó oldalnak, ami annak segítségével kikeresi a megfelelő product id-t, majd azt rögzíti az adatbázisban. Az a kérdésem, hogy kb 70000 tételnél ez mennyire lassítja a működést?

    Bármilyen megoldási javaslatot szívesen veszek. A segítségeket előre is köszönöm szépen.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd