Pack Gestione account [Help pls]

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

Rispondi
Urano
membro Junior
membro Junior
Messaggi: 22
Iscritto il: 04/01/2006, 15:39

Pack Gestione account [Help pls]

Messaggio da Urano »

Sto preparando un mini how to per la creazione di un nuovo box per la gestione dei dati del cliente, so che questo a qualcuno di voi sembrerà banale ma ho deciso che tutti i progressi che farò su oscommerce li renderò accessibili a quelli più newbbe di me, per rispetto della filosofia stessa di oscommerce.
Ovviamente vorrei un aiutino perchè come già sapete non sono un mostro in php ;)

Allora se non avete capito bene cosa sto cercando di fare eccolo qua in tutto il suo splendore :roll:
Immagine

Tutto funziona (e questo mi stupisce!) l'unica cosa che chiedo a uno di voi maestri è:
Come si gestiscono le sessioni del login?
Per esempio se clicco nel box sul login mi porta a login.php scrivo user e password e tutto funziona (non fa una piega...) però se clicco dopo aver effettuato il login su gestione ordini mi riporta un altra volta su login.php perchè non trova la sessione salvata...reinserisco i dati e poi finisco su account_history.php

Io vorrei evitare questa bella menata e portarmi dietro la sessione del login dopo aver inserito i dati la prima volta.
Ho capito che questo è il codice che gestisce l'autenticazione dell'user:

Codice: Seleziona tutto

  if (!tep_session_is_registered('customer_id')) {
    $navigation->set_snapshot();
    tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
  }
Almeno credo sia questo...

Credo di dover inserire qualcosa nel box che ho creato:

Codice: Seleziona tutto

 $info_box_contents = array();
  $info_box_contents[] = array('text' => '<center><a href="http://localhost/catalog/login.php">' . tep_image(DIR_WS_IMAGES . 'grafica/usercontrol.gif') . '</a></center>');
  $info_box_contents[] = array('text' => '<a href="http://localhost/catalog/login.php">' . "Login" . '</a>');
  $info_box_contents[] = array('text' => '<a href="http://localhost/catalog/account_history.php">' . "Gestione ordini" . '</a>');
  $info_box_contents[] = array('text' => '<a href="http://localhost/catalog/account_edit.php">' . "Modifica generalità" . '</a>');
  $info_box_contents[] = array('text' => '<a href="http://localhost/catalog/account_password.php">' . "Modifica password" . '</a>');
ma non so proprio cosa...qualcuno di voi sa aiutarmi?
Urano
membro Junior
membro Junior
Messaggi: 22
Iscritto il: 04/01/2006, 15:39

Messaggio da Urano »

ho pensato...non è che dipende dal fatto che uso apache in locale e non so che menata sia legata ai cookies non me lo ricordo ma mi pare che qualcosa ci fosse...

Poi ho notato che l'os fa una codifica delle variabili sull'url per non passarle in chiaro, non è che vanno decodificate sulla pagina di ascolto per poterle sfruttare?

Grazie ancora
Urano
membro Junior
membro Junior
Messaggi: 22
Iscritto il: 04/01/2006, 15:39

Messaggio da Urano »

OK :roll:
La chiara e semplice dimostrazione di quanto sono newbs ;)

Tutta la sessione di login viene semplicemente trascinata dal .tep_href_link puntanto poi alle pagine definite nel filenames.php
Indipercui non si può scrivere

Codice: Seleziona tutto

<a href="http://localhost/catalog/login.php">' . "Login" . '</a>');
Ma bisogna scrivere:

Codice: Seleziona tutto

<a href="'.tep_href_link(FILENAME_LOGIN, '', 'SSL').'">' . "Login" . '</a>');
Perdonate la domanda stupida ;)
Bass
membro Master
membro Master
Messaggi: 3593
Iscritto il: 18/04/2004, 0:00
Località: Varese
Contatta:

Messaggio da Bass »

Urano ha scritto: Perdonate la domanda stupida ;)
Beh, considera che il fatto che ci sei arrivato da solo non puo' che essere un vantaggio :wink:

'iao

Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto

http://www.semilandia.it
Urano
membro Junior
membro Junior
Messaggi: 22
Iscritto il: 04/01/2006, 15:39

Messaggio da Urano »

So che questo codice farà inorridire gli esperti (gli array non si pagano ghghghgh) ma come già detto non sono un asso in php lo sto studiando da 3 giorni...
Nel caso in cui potesse interessare a qualcuno questo script permette di:

Creare un nuovo box (destra o sinistra)
Far loggare l'utente
Una volta che l'user ha avviato la sessione il box contiene i link per la gestione degli ordini e dei dati personali.


Codice: Seleziona tutto

<?php
/*
  USER CONTROL BOX BY URANO V 1.0
  http://www.oscommerceitalia.com
  EDITED UPON THE DISTRIBUTION OF OSCOMMERCE CREATED BY BASS (http://www.oscomtemplate.com)
  Released under the GNU General Public License
*/
?>
          <tr>
            <td>
<?php
//--VERIFICO SE L'UTENTE E' GIA' LOGGATO
 if (tep_session_is_registered('customer_id')) {
	 $info_box_contents = array();
	  $info_box_contents[] = array('align' => 'left',
								   'text'  => Account);
//--PRENDO IL NOME DELL'UTENTE DA MYSQL PER SALUTARLO								   
	$db=DB_DATABASE;
	$select="select customers_firstname from customers where customers_id=\"$customer_id\"";
	$result=mysql_db_query($db,$select);
	$res=mysql_fetch_object($result);
//--COSTRUISCO IL BOX CON IL MENU'	
  new infoBoxHeading($info_box_contents, false, false, false, $column_location);
  $info_box_contents = array();
  $info_box_contents[] = array('text' => '<center><a href="http://localhost/catalog/login.php">' . tep_image(DIR_WS_IMAGES . 'grafica/usercontrol.gif') . '</a></center>');
  $info_box_contents[] = array('text' => "<center> Benvenuto  $res->customers_firstname</center>");
  $info_box_contents[] = array('text' => '<a href="'.tep_href_link(FILENAME_LOGOFF, '', 'SSL').'">' . "Log-off" . '</a>');
  $info_box_contents[] = array('text' => '<a href="'.tep_href_link(FILENAME_ACCOUNT_HISTORY, '', 'SSL').'">' . "Gestione ordini" . '</a>');
  $info_box_contents[] = array('text' => '<a href="'.tep_href_link(FILENAME_ACCOUNT_EDIT, '', 'SSL').'">' . "Modifica generalità" . '</a>');
  $info_box_contents[] = array('text' => '<a href="'.tep_href_link(FILENAME_ACCOUNT_PASSWORD, '', 'SSL').'">' . "Cambia password" . '</a>');
  new infoBox($info_box_contents, $column_location);
  	} 
//L'UTENTE NON E' LOGGATO	
	else 
	{
$info_box_contents = array();
	  $info_box_contents[] = array('align' => 'left',
								   'text'  => "LOG-IN");
//COSTRUISCO IL BOX E IL FORM PER L'INVIO DEI DATI
  new infoBoxHeading($info_box_contents, false, false, false, $column_location);
  $info_box_contents = array();
  $info_box_contents[] = array('text' => '<form name="login" action="login.php?action=process" method="post">');
  $info_box_contents[] = array('text' => '<CENTER>EMAIL<C/ENTER>');
  $info_box_contents[] = array('text' => '<CENTER><input maxLength="96" name="email_address"size="12"></CENTER>');
  $info_box_contents[] = array('text' => '<CENTER>PASSWORD<CENTER>');
  $info_box_contents[] = array('text' => '<CENTER><input type="password" maxLength="40" value name="password" size="12"></CENTER>');
  $info_box_contents[] = array('text' => '<CENTER><input type="submit" value="INVIA" name="Submit"</CENTER>');
  $info_box_contents[] = array('text' => '</FORM>');
  new infoBox($info_box_contents, $column_location);
  } 
?>
            </td>
          </tr>
Istruzioni:
E' molto semplice.
Copiare il codice in un editor di testo e rinominare il file in controluser.php
Copiare controluser.php in catalog/include/boxes/
Aprire il file column_left.php (column_right.php se lo volete a destra) lo trovate in catalog/include/ e aggiungere questo codice alla riga 29

Codice: Seleziona tutto

  
require(DIR_WS_BOXES . 'controluser.php')
copiare un icona gif a vostro piacere in /catalog/images/grafica/ chiamarla controluser.gif, se non avete la cartella grafica basta che la create...
et voilà tutto è finito...

Attenzione:
Questo script non è compatibile con altre lingue, solo italiano, ammeno chè non sostituiate i valori contenuti nel box assegnandogli delle variabili definite nei vari files delle lingue nella cartella catalog/languages a me faceva una fatica immane ghhghg ;)

P.S.
Mi farebbe molto piacere se qualcuno dei grandi desse una bella ripassata al codice per snellirlo...è pieno di ciofeche così imparo qualcosa :)
Ciao ciao
Rispondi