funzione salva password

Ho un form di login con username e password. Ho fatto in modo che se uno sbaglia a digitare i dati compare un errore che mana ad un form Ricorda Password.

Adesso vorrei attivare sotto il form di login un tastino "salva password" in modo che ogni volta che un utente già registrato accede al sito trova già inseriti il suo username e la sua password.

Come posso farlo???

 ???

Grazie

inviato 10 anni fa
stellina
X 0 X

Penso tu debba utilizzare i cookie:

http://it.php.net/manual/it/features.cookies.php

( guarda anche le funzioni correlate)

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

io utilizzo già le sessioni, quando un utente si logga può consultare tutte le sezioni dell'area riservata.

Non capisco come  fare a interagire i cookie con le sessioni.

 :-\

risposto 10 anni fa
stellina
X 0 X

io utilizzo già le sessioni, quando un utente si logga può consultare tutte le sezioni dell'area riservata.

Non capisco come  fare a interagire i cookie con le sessioni.

 :-\

Intendevo dire che se l'utente seleziona 'salva password', setti i cookie con login e password, ex:

setcookie("login",$login,$durata);
setcookie("password",$pass,$durata);

Nella form dove si inseriscono login e password, controlli che i cookie siano settati, in caso affermativo,

setti la tua sessione con il valore del cookie, ex:

$_SESSION['login'] = $_COOKIE['login'];
$_SESSION['password'] = $_COOKIE['password'];

e rimandi direttamente alla pagina successiva a quella del login...

se i cookie non sono settati visualizzi il box per l'inserimento di login e password...

In totale dovrebbe essere una cosa del genere:

if(!isset($_COOKIE['login']) && !isset($_COOKIE['password']))
{
 echo "<table>....box login/password...</table>";
}
else
{
 $_SESSION['login'] = $_COOKIE['login'];
 $_SESSION['password'] = $_COOKIE['password'];
 //Rimandi alla pagina successiva al login
 header("location: pagina_successiva.php");
 exit();
}

questo è quello che avrei fatto io...logicamente la cosa non funziona se l'utente ha i cookie disabilitati...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Lore, dal tuo esempio non è chiaro se viene fatto un controllo sulla validità dello username e password contenuti nel cookie. Inoltre non ha molto senso conservare tali dati in sessione, conviene verificare subito la validità ed in caso affermativo memorizzare in sessione che l'utente è loggato ($_SESSION['logged'] = true;)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Lore, dal tuo esempio non è chiaro se viene fatto un controllo sulla validità dello username e password contenuti nel cookie.

Hai perfettamente ragione, ma davo per scontato il controllo su login e password, se no gicoando con i cookie si entrerebbe facilmente, forse ho sbagliato a darlo per assodato...chiedo venia...

Inoltre non ha molto senso conservare tali dati in sessione, conviene verificare subito la validità ed in caso affermativo memorizzare in sessione che l'utente è loggato (
$_SESSION['logged'] = true;
)

Anche su questo hai ragione, ma mi sono rifatto ad una parte in cui 'stellina' diceva di avere i dati in sessione, ho cercato di interpreatare quello che voleva dire ed avendo inteso che metteva in sessione quelli, ho ceracto di rendere lo script + simile possibile a quello pensavo fosse il suo script...

In conclusione, forse ho dato per scontato parecchie cose che probabilemente non lo sono, quindi chiedo nuovamente scusa a stellina per i consigli incompleti...

ciao

risposto 10 anni fa
Lore
Lore
1
X 0 X

Io ho una cosa di questo tipo:

(i dati li recupero da un form di login)

<?php
session_start();


