Gestione profilo utente tramite Form

ettorpa66

Nuovo Utente
22 Gen 2021
4
0
1
Salve a tutti,



Mi sono appena registrato su questo fantastico forum.

Gradirei avere un aiutino con qualche idea, circa il mio problema.

Vi spiego:

Ho realizzato una form di registrazione con i classici campi (id,nome,cognome,email,username e password) dove l'utente inserisce tutti i dati, finalizzati poi nel DB.

Poi nella form di login, ho i classici 2 campi: (username e password)


Quindi effettuo il controllo se l'utente esiste nel database e se è tutto ok, punto successivamente alla pagina di “Benvenuto utente" e tramite la session mi stampo la username.

Io però vorrei prelevare il campo nome e cognome dalla form di registrazione utente, per poi stampare a video il Benvenuto con nome e cognome, anzichè con la username.

Ho provato a passare le variabili "nome" e "cognome" dalla pagina di registrazione ad altre pagine (non collegate al form login) e fin qui tutto bene...ma quando tento di passare le variabili alla pagina di login, la variabile risulta sempre vuota.


Quindi ho provato a passare le variabili sull'URL e nell'altra pagina le recupero con successo, questo perchè c'è l'azione del submit.

Il problema è che io vorrei mostrare gli altri campi del DB (nome,cognome,email,etc) e quindi credo che l’unico modo sia quello di usare una query select specifica che estragga i dati sia dai campi della form_Login (username,password) che in quelli della form_Registration (nome,cognome,email,etc) in base all’utente loggato.


Potreste darmi una dritta per come impostare la query?


Vi posto i codici delle 2 pagine login.php e registration.php:

LOGIN.PHP

Codice:
<?php
session_start();


    require('db.php');
    if (isset($_POST['username'])){
    
        $username = stripslashes($_REQUEST['username']);
        $username = mysqli_real_escape_string($con,$username); //escapes special characters in a string
        $password = stripslashes($_REQUEST['password']);
        $password = mysqli_real_escape_string($con,$password);
 
        $query = "SELECT * FROM `tabella` WHERE username='$username' and password='".md5($password)."'";
        $result = mysqli_query($con,$query) or die(mysql_error());
        $rows = mysqli_num_rows($result);
        if($rows==1){
        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
?>
<div class="content">
<p>Benvenuto: <?=$_SESSION['username']?></p>
<p>La tua password è: <?=$_SESSION['password']?></p>

<?
            }else{
                echo "<div class='form'><h3>Username/password is incorrect.</h3><br/>Click here to <a href='login.php'>Login</a></div>";
                }
    }else{
?>
<div class="form">
<h1>Login</h1>
<form action="" method="post" name="login">
<input type="text" name="username" placeholder="Username" required />
<input type="password" name="password" placeholder="Password" required />
<input name="submit" type="submit" value="Login" />
</form>
<p>Non sei registrato? <a href='registration.php'>Registrati ora</a></p>

<br /><br />

REGISTRATION.PHP

Codice:
<?php
session_start();

    require('db.php');
    if (isset($_REQUEST['username'])){


        $nome = stripslashes($_REQUEST['nome']);
        $nome= mysqli_real_escape_string($con,$nome); //escapes special characters in a string
        $cognome = stripslashes($_REQUEST['cognome']);
        $cognome = mysqli_real_escape_string($con,$cognome);
        $email = stripslashes($_REQUEST['email']);
        $email = mysqli_real_escape_string($con,$email);
        $username = stripslashes($_REQUEST['username']); // removes backslashes
        $username = mysqli_real_escape_string($con,$username); //escapes special characters in a string
        $password = stripslashes($_REQUEST['password']);
        $password = mysqli_real_escape_string($con,$password);

        $trn_date = date("Y-m-d H:i:s");
        $query = "INSERT into `tabella` (nome,cognome,email,username,password,trn_date) VALUES ('$nome','$cognome','$email','$username','".md5($password)."','$trn_date')";
        $result = mysqli_query($con,$query);
        if($result){
 
?>
<br>
<br>
<br>

<?
echo "<div class='form'><h3>Ti sei registrato con successo.</h3><br/>Click here to <a href='login.php'>Login</a></div>";
}
?>

<div class="content">
<?
    }else{

?>


<div class="form">
<h1>Registrazione</h1>

<form name="registration" action="" method="post">
<input type="text" name="nome" placeholder="Nome" required />
<input type="text" name="cognome" placeholder="Cognome" required />
<input type="email" name="email" placeholder="Email" required />
<input type="text" name="username" placeholder="Username" required />
<input type="password" name="password" placeholder="Password" required />
<input type="submit" name="submit" value="Register" />
</form>
<br /><br />
</div>
<?php } ?>


</div>
<?php } ?>


