Ho fatto un sistema nel quale, un utente si connette (con sua user e password) e visualizza i suoi dati (siccome è una prova ho messo solo due campi: nome ed età).
Nella pagina dell'utente c'è la possibilità di variare i proprii dati e confermare le modifiche fatte.
Dopo la conferma delle modifiche, vi è una pagina che informa che le modifiche sono state eseguite.
Su quest'ultima pagina ho messo un link (che non mi funziona) che dovrebbe riportare l'utente alla pagina contenente i suoi dati.
Logicamente il codice interagisce con ildatabase.
Posto il codice in ordine di funzionamento:
La pagina di login (il form):
Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>modulo di login</title>
<link href="layout.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="box_login">
<form name="modulo" action="ricerca_dati.php" method="post">
Pannello di ricerca:
<label><p class="corpo_centr">Username:
<input type="user" name="codice_user" size="30" />
</p>
</label>
<label><p class="corpo_centr">Password:
<input type="password" name="codice_password" size="30" />
</p>
</label>
<input name="submit" type="submit" value="invia"/>
</form>
<p class="link">[url="http://klaudio.ilbello.com/"]Created by XFORZA[/url]</p>
</div>
</body>
</html>
La pagina "ricerca_dati.php" dove l'utente visualizza i dati ed eventualmente può variarli
Codice PHP:
<?php
//includo il file che mi serve
include ("config.inc.php");
// Recupero i dati dal form inserimento_login.php
$codice_user = $_POST['codice_user'];
$codice_password = $_POST['codice_password'];
//mi connetto al database,user e password
$db = mysql_connect($db_host, $db_user, $db_password);
//in caso di errore
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
//mi connetto alla tabella
mysql_select_db($db_name, $db)
//in caso di errore
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
//preparo la query
$query = "SELECT user, password, nome, eta FROM utenze where user='$codice_user' and password='$codice_password'";
//invio la query al database
$result = mysql_query($query, $db);
//recupero i dati che arrivano dal database
$row = mysql_fetch_array($result);
$user=$row['user'];
$password=$row['password'];
$nome=$row['nome'];
$eta=$row['eta'];
echo "La tua user e' : ".$user.'
';
echo "La tua password e' : ".$password.'
'.'
';
echo "Nome : ".$nome.'
';
echo "Eta : ".$eta.'
'.'
';
?>
<div id="box_login">
<form name="modulo" action="save_nuovidati.php" method="post">
Modifica i tuoi dati:
<label><p class="corpo_centr">Nome:
<input type="user" name="nome" value="<? echo $nome ?>" size="20" />
</p>
</label>
<label>
<p class="corpo_centr">Eta':
<input type="name" name="eta" value="<? echo $eta ?>" size="5" />
</p>
</label>
<label>
<p class="corpo_centr">user:
<input type="hidden" name="user" value="<? echo $user ?>" size="20" />
</p>
</label>
<label>
<p class="corpo_centr">password:
<input type="hidden" name="password" value="<? echo $password?>" size="20" />
</p>
</label>
<input name="submit" type="submit" value="invia"/>
</form>
</div>
e questa è la pagina "save_nuovidati.php" che salva i dati (e dove c'è il link che non mi funziona)
Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GuestBook</title>
</head>
<body>
<?php
include("config.inc.php");
//recupero i dati da form modifica_dati.php
$nome=$_POST['nome'];
$eta=$_POST['eta'];
$user=$_POST['user'];
$password=$_POST['password'];
//verifico che tutti i campi del form siano pieni
if (empty($nome) || empty($eta)):
echo 'Uno o più campi obbligatori sono vuoti!
';
echo '[url="modifica_dati.php"]Torna indietro[/url]';
{
exit;
}
else :
$nome = addslashes(stripslashes($nome));
$eta = addslashes(stripslashes($eta));
$nome = str_replace("<", "<", $nome);
$nome = str_replace(">", ">", $nome);
$eta = str_replace("<", "<", $eta);
$eta = str_replace(">", ">", $eta);
$data_g= date("d");
$data_m= date("m");
$data_a= date("y");
$data = mktime("0", "0", "0", $data_m, $data_g, $data_a);
//mi connetto al database,user e password
$db = mysql_connect($db_host, $db_user, $db_password);
//in caso di errore
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
//mi connetto alla tabella
mysql_select_db($db_name, $db)
//in caso di errore
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
//inseriamo i dati
$query = "UPDATE utenze SET user = '$user', password = '$password', nome = '$nome', eta = '$eta' WHERE user = '$user' LIMIT 1";
//verifico l'inserimento
if (mysql_query($query, $db))
{
echo "dati salvati correttamente".'
';
echo '[url="ricerca_dati.php"]Clicca qui per tornare alla tua pagina[/url]';
}
else
{
echo "Errore durante l'inserimento";
}
mysql_close($db);
endif; // chiude la verifica della presenza dei dati
?>
</body>
</html>
Questa e la riga che non funziona: echo 'Clicca qui per tornare alla tua pagina';
So perchè non va, ma non riesco a risolvere il problema, mi spiego:
per far funzionare lo script, mi porto in tutte le pagine la user e la password inseriti dall'utente.
Faccio questo per poter puntare con esattezza, ai record dell'utente presenti nel database.
Quindi il link nell'ultimo file non funziona in quanto, torna correttamente alla pagina dell'utente, ma non riesce a visualizzare i dati dell'utente (in quanto non ha la user e la password per puntare alla riga nel database relativa all'utente).
Premetto che ho fatto in questo modo in quanto da autodidatta mi è sembrato il modo corretto (anche se ora comincio a dubitarne).
Ora chiedevo:
1- è corretto programmare in questo modo? e se non corretto, in che modo potrei fare per portarmi "in giro" le credenziali di accesso dell'utente?
2-se come ho fatto va bene, come risolvo il problema che ho, relativo al ritorno della pagina?
Ogni critica, costruttiva, è ben accetta.
Grazie