if(!IsSet($_SESSION['logged'])){
   
   
   $username = @$_POST['txt_username'];
   $password = @$_POST['txt_password'];
   
   //Controllo se l' username e la password non sono vuoti
   if((!strlen($username) == 0) and (!strlen($password) == 0)){
      //Effettuo il controllo dei dati 
      $query = "SELECT * FROM tab WHERE username = '".$username."'";

?>

???

risposto 10 anni fa
stellina
X 0 X

Questa dovrebbe essere la pagina che controlla i dati quando ha inserito login e password e ha inviato i dati per la prima volta:

<?php
session_start();

//Primo accesso dell'utente, ossia è la prima volta che insersce login/password
if(!IsSet($_POST['logged'])){
   
   
   $username = @$_POST['txt_username'];
   $password = @$_POST['txt_password'];
   
   //Controllo se l' username e la password non sono vuoti
   if((!strlen($username) == 0) and (!strlen($password) == 0))
         {
      //Effettuo il controllo dei dati 
      $query = "SELECT * FROM tab WHERE username = '$username' AND password='$password'";
                //esegui la query                
                $res = mysql_query($query) or die("Error: ".mysql_error());
                /*Se l'utente c'è ,ossia se la query restituisce almeno una riga, allora proseguo, altrimenti
                redireziono alla pagina di login perchè evidentemente ci sono login e/o password errate*/
                if(mysql_num_rows($res) == 0)
                 {
                     header("location: pagina_login.php");
                     exit;
                 } 
                 else
                /*con $salva_login intendo la scelta che fa l'utente di tener memorizzata la password, quindi nell'if
               dovrà entrare se l'utente sceglie quell'opzione*/
                   if($salva_login == "YES") 
                    {
                         setcookie("login",$username,$durata,"/");
                         setcookie("password",$password,$durata,"/");
                        /*il '/ serve per rendere disponibile il cookie in tutte le cartelle, ossia se setti il cookie in una 
                       sottodirectory, con questo parametro lo rendi disponbile anche nelle altre directory'*/
                    }
         }

?>

La pagina di login dovrebbe essere una cosa simile

$username = $_COOKIE['login'];
$password = $_COOKIE['password'];
$query = "SELECT * FROM tab WHERE username = '$username' AND password='$password'";
//esegui la query                
$res = mysql_query($query) or die("Error: ".mysql_error());
if(mysql_num_rows($res) > 0)
 $_SESSION['logged'] == true;
else
 $_SESSION['logged'] == false;


if($_SESSION['logged'] == false)
{
  //Visualizzi l'inserimento di login/password
}
else
{
 /*Se il valore della sessione logged è true, vuol dire che i cookie dell'utente erano validi e se 'aveva' i cookie,vuol dire che quando aveva inserito login e password aveva scelto l'opzione 'salva_password'
CMQ se la sessione è settata,salti l'inserimento di login/password e vai direttamente alla pagina successiva*/
header("Location: pagina_successiva.php");
exit;
}

Spero di essere stato comprensibile e di esserti stato d'aiuto...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

non vorrei insistere ma visto che non posso confrontarmi con nessun altro continuo a farti domande spero di non farvi arrabiare...

Questo è il mio form di login:

      <?php
      $username = $_COOKIE['login'];
      $password = $_COOKIE['password'];
      $query = "SELECT * FROM agenzia WHERE username = '$username' AND password='$password'";
                        //esegui la query                
      $res = mysql_query($query) or die("Error: ".mysql_error());
      if(mysql_num_rows($res) > 0)
      $_SESSION['logged'] == true;
   else
      $_SESSION['logged'] == false;
                        
                        
      if($_SESSION['logged'] == false)
      {

      echo "<form name=\"theForma\" onSubmit=\"return form_validatora(this)\" method=\"post\" action=\"benvenuto_S.php\">";
      echo "<img src=\"images/spazio.gif\" height=\"5\" alt=\"\"><br>";
      echo "&nbsp;Username: <input type=\"text\" name=\"txt_username\" size=\"15\" value=$username><br><br>";
      echo "&nbsp;Password: &nbsp;<input type=\"password\" name=\"txt_password\" size=\"15\" value=$password>";
      echo "<input type=\"submit\" value=\"login\"><br><br>";
      echo "<input type=\"checkbox\" name=\"salva_login\">SALVA DATI ACCESSO";
      echo "</form>";
                                
      }
      else
      {
      /*Se il valore della sessione logged è true, vuol dire che i cookie dell'utente erano validi e se 'aveva' i cookie,vuol dire che quando aveva inserito login e password aveva scelto l'opzione 'salva_password'CMQ se la sessione è settata,salti l'inserimento di login/password e vai direttamente alla pagina successiva*/
      header("Location: benvenuto_S.php");
      exit;
      }
      ?>

a questo punto chiamo la pagina di benvenuto che nel suo header contiene un riferimento allo script verifica.php

<?php 
//Avvio o continuo la sessione 
session_start();

//Controllo che la sessione sia attiva
if(!IsSet($_SESSION['logged'])){
   //Controllo se l' utente vuole loggarsi
   //Recupero i valori da una Form 
   $username = @$_POST['txt_username'];
   $password = @$_POST['txt_password'];
   
   //Controllo se l' username e la password non sono vuoti
   if((!strlen($username) == 0) and (!strlen($password) == 0)){
      //Effettuo il controllo dei dati 
$query = "SELECT * FROM agenzia WHERE username = '$username' AND password='$password'";


              $res = mysql_query($query) or die("Error: ".mysql_error());
                /*Se l'utente c'è ,ossia se la query restituisce almeno una riga, allora proseguo, altrimenti
                redireziono alla pagina di login perchè evidentemente ci sono login e/o password errate*/
                if(mysql_num_rows($res) == 0)
                 {
                     header("location: index.php");
                     exit;
                 } 
                 else

                   if($salva_login == "YES") 
                    {
                         setcookie("login",$username,3600,"/");
                         setcookie("password",$password,3600,"/");
                        /*il '/ serve per rendere disponibile il cookie in tutte le cartelle, ossia se setti il cookie in una 
                       sottodirectory, con questo parametro lo rendi disponbile anche nelle altre directory'*/
                    }
         }


if(@$_GET['logout'] == 1){ //Effettuo il Logout
   $_SESSION = array(); //Desetto tutte le variabili di sessione
   session_destroy(); //Distruggo le sessioni
} 
?>

e già qui mi blocco perchè da un errore e non riesco a capire quale.

La pagina di benvenuto in soldoni dice Benvenuto se la login era corretta altrimenti dice di riprovare e visualizza il link alla homepage.

risposto 10 anni fa
stellina
modificato 10 anni fa
X 0 X

prova a cambiare

if(!IsSet($_SESSION['logged']))

in

if(!IsSet($_POST['login']))

Poi nel tuo form di login devi aggiungere session_start() all'inizio:

<?php
session_start();
      $username = $_COOKIE['login'];
      $password = $_COOKIE['password'];
ecc ecc.............................

CMQ se ti restituisce anche degli errori posta il tipo di errore che ti da...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

ok, adesso non mi da nessun errore però entra nella pagina di benvenuto come se non si fosse autenticato (quindi trovo il link che rimanda alla homepage).

 ???

risposto 10 anni fa
stellina
X 0 X

A questo punto devi guardare la pagina di benvenuto...

Fai un po' di debug, fai delle echo qua e la per vedere a che punto della pagina arriva...

Se per esempio utilizzi le sessioni anche in quella pagina, assicurati di aver messo session_start() all'inizio anche nella pagina di benvenuto...

Prova a debuggare un po' come ti ho detto, se metti delle echo in diverse parti dello script, una volta che visualizzi, puoi capire +o- a che punto si "pianta"...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda