Poslao: 04 Nov 2010 16:34
|
offline
- Pridružio: 16 Jan 2010
- Poruke: 241
- Gde živiš: Zemun
|
Potrebni su mi neki saveti u vezi cuvanja stanja na sajtu, da li je to bolje raditi sa sesijama ili sa cookie-jima?
Evo sta treba da uradim, imam kao neku verziju prodavnice, osiromasenu, gde imam izbor proizvodjaca, izbor modela mobilnog telefena i ubacivanje u korpu. E sad, meni je potrebno da mi se cuva to stanje, odnosno da mi zapamti koje proizvode sam izabrao i da mogu da dodajem jos proizvoda i da iz "korpe" brisem neke stavke.
Ja sam probao sa cookie-jima, ali imam problem sa nizom, jer ne znam kako da ubacujem te stavke u cookie i da ih kasnije izlisatavm kao tabelu.
Znaci, cilj ovog rada je da pamti stanje, nista vise mi nije potrebno.
Hvala unapred!!!
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 04 Nov 2010 17:04
|
offline
- MSMarkoN
- Ugledni građanin
- Pridružio: 15 Maj 2006
- Poruke: 333
- Gde živiš: Babušnica
|
Da sam na tvom mestu iskoristio bih IP adresu posetioca, upisivao stavke u privremenu korpu (mysql) sa opcijom za brisanje/pomeranje iz korpe. Sve to u kombinaciji sa ajaksom da bude glatko
|
|
|
|
Poslao: 04 Nov 2010 17:11
|
offline
- Pridružio: 16 Jan 2010
- Poruke: 241
- Gde živiš: Zemun
|
I ja sam razmisljao da to uradim sa bazom, ali ne znam koliko je to pametno? Svi mi preporucuju cookie ili sesiju, da li se to koristi u praksi? Koliko je opterecenje na bazu i na server kad se radi tako? Izvini sto ovako zapitkujem, ali to moram da branim kod profesora, pa da znam.
Pomocu kojeg upita ja mogu da saznam ip adresu posetioca?
|
|
|
|
Poslao: 04 Nov 2010 17:21
|
offline
- MSMarkoN
- Ugledni građanin
- Pridružio: 15 Maj 2006
- Poruke: 333
- Gde živiš: Babušnica
|
Koristio sam sesije (uglavnom za login skriptu) ali nekad prave problem jer se dešava da u lokalu radi a na serveru neće (koliko sam ja skontao u pitanju je utf-8 koji namestim u notepad++) dok kolačiće ne volim pa ne mogu ništa da ti pričam o njima.
Možeš da probaš sa sesijama ali je moje mišljenje da ćeš se namučiti sa podacima koje bi pamtio.
evo za ip pa probaj
$ip = $_SERVER['REMOTE_ADDR'];
|
|
|
|
Poslao: 04 Nov 2010 17:55
|
offline
- Pridružio: 16 Jan 2010
- Poruke: 241
- Gde živiš: Zemun
|
Aha, ma namucih se sa cookie-jima i sesijama, videcu sad da uradim da mi upisuje u bazu u neku tabelu i da iz nje iscitava podatke. Ako negde zagusti javljam se, hvala ti jos jednom.
|
|
|
|
Poslao: 05 Nov 2010 11:59
|
offline
- zend
- Počasni građanin
- Pridružio: 22 Okt 2009
- Poruke: 900
- Gde živiš: Pancevo
|
mani cookie to nemoj nikako da koristis a pogotovo ako radis sa bazom.
Ja na svojoj korpi koristim drugaciji sistem, nisam sada kod kuce pa cim dodjem kuci poslacu ti deo koda da bacis oko kako izgleda.
|
|
|
|
Poslao: 05 Nov 2010 12:20
|
offline
- |_MeD_|
- Zaslužni građanin
- Pridružio: 02 Okt 2005
- Poruke: 546
|
Koristi kombinacuji koki koji cuva id korisnika naosnovu koga nadjes nejgove podatke u bazi.
Generalno najstabilnija varijanta.
U kikije nemoj nikad stavljati velike podatke jel se oni salju pri svakim zahtevom na server, a to zna da daje utisak da ti je sajt spor ako ima slab upload.
IP-adrese su uglavnom dinamicke a ima dosta NAT-vanh koji dele istu javnu adresu.
|
|
|
|
Poslao: 05 Nov 2010 14:10
|
offline
- Pridružio: 16 Jan 2010
- Poruke: 241
- Gde živiš: Zemun
|
Na kraju sam uradio preko baze, planiram da iskoristim cookie za identifikaciju korisnika. Sad imam jedno pitanje, imam dugme, koje treba da radi brisanje podataka iz tabele. E sad, kako da povezem to dugme i upit za brisanje podatka iz tabele i da se stranica ponovo ucita i prikaze novo stanje?
@zend Posalji mi taj kod koji imas, cisto da vidim kako to izgleda?
|
|
|
|
|
Poslao: 05 Nov 2010 14:57
|
offline
- zend
- Počasni građanin
- Pridružio: 22 Okt 2009
- Poruke: 900
- Gde živiš: Pancevo
|
Pazi ja kod mene pri unosenju podataka o porudzbinama kupaca koristim transakcije, postupak je jednostavan i siguran koristim masinu baze
InnoDB
Imas tri mogucnosti belezenja stavki koje je korisnik izabrao prilikom kupovine.
1. Da koristis promenjivu sesije
2. Da upisujes u bazu
3. Da koristis cookies
Ako izaberes da koristis sesije za cuvanje izabranih proizvoda pri prelasku s jedne stranice na drugu, pojednostavljuje kod jer nije potrebno da se ti podaci neprekidno ucitavaju iz baze podataka.
Pazi osim toga, imas brdo korisnika koji samo pretrazuju Web lokaciju, pa se na kraju predomisle i ne kupe nista, nece puniti bazu podataka smecem.
Zato je najbolje da cuvas u jednoj promenljivoj sesije ili cak sto vise u grupi takvih promenljivih u kojima ces da cuvas podatke o proizvodima koje je korisnik izabrao.
Kada korisnik zavrsi kupovinu i plati proizvod koji je izabrao, podatke o tome upisujes u bazu podataka kao evidenciju podataka da je transakcija obavljena.
Te podatke koje upises mozes da upotrebis i za to da bi u nekom uglu stranice prikazao tekuce stanje korpe. Tako ce korisnik u svakom trenutku znati koliko ce potrositi.
Evo ti neki primeri kod mene kako je.
Ovo koristim da prikazem korpu.
<?php
include ('sc_fns.php');
// Posto za rad korpe koristim sesiju onda je i zapocinjem
session_start();
@ $new = $_GET['new'];
if($new)
{
//Nova stavka je izabrana
if (!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
$_SESSION['items'] = 0;
$_SESSION['total_price'] ='0.00';
}
if (isset($_SESSION['cart'][$new]))
$_SESSION['cart'][$new]++;
else
$_SESSION['cart'][$new] = 1;
$_SESSION['total_price'] = calculate_price($_SESSION['cart']);
$_SESSION['items'] = calculate_items($_SESSION['cart']);
}
if (isset($_POST['save']))
{
foreach ($_SESSION['cart'] as $isbn => $qty)
{
if ($_POST[$isbn]=='0')
unset($_SESSION['cart'][$isbn]);
else
$_SESSION['cart'][$isbn] = $_POST[$isbn];
}
$_SESSION['total_price'] = calculate_price($_SESSION['cart']);
$_SESSION['items'] = calculate_items($_SESSION['cart']);
}
do_html_header('Your shopping cart');
if($_SESSION['cart']&&array_count_values($_SESSION['cart']))
display_cart($_SESSION['cart']);
else
{
echo '<p>There are no items in your cart</p>';
echo '<hr />';
}
$target = 'index.php';
// Ako smo dodali stavku u korpu, nastavljamo kupovinu
// u toj kategoriji
if($new)
{
$details = get_book_details($new);
if($details['catid'])
$target = 'show_cat.php?catid='.$details['catid'];
}
display_button($target, 'continue-shopping', 'Continue Shopping');
// Koristim ovaj kod ako je SSL aktivan
//
// $path = $_SERVER['PHP_SELF'];
// $server = $_SERVER['SERVER_NAME'];
// $path = str_replace('show_cart.php', '', $path);
// display_button('https://'.$server.$path.'checkout.php',
// 'go-to-checkout', 'Go To Checkout');
// Ako SSL nije aktivan koristim ovaj kod
display_button('checkout.php', 'go-to-checkout', 'Go To Checkout');
do_html_footer();
?>
E sada da ti pojasnim ova scripta se sastoji od tri glavna dela:
1. Prikazivanje sadrzaja korpe
2. Dodavanje sadrzaja u korpu
3. Snimanje izmena u korpu
Bez obzira na koju je stranicu neki korisnik dosao uvek mu mozes prikazati sadrzaj korpe. Ako na primer taj korisnik pritisne dugme POGLEDAJ KORPU
Prikazes mu sadrzaje gore sam u kodu to naveo ali ajde da odvojim taj deo.
if ($_SESSION['cart'] &&
array_count_values ($_SESSION['cart'] ))
display_cart ($_SESSION['cart'] );
else
{
echo 'Korpa je prazna';
}
Da dodas stavku u korpu
if ( !isset ($_SESSION['cart']))
{
$_SESSION['cart'] = array();
$_SESSION['cart'] = 0;
$_SESSION['total_price'] = '0.00';
}
Korpa je u pocetku prazna.
Drugo kada znas da korpa postoji mozes da dodas izabrani proizvod u nju.
if (isset($_SESSION['cart'] [$new]))
$_SESSION['cart'] [$new] ++ ;
else
$_SESSION['cart'] [$nw] = 1;
Isitas da li odredjeni proizvod vec postoji u korpi. Ako je tako povecas za jedan broj primeraka tog proizvoda. Ako nije dodaje se novi proizvod u korpu.
I naravno na kraju treba da izracunas ukupan iznos i broj proizvoda
$_SESSION['total_price']= calculate_price ($_SESSION['cart']);
$_SESSION['items'] = calculate_items ($_SESSION['cart']);
Ux ja se raspisao... DOsta ti je izvali sada sustinu svega tako je kod mene po tom fazonu radi i nemam problema. Pogledaj vidi probaj da izvuces maximum iz sesija jer su cudo. Uradi na svoj nacin ja sam ti cisto objasnio kako to funkcionise da ti ne pisem celu moju korpu sada... Nadam se da sam ti pomogao.
Pozdrav
|
|
|
|