Buongiorno a tutti,
sono il creatore di: http://mythacker.altervista.org/
avrei una domanda da porvi.
Allora per registrarsi al mio sito, le password e gli username veranno memorizzati in un file .txt, e fino a qui tutto funziona. Però quando registro un nome già registrato o una mail già registrato, crea un secondo account. io voglio però che quando una persona si registra, non può scegliere un nome già esistente o una mail già iscirtta.
Riassumendo questi sono i mie file:
login.php
codice:
<?php @session_start(); // Funzione necessaria per il funzionamento delle sessioni if(isset($_SESSION['login'])) { session_regenerate_id(); header('Location: index.html'); // Se l' utente è loggato, non può fare il login ovviamente } if(isset($_POST['login'])) { // Se è stato premuto il submit, eseguiamo i codici php... $username = (htmlspecialchars($_POST['username'])) ? $_POST['username'] : null; // Preleviamo l' username e se è vuoto avrà come valore NULL $password = (htmlspecialchars($_POST['password'])) ? $_POST['password'] : null; // Preleviamo la password e se è vuota avrà come valore NULL if(is_null($username) || is_null($password)) { echo 'Riempi tutti i campi.'; // Se almeno uno dei campi è vuoto, mandiamo un messaggio di errore } else { $fp = fopen('logphpformreg/db.txt','a+'); // Apriamo il db $contenuto = fread($fp, filesize('logphpformreg/db.txt')); // Ne leggiamo il contenuto fclose($fp); // Chiudiamo il db $utenti = explode("||", $contenuto); // Otteniamo tutti gli utenti in esso $login = false; // Login è falso e se lo rimarrà i dati saranno errati foreach($utenti as $utente) { // Per ogni elemento dell' array, quindi per ogni utente.. $dati = explode('|', $utente); // Otteniamo i suoi dati if($dati[0] == $username && $dati[1] == md5($password)) { // Se $dati[0] ovvero l' username corrisponde a quello scritto e $dati[1] ovvero la password corrisponde a quella scritta... $login = true; // La variabile login diventa vera, quindi i dati sono corretti break; // Usciamo dal foreach } } if($login === false) { // Se login è rimasto falso vuol dire che non sono stati trovati dati che coincidano echo 'Dati errati.
<< Indietro'; } else { // Se invece è vera la variabile, i dati coincidono.. $_SESSION['login'] = $username; // Registriamo la sessione del login session_regenerate_id(); echo 'Login effettuato correttamente. Attendi..<meta http-equiv="refresh" content="2; URL=index.html" />'; } } } else { // Se invece non è premuto il submit, mostriamo il form ?> <fieldset><legend>LOGIN</legend> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> Username:
<input type="text" name="username" maxlength="16" required />
Password:
<input type="password" name="password" maxlength="10" required />
<input type="submit" name="login" value="Login" /></form> <?php } ?></fieldset> <style type="text/css"> fieldset legend { font-weight: bold; color: #ff0000; font-size: 18px; } fieldset { background: black; border: 1px solid #000; width: 200px; padding: 10px; } </style>
registrati.php
codice:
<?php @session_start(); // Funzione necessaria per il funzionamento delle sessioni if(isset($_SESSION['login'])) { session_regenerate_id(); header('Location: index.html'); // Se l' utente è loggato, non può registrarsi ovviamente } if(isset($_POST['registrati'])) { // Se è stato premuto il submit, eseguiamo il php.... $username = (htmlspecialchars($_POST['username'])) ? $_POST['username'] : null; // Preleviamo l' username e se è vuoto avrà come valore NULL $password = (htmlspecialchars($_POST['password'])) ? $_POST['password'] : null; // Preleviamo la password e se è vuota avrà come valore NULL $password2 = (htmlspecialchars($_POST['password2'])) ? $_POST['password2'] : null; // Preleviamo la conferma password e se è vuota avrà come valore NULL $email = (htmlspecialchars($_POST['email'])) ? $_POST['email'] : null; // Preleviamo l' email e se è vuota avrà come valore NULL if(is_null($username) || is_null($password) || is_null($password2) || is_null($email)) { echo 'Riempi tutti i campi.'; // Se almeno uno dei valori è vuoto, mandiamo un messaggio di errore } elseif($password2 != $password) { echo 'Le password non corrispondono.
<< Indietro'; // Se le due password sono diverse, mandiamo un messaggio di errore } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo 'Inserisci un\' indirizzo email valido.
<< Indietro'; // Se l' indirizzo email non è valido, mandiamo un messaggio di errore } else { $headers = "From: info@Mythacker.altervista.org"; mail($email, 'Registrazione Mythacker.Altervista.org', "Benvenuto $username,\r\nSiamo felici di averti con noi.\r\n\r\nI dati per accedere sono:\r\nUsername: $username\r\nPassword:$password\r\n\r\nBuon divertimento!\r\n\r\nClicca qui se vuoi iscriverti alla Newsletter:\r\n\r\nhttp://mythacker.altervista.org/newsletter.html", $headers); // Inviamo un' email con i dati $password = md5($password); // Cryptiamo la password $fp = fopen('logphpformreg/db.txt','a+'); // Apriamo il database fwrite($fp, "$username|$password|$email||\r\n\r\n"); // Scriviamo nel database fclose($fp); // Chiudiamo il database $_SESSION['login'] = $username; // Registriamo la sessione del login session_regenerate_id(); echo 'Registrazione effettuata correttamente. Ti abbiamo inviato un\' email con i dati. Attendi..<meta http-equiv="refresh" content="4; URL=index.html" />'; // Mandiamo un messaggio di conferma e rimandiamo all' index } } else { // Altrimenti mostriamo il form della registrazione ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> Username:
<input type="text" name="username" maxlength="16" required />
Password:
<input type="password" name="password" maxlength="10" required />
Conferma password:
<input type="password" name="password2" maxlength="10" required />
Email:
<input type="email" name="email" required />
<input type="submit" name="registrati" value="Registrati!" /></form> <?php } ?>
Logout.php
codice:
<?php @session_start(); // Funzione necessaria per il funzionamento delle sessioni if(!isset($_SESSION['login'])) { // Se non è loggato, non può fare il logout e lo rimandiamo alla home header('Location: index.html'); } session_destroy(); // Distruggiamo le sessioni header('Location: index.html'); // Lo rimandiamo all' index ?>
Index.php (controlla il tutto!)
codice:
<style type="text/css"> fieldset legend { font-weight: bold; color: #ff0000; font-size: 18px; } fieldset { background: black; border: 1px solid #000; width: 200px; padding: 10px; } </style> <?php @session_start(); if(isset($_SESSION['login'])) { session_regenerate_id(); // Se il login è stato effettuato.. $username = $_SESSION['login']; // Preleviamo l' username dalla sessione session_regenerate_id(); ?> Bentornato, <?php echo $_SESSION['login']; ?>
Logout <?php } else { // Se non è loggato.. ?> <?php ?> </fieldset> LOGIN / REGISTRATI <?php } ?>