![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
User Newbie
Data di registrazione: Jun 2011
Ubicazione: Bologna
Messaggi: 8
|
Dubbi e problemi gestione sessioni
Ciao,
mi sono approcciato al PHP da poco comunque sto cercando di scrivere un portale di e-commerce in PHP e HTML che lavora in locale con base dati MySQL collegato all'ERP AbanQ. Il mio approccio è stato, html per le pagine (mostrare immagini, informazioni..) e php per gestire le varie funzioni delle pagine (si fa così, no?). Ho due problemi fondamentali che riguardano entrambi l'utilizzo delle variabili di sessione: il carrello e il sistema di login. Gli ho implementati entrambi ma appena cambio pagina perdo tutti i dati che avevo salvato nella prima. Spiego con un po' più di dettaglio il problema del carrello che penso quando avrò risolto questo il comportamento da usare nel login sarà esattamente identico: - carrello.php rappresenta il concetto di carrello, con la possibilità di aggiungere/togliere articoli - carico i prodotti presenti su una base dati MySql. Il cliente può selezionare il prodotto che desidera e verrà indirizzato ad una pagina html con le caratteristiche del prodotto che contiene un form per l'aggiunta di una determinata quantità di prodotto nel carrello - cesta.html dovrebbe mostrare i contenuti del carrello Per intenderci: Prodotti [.html] --> Pagina delle specifiche prodotto con Form [.html] --> form [.php] --> stampaCarrello [.html] Ho letto molto sull'argomento, ma non riesco ancora a capire dove è carente ciò che ho programmato. Qualche consiglio? Dubbi amletici: 1) La funzione session_start() va eseguita anche se non sono necessari i dati all'interno della pagina html? 2) Sbaglio perchè sto usando troppo html (non so, è davvero poco che programmo con php, magari alcune funzioni non sono supportate in html)? Devo rifare tutto con estension php? 3) Sto lavorando in locale, c'è qualcosa che devo cambiare nelle impostazioni del file php.ini?? 4) Perchè sono sbagliati i pezzi commentati in cesta.html? (vedi codice che segue) 5) è un errore creare un nuovo elemento carrello nel php? credo che lì dovrei aggiungere un controllo.. Inserisco un po' di codice per farvi capire meglio: *caratteristicheProdotto.html Codice HTML:
<!--- parte grafica ---> <FORM action="aggCamDom.php" method="post"> <font size="3pt">PRECIO: 1200 euro </font><br/> <font size="3pt">Número de unidades </font> <input type="text" name="cantidad" size="20"><BR> <INPUT type="submit" value="Anadir a la cesta"><BR></p> </FORM> Codice PHP:
Codice HTML:
<?php session_start(); ?> <!------ vario per implementare interfaccia HTML ---------> <?php //Qui se metto: // import("carrello.php"); $cesta= new carrello(); //mi da errore (mi dice che non posso richiamare carrello.php) ma pensavo si dovesse fare così! $cesta= $_SESSION['carrello']; $cesta->printcart(); ?> Codice:
Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "carrello" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\Portale\wamp\www\segurafinal\cesta.html on line 25 |
|
|
|
|
|
|
|
#2 (permalink) |
|
User Newbie
Data di registrazione: Jun 2011
Ubicazione: Bologna
Messaggi: 8
|
ho provato a modificare qualcosa ma sono ancora più confuso!! Ho pensato che era possibile gestire la stampa del carrello non da cesta.html ma con un altra funzione in .php e ho pensato di modificare i php dei form per l'aggiunta del preciso prodotto al carrello per effettuare un miglior controllo:
*aggiungiProdotto.php Codice PHP:
Codice PHP:
Il print_r($_SESSION["carrello"]) in aggiungiProd.php dopo il controllo dell'esistenza del carrello mi da come risultato: Codice:
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => cart [id] => Array ( [0] => PR01 ) [qt] => Array ( [0] => 5 ) [vt] => Array ( [0] => 0 ) [precio] => Array ( [0] => 70 ) ) Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "cart" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\Portale\wamp\www\segurafinal\aggCamEst.php on line 9 |
|
|
|
|
|
#3 (permalink) |
|
ModSenior
|
Ciao GHoldenBoy,
questa cosa non ha senso: Codice PHP:
|
|
|
|
|
|
#4 (permalink) |
|
User Newbie
Data di registrazione: Jun 2011
Ubicazione: Bologna
Messaggi: 8
|
ma in teoria dentro $_SESSION["carrello"] non ho un elemento di tipo carrello?? io volevo recuperare i dati di QUEL carrello, aggiungerci i prodotti, e aggiornarlo nuovamente alla fine con $_SESSION["carrello"]=$cart ..
ci deve essere qualcosa che non ho capito bene.. |
|
|
|
|
|
#5 (permalink) |
|
ModSenior
|
Codice PHP:
Dall'errore sembra manchi la definizione della classe, cioè tu fai: Codice PHP:
Codice PHP:
|
|
|
|
|
|
#6 (permalink) |
|
User Newbie
Data di registrazione: Jun 2011
Ubicazione: Bologna
Messaggi: 8
|
Ah ok, non devo creare un istanza della classe per poterci passare il valore (il mio era un approccio molto Java)!!
La classe del carrello non dovrebbe essere nell' include_once("cart.php"); Ora modifico qualcosa e tengo aggiornato il post! Grazie per l'interessamento |
|
|
|
|
|
#7 (permalink) |
|
ModSenior
|
Se la definizione della classe è in include_once("cart.php"); prova a spostare l'include in modo venga incluso prima di session_start.
EDIT: Altrimenti puoi serializzare l'oggetto prima di salvarlo nella sessione. |
|
Ultima modifica di Thedarkita : 25-06-11 16:13. |
|
|
|
|
|
|
#8 (permalink) |
|
User Newbie
Data di registrazione: Jun 2011
Ubicazione: Bologna
Messaggi: 8
|
Penso di aver individuato la fonte di problema! Se seguo l'iter normale di vendita quindi:
Pagina con dettagli --> Form per la quantita --> Cesta riassuntiva mi da la tabella che mi deve stampare. Ho messo un messaggio di stampa del carrello (print_r($_SESSION["carrello"]) prima della stampa dei prodotti se il carrello risultava con alcuni oggetti. Il risultato è: cart Object ( [id] => Array ( [0] => PR00 ) [qt] => Array ( [0] => 3 ) [vt] => Array ( [0] => 0 ) [precio] => Array ( [0] => 1200 ) ) Se subito dopo riclicco sul bottone che mi dovrebbe riportare alla stessa pagina html (la solita cesta) ottengo come risultato: __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => cart [id] => Array ( [0] => PR00 ) [qt] => Array ( [0] => ) [vt] => Array ( [0] => 0 ) [precio] => Array ( [0] => 1200 ) ) e un bel messaggio d'errore Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "cart" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\Portale\wamp\www\segurafinal\stampCarr.php on line 8 il problema è quindi che lui si ricorda le caratteristiche del'oggetto, ma non ricorda che è un elemento della classe cart.php!! Può essere questa la fonte di tutto il problema?? consigli per risolverlo?? |
|
|
|
|
|
#10 (permalink) |
|
User Newbie
Data di registrazione: Jun 2011
Ubicazione: Bologna
Messaggi: 8
|
sisi.. la chiamata aggiungiProdotto è così:
Codice PHP:
Codice PHP:
|
|
Ultima modifica di GHoldenBoy : 25-06-11 18:42. |
|
|
|
|
|
|
#14 (permalink) |
|
User Newbie
Data di registrazione: Jun 2011
Ubicazione: Bologna
Messaggi: 8
|
anche io sto lavorando in locale ed è così che deve funzionare il mio portale per l'esame!
Io sto utilizzando WAMP server con Apache, MySQL e PHP, mi sembra che tutto mi funzioni a parte questo della gestione delle sessioni!! Non so cosa può essere, devo fare delle modifiche ai file dei programmi (httpd.conf, php.ini, my.ini) ??? Io la seriazizzazione l'avevo fatta così: caricaprodotto.php Codice PHP:
Codice PHP:
( ! ) Warning: unserialize() expects parameter 1 to be string, object given in C:\Portale\wamp\www\segurafinal\aggCamDom.php on line 7 ! ) Fatal error: Call to a member function add() on a non-object in C:\Portale\wamp\www\segurafinal\aggCamDom.php on line 8 e non continua.. Ho sbagliato qualcosa io?? |
|
|
|