visualizzare nome utente loggato

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
salve a tutti,ho il seguente script registrazione utenti
PHP:
<?php
session_start();

// controllo sul parametro d'invio
if( isset($_POST['submit']) && (trim($_POST['submit']) == "Login") )
{ 
  // controllo sul formato dell'email............
  ...........
    // se i parametri sono in formato corretto interroghiamo il database
    $email = $_POST['email'];
    $password = $_POST['password'];

    // includiamo il file di configurazione
    @include "config.php";

    // controlliamo se i parametri sono presenti in tabella
    $ctrl_login = @mysql_query("SELECT id FROM iscrizioni WHERE email='$email' AND password='$password'") or die (mysql_error());
    if(@mysql_num_rows($ctrl_login)>0)
    {
      // esito login negativo
      echo "Login incorretto";
    }else{
      // esito login positivo 
      $obj = @mysql_fetch_object($ctrl_login) or die (mysql_error());

      // creiamo un id di sessione corrispondente all'utente
      $_SESSION['id'] = $obj->id;

      // redirect alla pagina degli iscritti
    
	  	  echo "<meta http-equiv='Refresh' content='0; URL=iscritti.php'>"; 

    }
  } 
}else{
  // form per la conferma
  ?>......
questa la pagina Iscritti.php
PHP:
<?php
session_start();

// controlliamo se è stata inizializzata la sessione
if(isset($_SESSION['id']))
{
  //controllo id con esito positivo
  echo "Benvenuto! nell'area riservata!";
}else{
  //controllo sessione con esito negativo
  @header("Location: form_login.php");
}
?>
contenuti area riservata........
Mi piacerebbe che accanto alla frase di benvenuto nell'area protetta apparisse il nome dell'utente loggato qualcuno sa dirmi come devo fare per recuperare dal db il nome inserito in fase di registrazione per poi stamparlo a video?
grazie
 
Ciao
Prova cosi
echo("Benvenuto nella Homepage....<BR>-- Ti sei loggato come utente <B>".$_SESSION['id']."</B> --"); ?>
 
Ultima modifica:
Ciao, puoi usare una query SQL, impostando come criterio di ricerca l'ID dell'utente salvato in una sessione. In questo modo non avrai bisogno neanche di impostare sessioni aggiuntive.

Ti basterà cambiare il codice di iscritti.php e prima del messaggio eseguire una query per recuperare il campo name, o come si chiama quello che ti interessa. Il codice sarà simile a questo:
Codice:
SELECT name FROM iscritti WHERE id='{$_SESSION['id']}'

Spero di essere stato abbastanza comprensibile!
 
Visualizzare nome utente

Ciao grazie per le risposte ho provato come suggerito da Minatore ma mi restituisce pagina bianca.
Ho inserito nella pagina protetta con l'include la connessione al database ed ho provato a fare la query la pagina protetta la visualizzo ma non il nome utente dove sbaglio???:hammer:
Grazie,grazie,grazie...
PHP:
	session_start();
@include "config.php";
$nome = @mysql_query("SELECT nome FROM iscritti WHERE id='{$_SESSION['id']}'");
if(isset($_SESSION['id']))
{
  //controllo id con esito positivo
  echo "<font color=#990000><strong>Welcome inside your Reserved Area! .$nome</strong></font>";
}else{
  //controllo sessione con esito negativo
  @header("Location: registrazione.php");
}
 
ho notato che prima fay una query utilizzando il valore di sessione, poi controlli che lo stesso valore esista:
PHP:
$nome = @mysql_query("SELECT nome FROM iscritti WHERE id='{$_SESSION['id']}'");
if(isset($_SESSION['id']))//etc.
dovrebbe essere il contrario.
Togli quelle @ sennò non vedi gli errori
 
visualizzare nome utente

Ciao ho provato come mi hai suggerito ma mi restituisce pagina bianca ,non è che utilizzando una classe per la connessione al db la query debba essere impostata in maniera diversa?magari ho detto una stupidaggine ...:confused:
grazie cmq
 
Per prima cosa se utilizzi una classe non puoi usare la funzione mysql_query, ma devi usare il metodo della classe. E comunque quello restituito dalla query è solo un ID, devi processarlo con mysql_fetch_assoc prima di procedere. Ti consiglio di leggerti una buona guida a mysqli.
 
Devi usare le funzioni di sql. Il ritorno di sql_query dovrebbe essere un array contenente i vari campi e dunque anche quelli che ti servono. Dopodiché usi le variabili di sessione per registrarli da lì tipo:

$SESSION[name]= queryResult[1] ...

e poi usi la variabile di sessione per scrivere il nome nell'altra pagina.
 
Ti ricordo che non c'è bisogno di creare più sessioni per memorizzare un array. Puoi sempre usare la funzione serialize per trasformare qualsiasi tipo di dati in stringa e la funzione unserialize per fare viceversa. Ecco un esempio.

Ammettiamo di avere pagina1.php dove creiamo una sessione contenente un array. Si può fare così:
PHP:
<?php
session_start();

$data = array('nome' => 'Valore', 'nome2' => 'Valore2');
$_SESSION['data'] = serialize($data);
?>

E di avere poi pagina2.php in cui leggere i relativi dati. Ecco come fare:
PHP:
<?php
session_start();
$data = unserialize($_SESSION['data']);

print_r($data);
?>

Quindi in $data avremo di nuovo il nostro array pronto per l'uso. Come se lo avessimo normalmente definito. Queste due funzioni sono molto utili perché ti consentono di memorizzare ogni tipo di informazioni in "recipienti" che potrebbero contenere solo una stringa.
 
visualizzare nome utente

Salve a tutti,vi ringrazio molto per l'aiuto devo ammettere che sono un po' disorientato :confused:sono agli inizi con php (e si vede...forse dovrei fare qualche passo indietro) pero' dal momento che lo script per la registrazione utenti,al quale ho apportato parecchie modifiche,per adattarlo ai miei scopi funziona a dovere, credevo sinceramente fosse piu' semplice del previsto una volta raggiunta la pagina riservata stampare a video il nome dell'utente loggato.Ora mi rileggo per bene le vostre risposte e la guida suggerita Grazie ancora
 
visualizzare nome utente loggato-RISOLTO-

Salve ragazzi dopo parecchi tentativi ho risolto cosi:
PHP:
	session_start();
	 // controlliamo se è stata inizializzata la sessione
if(isset($_SESSION['id']))  
@include "config.php";
$ctrl_nome = @mysql_query("SELECT nome FROM iscrizioni WHERE id='{$_SESSION['id']}'"); 
      if($ctrl_obj = @mysql_fetch_object($ctrl_nome) or die (mysql_error()))
{
  echo "Welcome ".$ctrl_obj->nome."";
}else{....login...
Ciao e grazie a tutti
 

Discussioni simili