Infine mi stampo a video l'elenco dei record :

USER.PHP

Codice:
<?php
session_start();

$servername = "localhost";
$username = "test";
$password = "test";
$dbname = "prova";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id,nome,cognome,email,username,password,trn_date FROM tabella";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

while($row = $result->fetch_assoc()) {


        echo "<tr><td>".$row["id"]."</td><td>".$row["nome"]."</td><td>".$row["cognome"]."</td><td>".$row["email"]."</td><td>".$row["username"]."</td><td>".$row["password"]."</td><td>".$row["trn_date"]."</td><td><a href='modifica.php?id=".$row['id']."'><img src='../images/modifica.gif' border='0' alt='Modifica'></a></td><?</td><td><a href='delete.php?id=".$row['id']."'><img src='../images/cestino.gif' border='0' alt='Modifica'></a></td><?</td></tr>";
                                                                                                                                                                              
    }
    echo "</table>";

        
} else {
    echo "0 results";
}
$conn->close();
?>


Spero che qualcuno di Voi possa aiutarmi.
Grazie :)
 
la soluzione più veloce credo sia cambiare questa parte da così:
PHP:
$query = "SELECT * FROM `tabella` WHERE username='$username' and password='".md5($password)."'";
        $result = mysqli_query($con,$query) or die(mysql_error());
        $rows = mysqli_num_rows($result);
        if($rows==1){
        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
?>
<div class="content">
<p>Benvenuto: <?=$_SESSION['username']?></p>
<p>La tua password è: <?=$_SESSION['password']?></p>
A cosi:
PHP:
$query = "SELECT * FROM `tabella` WHERE username='$username' and password='".md5($password)."'";
        $result = mysqli_query($con,$query) or die(mysql_error());
        $rows = mysqli_num_rows($result);
        if($rows==1){
        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
while($get_row = mysqli_fetch_assoc($result)){
$nome = $get_row['nome'];
$cognome = $get_row['cognome'];
}
?>
<div class="content">
<p>Benvenuto: <?php echo "$nome $cognome";?></p>
<p>La tua password è: <?=$_SESSION['password']?></p>
(P.S. eviterei di stampare a video la password, spero sia solo una prova :-) )

In alternativa, se vuoi, io quando ho tante pagine di solito faccio così: creo un file (lo chiamo ad esempio get_details.php), in cui metto una funzione che preleva uno specifico dato dalla tabella utenti, e in questo modo evito di mettere query uguali in tante pagine, ti faccio l'esempio:
PHP:
function getUtenti($username, $parametro, $conn){
$query = "SELECT * FROM `tabella` WHERE username='$username'";
$result = mysqli_query($conn,$query) or die(mysql_error());
while($get_row = mysqli_fetch_assoc($result)){
$risultato = $get_row[$parametro];
}
return $risultato;
}
Poi nei vari file la puoi richiamare così, senza fare query:
PHP:
<?php
$nome = getUtenti($_SESSION['username'], "nome", $conn);
?>
 
Buongiorno Tommy,

Innanzitutto ti ringrazio per avermi risposto.

Si certo, mostrare la password era solo un test per verificare appunto se mi stampava la variabile.

Hai ragione, credo sia molto meglio creare un include con la funzione e richiamare soltanto le session.

Faccio delle prove e ti faccio sapere.

Grazie mille e buona giornata.
 
Ciao Tommy,

Non avevo dubbi, il codice è perfetto.

Ho risolto finalmente il mio problema e grazie a te.

Seguirò il tuo consiglio, mettendo l'include nelle pagine e inserendo poi il richiamo delle session.

Grazie per tutto.
 

Discussioni simili