Funzione ricorda in un form di login

Stato
Chiusa ad ulteriori risposte.

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
So che è un argomento abbastanza discusso ma sul web non ho trovato niente.
Allora... io ho una pagina di Login (index.php) e dovrei mettere come al solito una checkbox che permette di ricordare (con un cookie, no?) i dati inseriti (quindi username e password) per 2 settimane, finchè non si va alla pagina logout.php e quindi la sessione viene terminata e i cookie cancellati.

Ecco il form login + la parte in php (vi metto i commenti per capire meglio com'è strutturato):
PHP:
<!-- INIZIO CODICE RICONOSCIMENTO (LOGIN) -->
<?php 
session_start(); 
require('templates/reg/connessionedb.php'); //collegamento al database

if(!isset($_SESSION['log']))  
{ 
 $_SESSION['log'] = 0; 
} 
if(!isset($_SESSION['username']))  
{ 
 $_SESSION['username'] = "anonimo"; 
} 

//controllo se l'utente è loggato
if ($_SESSION['log'] != 1) 
{ 
 // se non lo è procediamo così: 
 if(isset($_POST['pass']) && isset($_POST['user'])) 
 { 
  $qry_pass = mysql_real_escape_string(md5($_POST['pass'])); 
  $qry_user = mysql_real_escape_string($_POST['user']); 
//verifico user e pass
  $query = "SELECT * " . 
            "FROM user " . 
            "WHERE user_username = '$qry_user' " . 
            "AND user_password = '$qry_pass' " . 
            "AND user_reg = 1 "; 
  $results = mysql_query($query) or die (mysql_error()); 

  if(mysql_num_rows($results) != 0) 
  {  
   $row = mysql_fetch_array($results); 
   $_SESSION['log'] = 1; // utente loggato 
   $_SESSION['username'] = $row['user_username']; 
  } 
 } 
} 
echo "Ciao " . $_SESSION['username'] . "!"; //ecco stampato il nome utente. Se invece non è loggato, verrà stampato "Ciao anonimo!"
?> 
<!-- FINE CODICE RICONOSCIMENTO (LOGIN) -->
<!-- INIZIO CONDIZIONE "SE NON SI È LOGGATI" --></td>
	<?php 
if ($_SESSION['log'] != 1) 
{ 
?> 
<td>
<a href="Registrazione.php">Registrati</a> o effettua il login:&nbsp;
</td>
<td width="500">
<form name="login" action="mix-color.php" method="post" onSubmit="return ver();"> 
Username
<input name="user" type="text" size="15" maxlength="11">
Password
<input name="pass" type="password" maxlength="8">
<input type="submit" name="submit" class="button_top" value="Login"> 
</form> 
<!-- FINE CONDIZIONE "SE NON SI È LOGGATI" -->
<!-- INIZIO CONDIZIONE ELSE -->
<?php 
}else { 
?> 
<td width="700"><form name="logout" action="templates/reg/logout.php" method="post" onSubmit="return ver();"> 
<input type="submit" name="submit" class="button" value="Logout"> 
</form> //form di logout
<?php 
} 
?>
<!-- FINE CONDIZIONE ELSE -->

Ringrazio vivamente chi mi aiuterà nel risolvere questo problema!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Inserisci un campo di input in cui richiedi se le informazioni del login devono essere ricordate, se il campo viene selezionato scrivi le informazioni di sessione su un cookie.
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
WOW! Ci avessi capito una virgola!

$value = '???'; //qua dovrei mettere $_POST al form?
setcookie("TestCookie", $value, time()+3600); //e qui su TestCookie che dovrei mettere?

Ciao!
 

micio86

Utente Attivo
Hai il tuo checkbox ok?
PHP:
<?php
if(!isset($_COOKIE['ricorda_login'])) {?>
    <input name="ricorda" value="1" type="checkbox" /><?php
}?>
Visibile se non cè il cookie.
Quando fai il submit memorizzi questo:

setcookie("ricorda_login", $_POST['ricorda'], time()+3600);
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Grazie.
Adesso: come faccio a cancellare un cookie quando l'utente va alla pagina del logout?
Poi non riesco a capire dove devo mettere il setcookie :-(
Grazie!
 
Ultima modifica:

micio86

Utente Attivo
Scusa l'action del form di login dove punta??
Lì devi memorizzare il cookie!
if(login avvenuto correttamente) {
qui fai il setcookie
}

Stessa cosa quando fai il logout ma stavolta gli fai un
unset($_COOKIE['ricorda_login'])

Forse cè un metodo migliore x eliminare un cookie.... ma non lo so :p
 

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Il login avviene tutto in una pagina, e il codice della pagina l'ho messo nel primo post.
Per l'"unset" del cookie non importa quanto sia efficacie, basta che funzioni correttamente.
Ciao!
 

micio86

Utente Attivo
Adesso avviene tutto in una pagina

PHP:
<?php
session_start();
require('templates/reg/connessionedb.php'); //collegamento al database 

//$_SESSION['log'] e $_COOKIE['ricorda_log'] conterranno l'id dell'utente loggato
//In $row['id'] id potrebbe essere diverso a seconda di come hai chiamato la chiave primaria nella tabella user
if(!isset($_SESSION['log'])) {
	if(isset($_POST['login'])) {
		if(!isset($_POST['user'])) {
			$MSG="Inserire l'username";
		}
		elseif(!isset($_POST['pass']))
			$MSG="Inserire la password";
		if(!$MSG) {
			$qry_pass = mysql_real_escape_string(md5($_POST['pass']));
			$qry_user = mysql_real_escape_string($_POST['user']);
			$query = "SELECT * FROM user WHERE user_username = '$qry_user' ";
			$query.="AND user_password = '$qry_pass' AND user_reg = 1 ";
			$results = mysql_query($query) or die (mysql_error());
			
			if(mysql_num_rows($results)) {
				$row = mysql_fetch_array($results);
				$_SESSION['log'] = $row['id']; // utente loggato
				if(isset($_POST['ricorda_log'])) {
					setcookie("log", $row['id'], time()+3600*14);//14 giorni
				}
				$MSG="Login effettuato correttamente.";
			}
			else {
				$MSG="Dati per il login non corretti.";
			}
		}
	}
	elseif(isset($_POST['logout'])) {
		setcookie("log", $_SESSION['log'], -1);//Elimino il cookie
		session_destroy();
		$MSG="Sei uscito dalla sessione";
	}
}

echo "Ciao ";
if($_SESSION['log']) {
         $q="SELECT user_username FROM user WHERE id='".$_SESSION['log']."' LIMIT 1";
         $q=mysql_query($q);
         echo mysql_result($q,0,'user_username');
}
else echo "anonimo";
echo "!";

if($MSG) {
	echo "<div>$MSG</div>";
}?>
<form id="login" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<table>
<tr><?php
if(isset($_COOKIE['ricorda_log'])) {
	$_SESSION['log']=$_COOKIE['ricorda_log'];
}
if(!isset($_SESSION['log'])) {?>
		<td colspan="2" align="center">
			<a href="Registrazione.php">Registrati</a> o effettua il login:
		</td>
	</tr>
	<tr>
		<td align="right" width="500">Username:</td>
		<td><input name="user" type="text" size="15" maxlength="11" value="<?php echo $_POST['user'];?>" /></td>
	</tr>
	<tr>
		<td align="right">Password:</td>
		<td><input name="pass" type="password" maxlength="8" /></td>
	</tr>
	<tr>
		<td align="right"><input name="ricorda_log" type="checkbox" value="1"<?php
		if($_POST['ricorda_log']==1)
			echo ' checked="checked"';?> /></td>
		<td>Ricorda login</td>
	</tr>
	<tr>
		<td coslpan="2">
			<input type="submit" name="login" class="button_top" value="Login" />
		</td><?php
}
else {?>
	<td width="700">
		<input type="submit" name="logout" class="button" value="Logout" />
	</td>
	<?php
}?>
</tr>
</table>
</form>

Poi dite ke non vi voglio bene! :elvis:
 
Ultima modifica:

andrex1191

Utente Attivo
5 Apr 2011
78
0
0
EDIT: scusate ho risolto da solo dopo 1 minuto dall'aver postato.
Chiedo scusa
 
Ultima modifica:

Lucart98

Nuovo Utente
15 Apr 2011
22
0
0
Dandogli una lettura veloce ho notato quella @ di troppo...
PHP:
}
elseif (@$_SESSION['utente'] == "ok" || $_COOKIE['tipo'] == 'utente') //
{

EDIT:
Come non detto...
 

andrex1191

Utente Attivo
5 Apr 2011
78
0
0
La chiocciola serve per rimuovere l'errore notice;
Il problema riscontrato è che come al solito avevo fatto casino tra i nomi delle sessioni e dei cookie...e non so perchè ogni volta che scrivo il thread per chiedere aiuto, 2 minuti dopo risolvo sempre da solo...sempre, boh !!
Grazie comunque :)
 
Stato
Chiusa ad ulteriori risposte.
Discussioni simili
Autore Titolo Forum Risposte Data
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
R Variabile non risconosciuta dentro una funzione PHP 1
P Implementazione funzione FileReader Javascript 0
P Funzione copia multipla. Javascript 2
P Funzione jQuery Ajax invio file a php jQuery 1
A Funzione read URL PHP 6
F Funzione Glob - ricerca file contenente una parola PHP 1
A Mail con funzione mail() riconosciute come spam PHP 9
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
A funzione iconv () non mi funziona PHP 4
D Come usare funzione php PHP 6
Y verificare condizione dopo esecuzione della funzione Programmazione 0
IClaude Funzione Javascript Javascript 8
A Funzione share come modificarla Social Media Marketing 0
L funzione onclik con seno e coseno non va Javascript 3
L funzione onclick non va Javascript 26
G modifica corretta funzione da eregi() a preg_match() PHP 3
Shyson Modificare funzione php PHP 15
L pdo (stampare un valore con ritorno a funzione) PHP 0
elpirata Funzione conversione da minuti in ore Javascript 0
@ [MS Access] Funzione Iif..is null... Database 0
F Funzione deprecata in PHP7 PHP 1
G [MS Access] Funzione ARROTONDA non definita nell'espressione MS Access 1
max1974 [Javascript] Funzione Errata procedura Javascript 2
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
Domenico_Falco1 Associare una stessa funzione get a due eventi a.click con classi differenti Ajax 6
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
L Problema funzione mail() PHP PHP 3
elpirata [Javascript] Lo script alle volte funzione altre volte no Javascript 0
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
R [Photoshop] funzione colore automatico Photoshop 0
maxnegri [PHP]Funzione di calcolo prezzo di una camera in un range di date PHP 62
L [PHP] problema count messo in una funzione. PHP 1
Monital funzione php si ripete due volte PHP 6
GiErre [PHP] [HTML] Disabilitare un link in funzione della piattaforma PHP 7
Monital Funzione php e campo database come variabile PHP 6
M Recuperare ID e usarlo in funzione jQuery 2
M PHP - Funzione non e scrive il risultato PHP 3
R [Javascript] Rendere una funzione sempre visibile Javascript 2
M funzione mysql che ritorna i microsecondi a partire dal 1-1-1970 MySQL 3
batmanLF [MySQL] Problema funzione SUM MySQL 1
F [PHP] La funzione setcookie PHP 0
F [Photoshop] sovrapporre due immagini usando funzione batch Photoshop 0
otto9due Capire la funzione del parametro event passato alla funzione.. jQuery 1
A [Javascript] tabella dinamica e onchange su funzione Javascript 1
M Problema con connessione MySqli e funzione PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
A [PHP] Problema invio mail con funzione mail() PHP 3
C Creazione di una funzione per il filtraggio dei campi di un db Presentati al Forum 0
C richiamare una funzione in un altro script php PHP 1

Discussioni simili