+ Rispondi alla Discussione
Risultati da 1 a 2 di 2

Gestione Sessioni

Ultimo Messaggio di Jedi-78 il:
  1. #1
    User Newbie
    Data Registrazione
    May 2011
    Località
    marsala
    Messaggi
    1

    Gestione Sessioni

    Un cordiale saluto a tutti.
    Sono nuovo in questo forum, ma dico la verità ho sempre preso spunto da molte di queste discussioni relative alla programmazione php + mysql, sempre molto interessanti e dettagliate.

    Sto realizzando un ecommerce e mi sono imbattuto in un problema che proprio non riesco a superare.
    Tale problema riguarda la gestione delle sessioni per il carrello.

    Premesso che:
    in locale utilizzo Windows 7 + EasyPHP 5.3.3
    e in remoto (hosting Aruba) utilizzo la piattaforma LINUX

    Lo script per le sessioni che ho generato in locale funziona bene, non da nessun problema, invece in remoto appena aggiorno pagina mi sballa un pò tutto.

    Posto il codice di riferimento:

    pagina carrello.php (pagina che includo nell'header di tutte le pagine)
    Codice:
    <?php 
            //session_start(); è inserito in testa file config.php ad inizio codice, tale pagina è richiamata tramite include.
    	
    	require_once ('admin/_db.php');
    	
    	$cart_numprodotti = 0;
    	$cart_price = 0;	
    
    	if (isset($_SESSION['carrello'])){
    		$carrello = explode("|",$_SESSION['carrello']);
    		for ($i=1;$i<count($carrello);$i++){
    			$cart_prodotto = explode("#",$carrello[$i]);
    			$cart_numprodotti = $cart_numprodotti + $cart_prodotto[1];
    			
    			$query = "SELECT * FROM prodotti WHERE p_codice='$cart_prodotto[0]'";
    			$ris = mysql_query($query) or die("Errore nella query: " . mysql_error());
    			
    			while($array = mysql_fetch_array($ris)){
    				$prodotto_prezzo=strval("$array[p_prezzo]");
    				$prodotto_sconto=("$array[p_sconto]");
    			}
    				
                if ($prodotto_sconto > 0) 
    				$temp = number_format($prodotto_prezzo - ($prodotto_prezzo*($prodotto_sconto/100)),2) * $cart_prodotto[1];
    			else $temp = $prodotto_prezzo * $cart_prodotto[1];
    			
    			$cart_price = $cart_price + $temp;
    		}
    	}
    ?>
    pagina _addcart.php
    Codice:
    <?php
    	session_start();
    	
    	$add = "|".$_POST['codice']."#".$_POST['quant'];
    	
    	if (isset($_SESSION['carrello'])){
    		$old = implode('|',$_SESSION['carrello']);
    		$_SESSION['carrello'] = $old.$add;
    	}
    	else
    		$_SESSION['carrello'] = $add;
    		
    	//var_dump($_SESSION['carrello']);
    	header('location:../dettaglio.php?codice='.$_POST['codice']);
    ?>
    in pratica aggiungo ad una variabile di sessione (carrello) una stringa composta da "|"codiceprodotto"#"quantitàprodotto

    Il problema nasce in REMOTO appena aggiorno qualsiasi pagina il contatore di numeroprodotti e prezzototale viene resettato a 0.

    La cosa che proprio non capisco, è perchè in locale va tutto liscio e in remoto no.

    Spero che qualcuno mi possa aiutare

    Grazie in anticipo

    ps: scusate ho sbagliato sezione, non me ne sono accorto
    Ultima modifica di darkoxx; 20-05-11 alle 19:03 Motivo: sbagliato sezione forum ( perdonatemi :( )

  2. #2
    User L'avatar di Jedi-78
    Data Registrazione
    Apr 2007
    Messaggi
    26
    Posso solo iniziare col dirti una cosa...

    verifica cosa stai passando.

    Controlla cosa ti trovi in mano alla fine di ogni processo (blocca l'esecuzione dello script od altera il finale per vedere cos'hai fatto)

    vedo che in _addcart.php tu richiedi di ripassarti i dati 'codice' tramite POST ($_POST['codice']) e quando però rigiri la pagina con l'header, reinoltri il dato come GET (header('location:../dettaglio.php?codice='.$_POST['codice'])

    Ora... magari sbaglio io... ma non ti conviene passare ad usare una -forse meno sicura ma certamente più 'liberale' - $_REQUEST['codice'] che ritorna il dato qualsiasi sia la modalità con cui l'hai inviato? (Sia esso un GET od un POST)

    Un'altra cosa che mi lascia perplesso....

    questo commento: //session_start(); è inserito in testa file config.php ad inizio codice, tale pagina è richiamata tramite include.

    Ma sei sicuro? Per chiarirci... config.php viene richiamato davvero e correttamente? la pagina carrello.php non la richiami mai, diretto, vero? E' sempre INCLUSA o RICHIESTA da un'altra pagina, giusto?

    Per sicurezza, prova a cambiare l'include col request... vedi se ti esce con l'errore di non trovata....
    Ultima modifica di Jedi-78; 06-06-11 alle 17:54

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.