- Home
- Categorie
- Coding e Sistemistica
- Coding
- Sessioni
-
Sessioni
Ciao a tutti! Ho personalizzato il tutorial per login...adesso mi piacerebbe che nel documento che un utente scrive venisse in automatico la firma di chi lo compila (io e miei soci).
Come devo fare? Metto nel documento.php dove voglio vedere a monitor la firma $session[id]; $session[nome]; $session[cognome];
echo $session='nome'; eccetera...
Devo far così?Grazie!
-
[PHP]@session_start();
$_SESSION["cognome_utente"] = $_POST["cognome_utente"];
$_SESSION["nome_utente"] = $_POST["nome_utente"];
$_SESSION["pass"] = $_POST["pass"];if(isset($_SESSION["cognome_utente"]) && isset($_SESSION["pass"]))
echo "Ciao " . $_SESSION["cognome_utente"] . " (Password: " . $_SESSION["pass"] . ")";[/PHP]Così va bene?
Mi dà tutte le variabili da definire...
Grazie!
-
Uhm... Si, in teoria fa quello che vuoi fare, ma mi viene da chiederti:
Non è meglio estrarre i dati da un database e stamparli anzichè usare le sessioni?
-
Con il SELECT intendi?
-
Esattamente.
-
Con il select non mi estrae niente...stò sbagliando qualcosa...
-
Una volta effettuato il login, dovresti inserire nel database gli utenti, con una query insert e dopo estrarli con la select, se posti lo script ti do una mano...
-
Ciao,
Dovresti postare anche il form.
-
Grazie! Allora questo è il tuo login.php
[PHP]<?php
// Includo la connessione al database
require('config.php');// Se il modulo viene inviato...
if(isset($_POST['login']))
{// Dati Inviati dal modulo
$cognome_utente = (isset($_POST['cognome_utente'])) ? trim($_POST['cognome_utente']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$nome_utente = (isset($_POST['nome_utente'])) ? trim($_POST['nome_utente']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$cognome_utente = addslashes($cognome_utente);
$nome_utente = addslashes($nome_utente);
$pass = addslashes($pass);
}// Crypto la password e la confronto con quella nel database
$pass = md5($pass);// Controllo l'utente esiste
$query = mysql_query("SELECT id FROM utenti WHERE cognome_utente = '$cognome_utente' AND nome_utente = '$nome_utente' AND pass = '$pass' LIMIT 1");// Se ha trovato un record
if(mysql_num_rows($query) == 1)
{
// prelevo l'id dal database
$login = mysql_fetch_array($query);// Creo una variabile di sessione
$_SESSION['login'] = $login['id'];// reindirizzo l'utente
header('Location: privata.php');
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head><body>
<form action="" method="post">
<input name="cognome_utente" type="text" id="cognome_utente" value="COGNOME" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="nome_utente" type="text" id="nome_utente" value="NOME" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>[/PHP]La pagina "inserimento_dati.php" dove vorrei comparisse il cognome e nome di chi compila è questa:
[PHP]
$query="INSERT INTO inserimento_dati (
accettato_da,
cognome,
nome)
VALUES('" .
addslashes ( $_POST['accettato_da'] ) . "', '" .
addslashes ( $_POST['cognome'] ) . "', '" .
addslashes ( $_POST['nome'] ) . "', '" . //tagliato codice...troppo lungo...ci sono altre voci...$risultato = mysql_query( $query ) or die ( "query '$query' fallita
" . mysql_error() );while ( $inserimento_dati = mysql_fetch_array( $risultato ) )
{echo "<table>
<head>
<style>
table {
border: solid 2px #000000;
text-align: center;
}
td {
solid 1px;
color: Black;
background: #F1EBAD;
}
</style>
</head><tr> <td><b>ACCETTATO DA: </b> " . stripslashes($inserimento_dati['accettato_da']) . "</td></tr> <td><a href=\"accettazione2.php\">COGNOME " . stripslashes($inserimento_dati['cognome']) . "</a></td></tr> <td><b>NOME:</b> " . stripslashes($inserimento_dati['nome']) . "</td></tr> //tagliato codice...per troppe voci
[/PHP]
Praticamente, ora dove c'è scritto ACCETTATO DA: scrivo manualmente cognome e nome, ma vorrei che lo scrivesse in modo automatico con le sessioni e autenticazioni.
Questo è il form.html
[HTML]<html>
<head>
<title>accettazione cliente</title>
</head><center><b><font size=5>ACCETTAZIONE</font></center></b><br>
<form action="inserimento_dati.php" method="post" name="inserimento_dati">
<input name="id" type="hidden" value="<?php echo $id;?>">
<input type="hidden" name="id"><br><br>
ACCETTATO DA:<input type="text" name="accettato_da"><br><br>
COGNOME: <input type="text" name="cognome"><br><br>
NOME: <input type="text" name="nome"><br><br>
<br><br><input type="submit" value="INVIA I DATI">
</form>
</body>
</body>
</html>[/HTML]Grazie!!!
-
Per mettere come value i dati attuali puoi fare cosi, ma devi rinominare il file form.html in form.php:
[php]
<?php
if(isset($_SESSION['login']))
$default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
<html>
<head>
<title>accettazione cliente</title>
</head><center><b><font size=5>ACCETTAZIONE</font></center></b><br>
<form action="inserimento_dati.php" method="post" name="inserimento_dati">
<input name="id" type="hidden" value="<?php echo $id;?>">
<input type="hidden" name="id"><br><br>
ACCETTATO DA:<input type="text" name="accettato_da"><br><br>
COGNOME: <input type="text" name="cognome" value="<?php echo $default['cognome_utente']; ?>"><br><br>
NOME: <input type="text" name="nome" value="<?php echo $default['nome_utente']; ?>"><br><br>
<br><br><input type="submit" value="INVIA I DATI">
</form>
</body>
</body>
</html>
[/php]
-
Modificato. Faccio il login, entro nella pagina privata.php, clicco per compilare il form, ma non mi compila su accettato il mio nome e cognome...
-
Se devi mettere nome e cognome di seguito devi fare cosi:
[php]
ACCETTATO DA:<input type="text" name="accettato_da" value="<?php echo $default['nome_utente'].' '.$default['cognome_utente']; ?>"><br><br>
[/php]
-
Che scemo è vero, senno il collegamento come lo faccio?
Però ora mi dà variabile da definire
-
Che variabile?
-
Mi scrive dentro la casella "ACCETTATO DA" questo:
Notice: Undefined variable: default in c:\programmi\easyphp1-8\www\inserimento_dati.php on line 23
Notice: Undefined variable: default in c:\programmi\easyphp1-8\www\inserimento_dati.php on line 23
La riga 23 è quella che abbiamo modificato.
-
Ma la pagina l'hai messa cosi:
[php]
<?php
if(isset($_SESSION['login']))
$default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
<html>
<head>
<title>accettazione cliente</title>
</head>
<body>
<center><b><font size=5>ACCETTAZIONE</font></center></b><br>
<form action="inserimento_dati.php" method="post" name="inserimento_dati">
<input name="id" type="hidden" value="<?php echo $id;?>">
<input type="hidden" name="id"><br><br>
ACCETTATO DA:<input type="text" name="accettato_da" value="<?php echo $default['nome_utente'].' '.$default['cognome_utente']; ?>"><br><br>
COGNOME: <input type="text" name="cognome" value="<?php echo $default['cognome_utente']; ?>"><br><br>
NOME: <input type="text" name="nome" value="<?php echo $default['nome_utente']; ?>"><br><br>
<br><br><input type="submit" value="INVIA I DATI">
</form>
</body>
</html>
[/php]
-
Ora me le dà su tutte e tre le caselle i notice...
-
Ma nella pagina hai messo il controllo per vedere se sei loggato?
Perchè se non sei loggato e quindi $_SESSION['login'] non è definita è normale dia notice.
-
No, come faccio a mettere il controllo? Io ho fatto solo il normale login e sono entrato nella pagina privata...:bho:
-
[php]
<?php
if(!isset($_SESSION['login']))
{
header('Location: /login.php');
exit;
}
$default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
<html>
<head>
<title>accettazione cliente</title>
</head>
<body>
<center><b><font size=5>ACCETTAZIONE</font></center></b><br>
<form action="inserimento_dati.php" method="post" name="inserimento_dati">
<input name="id" type="hidden" value="<?php echo $id;?>">
<input type="hidden" name="id"><br><br>
ACCETTATO DA:<input type="text" name="accettato_da" value="<?php echo $default['nome_utente'].' '.$default['cognome_utente']; ?>"><br><br>
COGNOME: <input type="text" name="cognome" value="<?php echo $default['cognome_utente']; ?>"><br><br>
NOME: <input type="text" name="nome" value="<?php echo $default['nome_utente']; ?>"><br><br>
<br><br><input type="submit" value="INVIA I DATI">
</form>
</body>
</html>
[/php]