- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Area privata
-
Cosi senza vedere non saprei dirti.
L'errore è comunque sicuramente che l'url a cui vai, non corrisponde a quello dove dovresti andare.Mi sono accorto di aver fatto un errore, la pagina reset.php modificatela cosi:
[php]
<?php
// Includo la connessione al database
require('config.php');// Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
$code = $_GET['code'];// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) $code = addslashes($code); // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice $query_recupero = mysql_query("SELECT r_utente FROM utenti_recupero WHERE code = 'code' LIMIT 1"); // La richiesta non esiste if(mysql_num_rows($query_recupero) == 0) die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai già modificato la tua password<br />- Hai seguito un link errato');
// La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
else
mysql_query("DELETE FROM utenti_recupero WHERE code = 'code' LIMIT 1");// Inseriscol'id dell'utente recuperato mediante la query in un array $recupero = mysql_fetch_array($query_recupero); // Creo una password di 8 caratteri alfanumerici $randomcode = ''; for($x=1; $x<=8; $x++) $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4 // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database $hashrandomcode = md5($randomcode); // Aggiorno la password nel database mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['id']}' LIMIT 1") or die(mysql_error()); // Inviamo l'email all'utente $message = 'Gentile Utente, Abbiamo provvduto a modificare la sua password.<br />La sua nuova password è: '.$randomcode; // Header dell'email, per mandarla in formato html $headers = "From: NomeSito <[email protected]>\r\n"; $headers .= "Reply-To: [email protected]\r\n"; $headers .= "Return-Path: [email protected]\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; // Invio L'email mail($mail, 'Reset password - Tutorial Area Privata', $message, $headers); die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
?>
[/php]
-
Allora... l'unico link e' nel file recupero.php giusto?
// Inviamo l'email all'utente
$message = 'Per modificare la password del Suo account deve visitare il seguente link: (e qui il link è corretto anche con cartelle giustissimo)
-
Quello che intendo io per correto è:
Supponendo che il link che arriva all'email è: /recupero.php.php?code=1234567890, controllare che quando premi il link ti mandi alla pagina /recupero.php.php?code=1234567890.
Controllare che nella tabella del database il record contenga come code 1234567890.
-
Grazie per la specifica non avevo ben guardato quello..il link dall'email è comunque corretto e il codice confrontato con .txt database/pagina web è identico
-
Se stai provando online, mandami un messaggio con il link.
-
Ciao TheDarkita, nel tuo tutorial di registrazione e login utente non parli della cancellazione dell' utente.
Nel caso che l'utente registrato vuole cancellarsi come utente registrato e per farlo deve inserire ad esempio la mail con cui si è registrato e l'username. Come dovrebbe essere impostata la pagina che possiamo chiamare "self_delete" che va ad eliminare i record nel Db?
grazie.
-
Ho scordato un $ nella pagina reset.php per questo non funzionava.
La pagina reset.php corretta è:
[php]
<?php
// Includo la connessione al database
require('config.php');// Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
$code = $_GET['code'];// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) $code = addslashes($code); // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice $query_recupero = mysql_query("SELECT r_utente FROM utenti_recupero WHERE code = 'code' LIMIT 1"); // La richiesta non esiste if(mysql_num_rows($query_recupero) == 0) die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai già modificato la tua password<br />- Hai seguito un link errato');
// La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
else
mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");// Inseriscol'id dell'utente recuperato mediante la query in un array $recupero = mysql_fetch_array($query_recupero); // Creo una password di 8 caratteri alfanumerici $randomcode = ''; for($x=1; $x<=8; $x++) $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4 // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database $hashrandomcode = md5($randomcode); // Aggiorno la password nel database mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['id']}' LIMIT 1") or die(mysql_error()); // Inviamo l'email all'utente $message = 'Gentile Utente, Abbiamo provvduto a modificare la sua password.<br />La sua nuova password è: '.$randomcode; // Header dell'email, per mandarla in formato html $headers = "From: NomeSito <[email protected]>\r\n"; $headers .= "Reply-To: [email protected]\r\n"; $headers .= "Return-Path: [email protected]\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; // Invio L'email mail($mail, 'Reset password - Tutorial Area Privata', $message, $headers); die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
?>
[/php]
-
Mmm.... Ma sai che mi da ancora lo stesso problema? XD
-
Ho risbagliato ad incollare...
Mi serve una vacanza, sto diventando scemo
[php]
<?php
// Includo la connessione al database
require('config.php');// Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
$code = $_GET['code'];// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) $code = addslashes($code); // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice $query_recupero = mysql_query("SELECT r_utente FROM utenti_recupero WHERE code = '$code' LIMIT 1"); // La richiesta non esiste if(mysql_num_rows($query_recupero) == 0) die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai già modificato la tua password<br />- Hai seguito un link errato');
// La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
else
mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");// Inseriscol'id dell'utente recuperato mediante la query in un array $recupero = mysql_fetch_array($query_recupero); // Creo una password di 8 caratteri alfanumerici $randomcode = ''; for($x=1; $x<=8; $x++) $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4 // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database $hashrandomcode = md5($randomcode); // Aggiorno la password nel database mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['id']}' LIMIT 1") or die(mysql_error()); // Inviamo l'email all'utente $message = 'Gentile Utente, Abbiamo provvduto a modificare la sua password.<br />La sua nuova password è: '.$randomcode; // Header dell'email, per mandarla in formato html $headers = "From: NomeSito <[email protected]>\r\n"; $headers .= "Reply-To: [email protected]\r\n"; $headers .= "Return-Path: [email protected]\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; // Invio L'email mail($mail, 'Reset password - Tutorial Area Privata', $message, $headers); die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
?>
[/php]Vediamo che ho sbagliato stavolta...
-
Ok TheDarkita per la pagina di reset nel caso l'utente avesse perso la sua pass, ma non hai ancora risposto nel caso l'utente si vuole cancellare dalla registrazione, sia nel caso della prima registrazione e anche nel caso avesse perso la sua pass come nell'esempio del reset.php, visto che sono due tabelle ben distinte:
- utenti
e - utenti_recupero
grazie
- utenti
-
Ciao arkom,
Devi creare un metodo di funzionamento simile al reset della password che invece di reimpostare la password, fa una query di delete dell'utente.
-
Penso di avere capito, lo script dovrebbe essere questo per la tabella **utenti **e cosi lo stesso per la tabella utenti_recupero (io ho cambiato il nome della variabile cho ho chiamato "delete"
[PHP]<?php
// Includo la connessione al database
require('config.php');// Prelevo il codice trasmesso come variabile GET, il contenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
$delete = $_GET['delete'];// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) $delete = addslashes($delete); // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice $query_recupero = mysql_query("SELECT r_utente FROM utenti WHERE delete = '$delete' LIMIT 1"); // La richiesta non esiste if(mysql_num_rows($query_recupero) == 0) die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai già effettuato la cancellazione,<br />
- o avevi già reimpostato la password e dovrai<br />
- usare il secondo form per la cancellazione<br />
Hai seguito un link errato');
// La richiesta esiste, elimino la richiesta
else
mysql_query("DELETE FROM utenti WHERE delete = '$delete' LIMIT 1");
?>
[/PHP]
Penso che sia giusto. puoi confermare.
ciao
-
Cosi non stai usando la seconda tabella...
Ma stai solo usando la tabelle utenti, quindi non dovrebbe andare bene.
-
Ciao Thedarkita, sempre io che rompo...
Adesso mi stampa questo errore:
Warning: mail() [function.mail]: SMTP server response: 503 5.5.2 Need Rcpt command. in D : \ Inetpub \ webs \ associazioneconsumatorieuropeieu \ auth \ reset.php on line 45
Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!Sulla linea 45 c'è questo:
[php]
<?php
mail($mail, 'Reset Password - Area privilegi Consumatori Europei', $message, $headers);die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
?>
[php]PS: Ho fatto degli spazi solo perchè non mi acettava i link
-
In $message cosa ci hai messo?
-
-
Ciao Thedarkita ti vorrei fare una domanda riguardo alla creazione di un avatar, io ho letto lo script per l'upload delle immagini
htp://wwwgiorgiotave*it/forum/scripting-e-risorse-utili/101524-script-classe-per-lupload.htmlperò ho notato che questo script mi cairca l'immagine ma io come posso richiamarla mi era venuta un idea, quella che mi permette di rinominare l'immagine con l'id del utente durante l'upload, ma come posso fare?
GRAZIE SPERO CHE MI RISPONDERAI!!!!!!!
-
Ciao Zomer,
Per quanto riguarda l'id dell'utente è contenuto in $_SESSION['login'], per quanto riguarda il resto devi cheidere nel thread dedicato a quel tutorial, perchè qui siamo offtopic.
-
BlueDragon89,
Prova cosi, ricontrollando ho visto che la variabile $mail era vuota, ho fatto un join nella query per recuperarmi l'email dell'utente che ha richiesto il recupero password:
[php]
<?php
// Includo la connessione al database
require('config.php');// Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
$code = $_GET['code'];// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) $code = addslashes($code); // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice $query_recupero = mysql_query("SELECT utenti_recupero.r_utente,utenti.mail FROM utenti_recupero INNER JOIN utenti ON utente.id=r_utente WHERE code = '$code' LIMIT 1"); // La richiesta non esiste if(mysql_num_rows($query_recupero) == 0) die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai già modificato la tua password<br />- Hai seguito un link errato');
// La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
else
mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");// Inseriscol'id dell'utente recuperato mediante la query in un array $recupero = mysql_fetch_array($query_recupero); // Creo una password di 8 caratteri alfanumerici $randomcode = ''; for($x=1; $x<=8; $x++) $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4 // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database $hashrandomcode = md5($randomcode); // Aggiorno la password nel database mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['id']}' LIMIT 1") or die(mysql_error()); // Inviamo l'email all'utente $message = 'Gentile Utente, Abbiamo provvduto a modificare la sua password.<br />La sua nuova password è: '.$randomcode; // Header dell'email, per mandarla in formato html $headers = "From: NomeSito <[email protected]>\r\n"; $headers .= "Reply-To: [email protected]\r\n"; $headers .= "Return-Path: [email protected]\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; // Invio L'email mail($recupero['mail'], 'Reset password - Tutorial Area Privata', $message, $headers); die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
?>
[/php]
-