Buonasera, sto cercando di riprendere in mano la creazione del sito e relativo form. Ho un problema che non riesco a risolvere. Spero che possiate aiutarmi o darmi una dritta. Il problema è che ho creato un form con il controllo su tutti i campi, e dopo il controllo viene inviata una mail al mittente per la conferma dell'account. La questione è che nonostante tutto non riesco ad ottenere errori. Il codice php è corretto, ma non funziona la validazione dei campi, non riesco ad ottenere nessun avviso o warning.
Qui di seguito il codice del form:
Grazie a tutti
Qui di seguito il codice del form:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--#include virtual="/riservato/_private/logon.inc"-->
<title>Biblionet - Registrazione</title>
<link href="css/reset.css" type="text/css" rel="stylesheet" />
<link href="css/Master.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="js/validation.js"></script>
<link href="css/validation.css" rel="stylesheet" type="text/css" />
<link href="css/formregistrazione.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/formregistrazione.js"></script>
</head>
<body>
<div id="contenitore">
<div id="logo"> <img src="Images/logo nuovo biblio2tondo.jpg" width="974" height="200" alt="" /></div>
<?php
include 'header3.php';
?>
<div class="facebook">
<a href='http://www.facebook.com/MrChip63' target=_blank><img src="Images/facebook.png" width="30" height="30" alt="Facebook" /></a></div>
</div>
<div id="contenuto" class="clearfix">
<p style="margin-top: 2px;"> </p>
<img id="top" src="http://forum.mrwebmaster.it/images/top.png" alt="" />
<div id="form_container">
<h1><a>Modulo Registrazione Nuovo Utente</a></h1>
<?php
if(!isset($_GET['passkey'])){
if(!isset($_POST['invia'])){ ?>
<form id="form" class="appnitro" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
<div class="form_description">
<h2>Modulo Registrazione Nuovo Utente</h2>
</div>
<ul >
<li id="li_1" >
<label class="description" for="nome">Nome </label>
<span>
<input id="nome" name="nome" class="element text" maxlength="255" size="8" value=""/>
<label>Nome</label>
<script type="text/javascript">
var campo = new LiveValidation(‘nome’, {validMessage:"OK!"});
campo.add(Validate.Presence, {failureMessage:"Il campo deve essere compilato."});
</script>
</span>
<span>
<input id="cognome" name="cognome" class="element text" maxlength="255" size="14" value=""/>
<label>Cognome</label>
<script type="text/javascript">
var campo = new LiveValidation(‘cognome’,{onlyOnBlur: true, validaMessage:"OK!"});
campo.add(Validate.Presence, {failureMessage:"Il campo deve essere compilato."});
</script>
</span><p class="guidelines" id="guide_1"><small>Metti il tuo Nome e Cognome</small></p>
</li>
<li id="li_2" >
<label class="description" for="età">Età </label>
<div>
<input id="età" name="età" class="element text medium" type="text" maxlength="255" value=""/>
</div><p class="guidelines" id="guide_2"><small>Inserisci la tua età</small></p>
<script type="text/javascript">
var campo = new LiveValidation(‘età’, {onlyOnBlur: true, validaMessage:"OK!"});
campo.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
campo.add(Validate.Numericality, {onlyOnBlur: true, notANumberMessage:"Puoi inserire solo numeri."});
</script>
</li>
<li id="li_3" >
<label class="description" for="interessi">Interessi e passioni </label>
<div>
<textarea id="interessi" name="interessi" class="element textarea medium" cols="" rows=""></textarea>
</div><p class="guidelines" id="guide_3"><small>Aggiungi tutto quello che ti piace</small></p>
</li>
<li id="li_4" >
<label class="description" for="username">Username </label>
<div>
<input id="username" name="username" class="element text medium" type="text" maxlength="255" value=""/>
<script type="text/javascript">
var Username = new LiveValidation(‘Username’, {onlyOnBlur: true, validaMessage:"OK!"});
Username.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
Username.add(Validate.Lenght, {onlyOnBlur: true, maximum: 12, tooLongMessage:"Puoi mettere un massimo di 12 caratteri"});
Username.add(Validate.Lenght, {onlyOnBlur: true, minimum: 4, tooShortMessage:"Puoi mettere un minimo di 4 caratteri"});
</script>
</div><p class="guidelines" id="guide_4"><small>Inserisci un nome di fantasia</small></p>
</li>
<li id="li_5" >
<label class="description" for="password">Password </label>
<div>
<input id="password" name="password" class="element text medium" type="text" maxlength="255" value=""/>
</div>
</li>
<li id="li_6" >
<label class="description" for="password2">Reinserisci la Password </label>
<div>
<input id="password2" name="password2" class="element text medium" type="text" maxlength="255" value=""/>
</div>
</li>
<li id="li_7" >
<label class="description" for="email">Email </label>
<div>
<input id="email" name="email" class="element text medium" type="text" maxlength="255" value=""/>
<script type="text/javascript">
var campo = new LiveValidation(‘Email’, {onlyOnBlur: true, validaMessage:"OK!"});
campo.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
campo.add(Validate.Email, {onlyOnBlur: true, failureMessage:"Devi inserire un indirizzo mail valido!"});
campo.add(Validate.Lenght, {onlyOnBlur: true, minimum: 4, tooShortMessage:"Puoi mettere un minimo di 4 caratteri"});
</script>
</div>
</li>
<li class="buttons">
<input id="rest" class="button_text" type="reset" name="reset" value="Reset" />
<input id="registrazione" class="button_text" type="submit" name="submit" value="Registrazione" />
</li>
</ul>
</form>
<?php } else {
//funzione per verificare che non sia alterato il testo md5 della password
function ver_testo($testo,$min,$max){
$pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
if(preg_match($pattern, $testo)){
//testo ok
return TRUE;
}else{
return FALSE;
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$nome = trim($_POST['nome']);
$username = trim($_POST['username']);
$cognome = trim($_POST['cognome']);
$età = trim($_POST['età']);
$password = trim($_POST['password']);
$password2 = trim($_POST['password2']);
$email = trim($_POST['email']);
//preparo un messaggio a vuoto per gli errori
$ok_ko="";
if(!ver_testo($username,4,10))($ok_ko.="Username non corretto, deve essere compreso tra 4 e 10 caratteri<br />");
if(!ver_testo($password,6,12))($ok_ko.="La password deve essere composta da 6 a 12 caratteri <br />");
if(!ver_testo($password2,6,12)){$ok_ko.="La password di conferma non coincide con la prima <br />";}
if($password != $password2){$ok_ko.="Le password non coincidono <br />";}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){$ok_ko.="L'indirizzo email non è valido <br />";}
if($età==""){$ok_ko.="Devi inserire la tua età <br />";};
if($ok_ko==""){
//se è rimasto vuoto non ci sono errori
// creazione di un codice di conferma in MD5
$codiceconferma = md5(uniqid(rand()));
$username = mysql_real_escape_string((strtolower($username))); //salvo il nickname tutto in minuscolo onde evitare problemi.
$email = mysql_real_escape_string(strtolower($email)); //metto in minuscolo la mail
//Verifico che non ci sia un username uguale a quello inserito nel form
$verificauseremail = mysql_query("SELECT id FROM biblionet nuova ok WHERE username='$username' OR email='$email'");
if(mysql_num_rows($verificauseremail)>0){
//avvisi e torni al form pulito
echo "ATTENZIONE: Username o Email già esistenti, scegline un altro. <br />";
echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}else{
$nome = mysql_real_escape_string($nome);
$cognome = mysql_real_escape_string($cognome);
$età = mysql_real_escape_string($età);
$username = mysql_real_escape_string($username);
$email = mysql_real_escape_string($email);
$password = mysql_real_escape_string($password);
$inviautentitemp = "INSERT INTO biblionet_nuova_temp (codiceconferma, username, età, cognome, nome, password, email) VALUES ('$nome', '$cognome', '$età', '$codiceconferma', '$username', '$password', '$email')";
if(mysql_query($inviautentitemp)){
//se tutto è OK da qua preparo l'invio della mail di conferma per l'avvenuta registrazione.
include_once('class.phpmailer.php');
$mail = new PHPmailer();
$mail->IsSMTP();
$mail->isHTML(true);
$mail->SMTPDebug = true;
$mail->Host = "smtp.fastwebnet.it";
$mail->Port = "25";
$mail->SMTPAuth = true;
$mail->Username = "user@fastwebnet.it";
$mail->Password = "*******";
// Impostazioni invio mail al cliente
$mail->Setfrom ("admin@sito.com","Biblionet"); //Inserire la mail dell'amministratore ed il nome del sito
$mail->AddReplyTo("noreply@sito.com","Amministratore");
$mail->AddAddress ($email); //Mail che riceverà chi si iscrive
$mail->AltBody = "Il tuo client di posta non è settato per la ricezione in HTML";
$mail->Subject = "Conferma di registrazione al sito www.biblionetsanmaurizio.com";
//poi prova a modificare il testo da inviare
$testo="<p>Ecco il tuo codice di attivazione</p><br />";
$testo.="<p>Clicca sul link per confermare la registrazione</p><br />";
$testo.="<a href=\"http://siti/Biblionet%20Nuova%20OK/registrazione.php?passkey=$codiceconferma\">Clicca qui</a>";
$mail->Body =$testo;
if ($mail->Send()){
echo "Tra poco riceverai una mail con il codice di attivazione per confermare l'iscrizione";
}else{
echo "Si è verificato un errore di trasmissione riprova più tardi";
// e dopo 3 secondi torno automaticamente al form ripulito
//echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
//i secondi di attesa possono essere aumentati o diminuiti
}//chiudo if/else invio
} else {
echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />";
echo "<meta http-equiv='Refresh' content='300; URL=index2.php'>";
}//chiudo if/else errore sul db
}//chiudo if/else username-email duplicato
}else{
echo $ok_ko;
echo "<meta http-equiv='Refresh' content='300; URL=index2.php'>";
}
}
//chiudo if/else $ok_ko
//poi tutti i echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
//potresti eliminarli e metterne un unico qui
}
} else {
$passkey = htmlspecialchars($_GET['passkey']);
$sqlrecuperauser = "SELECT * FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'";
$risultatouser = mysql_query($sqlrecuperauser);
if($risultatouser) {
$contauser = mysql_num_rows($risultatouser);
if($contauser == 1){
$rows = mysql_fetch_array($risultatouser);
$username = $rows['username'];
$email = $rows['email'];
$password = $rows ['password'];
$passwordcript = md5($password);
$sqlconfermauser = mysql_query("INSERT INTO biblionet nuova ok (nome, cognome, età, username, password, email) VALUES ('$nome', '$cognome', '$età', '$username', '$passwordcript', '$email')");
if ($sqlconfermauser) {
echo "Il tuo account è stato attivato con successo, da adesso potrai accedere alle pagine del sito inserendo i tuoi dati.";
$sqleliminadati = mysql_query("DELETE FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'");
} else {
echo "C'è stato un errore, se hai sbagliato qualcosa riprova, altrimenti segnalacelo. Lo correggeremo il prima possibile!";
}
}
}
}
?>
</div>
<img id="bottom" src="http://forum.mrwebmaster.it/images/bottom.png" alt="" />
</div>
<div class="vuoto"></div>
<div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>
</body>
</html>
Grazie a tutti
Ultima modifica di un moderatore: