Lettura username in pagina una volta effettuato il login

di il
9 risposte

Lettura username in pagina una volta effettuato il login

Salve
ho uno script che mi effettual il login:


<?php
session_start();// come sempre prima cosa, aprire la sessione 
include("db_con.php"); // Include il file di connessione al database
$_SESSION["username"]=$_POST["username"]; // con questo associo il parametro username che mi è stato passato dal form alla variabile SESSION username
$_SESSION["password"]=$_POST["password"]; // con questo associo il parametro username che mi è stato passato dal form alla variabile SESSION password
$query = mysql_query("SELECT * FROM users WHERE username='".$_POST["username"]."' AND password ='".$_POST["password"]."'")  //per selezionare nel db l'utente e pw che abbiamo appena scritto nel log
or DIE('query non riuscita'.mysql_error());
// Con il SELECT qua sopra selezione dalla tabella users l utente registrato (se lo è) con i parametri che mi ha passato il form di login, quindi
// Quelli dentro la variabile POST. username e password.
if(mysql_num_rows($query)>0){        //se c'è una persona con quel nome nel db allora loggati
$row = mysql_fetch_assoc($query); // metto i risultati dentro una variabile di nome $row
$_SESSION["logged"] =true; // Nella variabile SESSION associo TRUE al valore logge

header("location:index_log.html"); // e mando per esempio ad una pagina esempio.php// in questo caso rimanderò ad una pagina prova.php
}else{
echo "Login non avvenuto, ricontrolla i campi!"; // altrimenti esce scritta a video questa stringa di errore
}
?>
ora voglio che una volta effettuato il login, mi stampi la username
nella pagina index_log.html

ed io ho provato così
nella mia pagina index_log.html
ho scritto
<?php
require("login.php");
if(empty($_SESSION['username']))
{
header("Location: index_login.html");
die("Redirecting to index_login.html");
}
?>

tutta la mia pagina in html
e quindi dove voglio farmi visualizzare il nome cosi :
<li>Ciao <?php echo htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8'); ?>, benvenuto nel nostro portale!</li>
Cosa ci sta che non va?

9 Risposte

  • Re: Lettura username in pagina una volta effettuato il login

    Non ho ben capito cosa vuoi dire, e soprattutto mi pare che non hai spiegato che errore viene fuori.

    Comunque a una prima occhiata quel die("Redirecting to index_login.html"); non ha senso.

    ciao
  • Re: Lettura username in pagina una volta effettuato il login

    Non mi da errori..
    solo che non mi riesco a prendere la username!!

    Allora ho un form dove effettuo il login
    inserisco i dati ad esempio user: admin
    password:admin

    effettua il login
    e mi porta nella pagina index_login.html

    e in questa pagina voglio che mi stampi:

    Ciao ADMIN benvenuto nel mio portale!
  • Re: Lettura username in pagina una volta effettuato il login

    A parte i possibili problemi di SQL injection nell'usare direttamente nella query ciò che scrive l'utente, bisognerebbe vedere anche com'è fatta la form. In particolare la form ha come azione la pagina di login?
  • Re: Lettura username in pagina una volta effettuato il login

    Hai messo session_start anche all'inizio di index.php?

    In index.php ti visualizza almeno il codice html statico? (ciao . Benvenuto nel nostro portale.).
  • Re: Lettura username in pagina una volta effettuato il login

    Si ho messo la session_start anche in index.php
    e cmq il messaggio me lo visualizza!!
  • Re: Lettura username in pagina una volta effettuato il login

    Questo è il form che sta in index.html
    
     <?php 
             if(empty($_SESSION['username'])){?>
    	    <form name="form_login" method="post" action="login/login.php">
    					<li id="li_1" >
    						<label class="description" for="element_1">Username </label>
    						<input size="8" maxlength="255" name="username" id="username" type="text" maxlength="255" value=""/>
    					</li>						
    		            <li id="li_2" >
    						<label class="description" for="element_2">Password </label>
    						<input size="8" maxlength="255" name="password" id="password" type="text" maxlength="255" value=""/> 
    					</li>
    						<button>Accedi</button>
    					<label >Non sei registrato?</label>
    					<label > <a href="javascript:PopupCentrata()">Registrati</a></label>
    				
    		
    		</form>
    
    questo è il login.php
    
    <?php
    session_start();// come sempre prima cosa, aprire la sessione 
    include("db_con.php"); // Include il file di connessione al database
    
    function encrypt($string){
    	return base64_encode(base64_encode(base64_encode($string)));
    }
    
    function decrypt($string){
    	return base64_decode(base64_decode(base64_decode($string)));
    }
    $_SESSION["username"]=$_POST["username"]; // con questo associo il parametro username che mi è stato passato dal form alla variabile SESSION username
    $_SESSION["password"]=$_POST["password"]; // con questo associo il parametro username che mi è stato passato dal form alla variabile SESSION password
    $query = mysql_query("SELECT * FROM users WHERE username='".$_POST["username"]."' AND password ='".$_POST["password"]."'")  //per selezionare nel db l'utente e pw che abbiamo appena scritto nel log
    or DIE('query non riuscita'.mysql_error());
    // Con il SELECT qua sopra selezione dalla tabella users l utente registrato (se lo è) con i parametri che mi ha passato il form di login, quindi
    // Quelli dentro la variabile POST. username e password.
    if(mysql_num_rows($query)>0){        //se c'è una persona con quel nome nel db allora loggati
    $row = mysql_fetch_assoc($query); // metto i risultati dentro una variabile di nome $row
    $_SESSION["logged"] =true; // Nella variabile SESSION associo TRUE al valore logge
    
    
    
    
    header("location:index_log.html"); // e mando per esempio ad una pagina esempio.php// in questo caso rimanderò ad una pagina prova.php
    }else{
    echo "Login non avvenuto, ricontrolla i campi!"; // altrimenti esce scritta a video questa stringa di errore
    }
    ?>
    
    e questa è la parte dove mi dovrebbe stampare il ciao ...... Benvenuto nel nostro portale. index_log.html
    
    <ul >
    ì
    				 <li>Ciao <a><i><?php echo $login_session; ?></i></a>, benvenuto nel nostro portale!</li>
    	 <li><a href="logout1.php">Log Out</a></li>
  • Re: Lettura username in pagina una volta effettuato il login

    Perché usi un button e non submit? Potrebbe essere quello il problema.

    In ogni caso, in questi casi puoi provare a stampare un po' di dati intermedi.
    Ad esempio, stampa $_POST['username'] prima di assegnarlo alla sessione, magari dentro un die in modo da bloccare l'esecuzione. In questo modo vedi se il i dati del form arrivano allo script php.
  • Re: Lettura username in pagina una volta effettuato il login

    Grazie dell'aiuto
    ho risolto riscrivendo il tutto..

    pagina del login
    
    
      <?php
    include('login.php'); // Includes Login Script
    
    if(isset($_SESSION['login_user'])){
    header("location: index_log.php");
    }
    ?>
    
    <form action="" method="post">
    
    <label>UserName :</label>
    <input size="8" id="name" name="username" placeholder="username" type="text" maxlength="255">
    <label>Password :</label>
    <input size="8" id="password" name="password" placeholder="**********" type="password" maxlength="255">
    <input name="submit" type="submit" value=" Login ">
    <span> <font color=”red”> <?php echo $error; ?></span></font >
    
    

    il login.php
    <?php
    session_start(); // Starting Session
    $error=''; // Variable To Store Error Message
    if (isset($_POST['submit'])) {
    if (empty($_POST['username']) || empty($_POST['password'])) {
    $error = "Username or Password is invalid";
    }
    else
    {
    // Define $username and $password
    $username=$_POST['username'];
    $password=$_POST['password'];
    // Establishing Connection with Server by passing server_name, user_id and password as a parameter
    $connection = mysql_connect("localhost", "root", "ilcolosso84");
    // To protect MySQL injection for Security purpose
    $username = stripslashes($username);
    $password = stripslashes($password);
    $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string($password);
    // Selecting Database
    $db = mysql_select_db("climat", $connection);
    // SQL query to fetch information of registerd users and finds user match.
    $query = mysql_query("select * from users where password='$password' AND username='$username'", $connection);
    $rows = mysql_num_rows($query);
    if ($rows == 1) {
    $_SESSION['login_user']=$username; // Initializing Session
    header("location: profile.php"); // Redirecting To Other Page
    } else {
    $error = "Username or Password is invalid";
    }
    mysql_close($connection); // Closing Connection
    }
    }
    ?>
    e il recupero :
    <?php
    session_start();
    ?>
    ...
    
    <li>Ciao <?php echo htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8'); ?>, benvenuto nel nostro portale!</li>
    	 <li><a href="logout.php">Log Out</a></li>
    
  • Re: Lettura username in pagina una volta effettuato il login

    Ottimo.
    Alla fine hai capito qual era l'errore? Aveva a che fare col submit o si trattava d'altro?
Devi accedere o registrarti per scrivere nel forum
9 risposte