Ciao a tutti, quando un utente si registra sul mio sito, nella posta elettronica non arriva più il link per attivare l'account, eppure sul database l'utente viene registrato.
Ho provato io stesso a iscrivere un utente di prova, ho dovuto, attivarlo manualmente. Ho persino provato (con l'utente di prova) a segnalare password dimenticata; il sistema ha risposto che una nuova password è stata inviata tramite email... risultato, nessuna email ricevuta.
file v
Codice PHP:
<?php
// includo il file con la lista delle funzioni di utilitˆ
require_once 'inc/utils.php';
// Qui inseriremo gli errori avvenuti durante la validazione
// dei dati inseriti dall'utente nel form di login
$formErrors = array();
// Questi sono i dati inviati dall'utente
$userName = $_POST['user-name'];
$userUrl = $_POST['user-url'];
$userSesso = $_POST['user-sesso'];
$userCity = $_POST['user-city'];
$userEmail = $_POST['user-email'];
$userEmailRepeat = $_POST['user-email-repeat'];
$userPassword = $_POST['user-password'];
$userPasswordRepeat = $_POST['user-password-repeat'];
/* Controllo sul campo Nome utente
*
* Se la lunghezza 0 allora il campo vuoto
* altrimenti controllo che il campo nome abbia una lunghezza di almeno 4 caratteri
*/
if (strlen($userUrl) == 0)
{
$formErrors[] = '<span class="message">Il campo nome utente è obbligatorio</span>';
}
else if (strlen($userUrl) < 4)
{
$formErrors[] = '<span class="message">Il nome utente inserito è troppo corto</span>';
}
/* Controllo sul campo nome e cognome
*
* Se la lunghezza 0 allora il campo vuoto
* altrimenti controllo che il campo nome abbia una lunghezza di almeno 3 caratteri
*/
if (strlen($userName) == 0)
{
$formErrors[] = '<span class="message">Il campo nome e cognome è obbligatorio</span>';
}
else if (strlen($userName) < 3)
{
$formErrors[] = '<span class="message">Il nome e cognome inserito è troppo corto</span>';
}
/* Controllo sulla password inserita
*
* Se la lunghezza 0 allora il campo vuoto
* altrimenti controllo che la password abbia una lunghezza di almeno 6 caratteri
* altrimenti controllo che il campo password ed il campo ripeti password siano uguali
*/
if (strlen($userPassword) == 0)
{
$formErrors[] = '<span class="message">Il campo password è obbligatorio</span>';
}
else if (strlen($userPassword) < 6)
{
$formErrors[] = '<span class="message">La password inserita è troppo corta</span>';
}
else if ($userPassword != $userPasswordRepeat)
{
$formErrors[] = '<span class="message">Il campo password ed il campo ripeti password non sono uguali</span>';
}
/* Controllo sull'indirizzo email
*
* Se la lunghezza 0 allora il campo vuoto
* altrimenti controllo che l'indirizzo email sia valido
* altrimenti controllo che l'indirizzo email sia uguale
* all'indirizzo email ripetuto
*/
if (strlen($userEmail) == 0)
{
$formErrors[] = '<span class="message">Il campo email è obbligatorio.</span>';
}
else if (false == emailIsValid($userEmail))
{
$formErrors[] = '<span class="message">L’indirizzo email inserito non è corretto</span>';
}
else if ($userEmail != $userEmailRepeat)
{
$formErrors[] = '<span class="message">L’indirizzo email e L’indirizzo ripeti email non sono uguali</span>';
}
/* Controllo sul campo città
* Se la lunghezza 0 allora il campo vuoto
* altrimenti controllo che il campo nome abbia una lunghezza di almeno 4 caratteri
*/
if (strlen($userCity) == 0)
{
$formErrors[] = '<span class="message">Il campo città è obbligatorio</span>';
}
else if (strlen($userCity) < 4)
{
$formErrors[] = '<span class="message">La città inserita è troppo corto</span>';
}
/* Controllo sul campo Sesso
*
* Se la lunghezza 0 allora il campo vuoto
*/
if (strlen($userSesso) == 0)
{
$formErrors[] = '<span class="message">Il campo sesso è obbligatorio</span>';
}
// Se il conteggio degli errori 0 allora i dati inviati dall'utente
// sono validi, procedo con la registrazione del nuovo utente
if (count($formErrors) == 0)
{
// includo ora la lista di funzioni che servono per gestire l'utente
require_once 'inc/user.php';
// Per prima cosa mi assicuro che l'indirizzo email del nuovo utente
// non sia giˆ registrato nel database
if (true == userEmailExists($userEmail))
{
$formErrors[] = '<span class="message">L’indirizzo email inserito è già stato registrato</span>';
}
else
{
// La password inserita viene ora criptata tramite la funzione md5()
// criptare la password un buon modo per alzare il livello di sicurezza
// del nostro sistema di login
$userPassword = md5($userPassword);
// Questo il codice alfanumerico di 32 caratteri che verrˆ utilizzato
// nel link di attivazione account
$activationToken = md5(time().'_'.$userEmail);
/* Tento di registrare il nuovo utente sul database
*
* Se non riesco avverto il nuovo utente che non ho potuto registrarlo
* altrimenti gli invio una email contenente un link con cui confermare
* la registrazione
*/
$userData = array(
'email' => $userEmail,
'password' => $userPassword,
'name' => $userName,
'url' => $userUrl,
'sesso' => $userSesso,
'city' => $userCity,
'token' => $activationToken
);
$userId = registerNewUser($userData);
if (false == $userId)
{
$formErrors[] = '<span class="message">Si è verificato un errore durante la registrazione</span>';
}
else
{
// Questo il link di attivazione che serve all'utente per confermare
// la propria registrazione
$activationLink = 'http://'.$_SERVER['HTTP_HOST'];
$activationLink .= str_replace('register.php', 'confirm.php', $_SERVER['REQUEST_URI']);
$activationLink .= '?token='.$activationToken;
// Invio la mail in formato HTML
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: ask.fm <nome@hotmail.it>' . "\r\n";
// Oggetto e testo dell'email da inviare
$subject = 'Attivazione account ask.fm ';
$emailText = "<p>Gentile {$userName}, la tua registrazione è avvenuta correttamente.</p>"
. "<p>Per attivare il tuo account, clicca sul link sottostante</p>"
. "<p><a href=\"{$activationLink}\">Clicca qui per attivare il tuo account</p>";
// Provo ora ad inviare l'email all'indirizzo del nuovo utente
// Redirigo poi il nuovo utente alla pagina di conferma invio email
if (false == mail($userEmail, $subject, $emailText, $headers))
{
$formErrors[] = '<span class="message">Si è verificato un errore durante il tentativo di invio dell’email di conferma</span>';
}
else
{
header('Location: confirm_sendmail.php');
}
}
}
}
// Stampo a video la lista degli errori, se presenti
echo showFormErrors($formErrors);
?>
secondo voi c'è un problema nel codice oppure è hotmail andato a quel paese? ho provato qualsiasi posta elettronica ma nulla :crycry