Buonasera a tutti, scusatemi anticipatamente se avete affrontato già il tema ma nelle varie discussioni non ho trovato quato occorre a me per risolvere il mio problema.
sto tentando di creare un modulo di registrazione tramite easyphp, ho creato il db e 2 cartelle, utenti ed utenti_temp.
In notepad ++ ho creato il file register.php
se lo apro http://localhost/sito/register.php mi da la pagina in cui posso inserire i dati di login e pwd
anche se faccio prove con pwd diverse o mancante mi da l'errore di inserire le password corrette oppure di inserire tutti i campi.
il problema si complica se tutti i dati sono corretti e devo ricevere il link di attivazione.
ho verificato mille volte lo script ed è corretto, ve lo giro.
<?php
include 'header.php';
?>
<div id="wrapper">
<?php
if(!isset($_GET['passkey'])){
if(!isset($_POST['invia'])){ ?>
<form method="post" action="#" id="formregistrazione">
<label for="username">Username</label>
<input type="text" name="username" id="username" /><br>
<label for="password1">Password</label>
<input type="password" name="password1" id="password1" /><br>
<label for="password2">Ripeti Password</label>
<input type="password" name="password2" id="password2" /><br>
<label for="email">Email</label>
<input type="text" name="email" id="email" /><br>
<input type="submit" name="invia" id="registrati" value="Registrati" />
</form>
<?php } else {
// creazione di un codice di conferma
$codice_conferma = md5(uniqid(rand()));
// Valori del form
$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);
// controllo campi vuoti e password
if($username == "" || $email == ""){
echo "Devi riempire tutti i campi";
}elseif($password1 == "" || $password2 == ""){
echo "Devi riempire tutti i campi";
}elseif($password2 != $password1){
echo "Le password devono coincidere";
}else{
$recuperauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");
$contausermail = mysql_num_rows($recuperauseremail);
if($contausermail > 0){
echo "Nome utente o email già disponibili";
} else {
// Invia dati alla tb utenti_temp
$inviautentitemp = mysql_query("INSERT INTO utenti_temp(codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");
if($inviautentitemp){
$to=$email;
$subject="Conferma la Registrazione";
$header="Da: Amministratore";
$message="Ecco il tuo codice di attivazione \r\n";
$message1="Clicca sul link per confermare la registrazione \r\n";
$message.="http://127.0.0.1/sito/register.php?passkey=$codiceconferma";
$sentmail=mail($to,$subject,$message,$header);
}
if($sentmail){
echo "Per completare la registrazione controlla la tua posta elettronica e clicca sul link di attivazione.";
}else{
echo "Errore, link di attivazione non inviato.";
}
}
}
}
} else {
}
?>
</div>
< /body>
< /html>
l'errore che esce è il seguente:
Notice: Undefined variable: codiceconferma in C:\Program Files\EasyPHP-12.1\www\sito\register.php on line 61
Notice: Undefined variable: sentmail in C:\Program Files\EasyPHP-12.1\www\sito\register.php on line 76
Errore, link di attivazione non inviato.
vi giro le voci corrispondenti alla riga 61 e 76
riga 61:
$inviautentitemp = mysql_query("INSERT INTO utenti_temp(codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");
riga 76
if($sentmail){
vi giro anche tutto il contenuto racchiuso tra le due righe, magari vi serve:
$inviautentitemp = mysql_query("INSERT INTO utenti_temp(codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");
if($inviautentitemp){
$to=$email;
$subject="Conferma la Registrazione";
$header="Da: Amministratore";
$message="Ecco il tuo codice di attivazione \r\n";
$message1="Clicca sul link per confermare la registrazione \r\n";
$message.="http://127.0.0.1/sito/register.php?passkey=$codiceconferma";
$sentmail=mail($to,$subject,$message,$header);
}
if($sentmail){
ho letto che potrebbe essere il codice php.ini ma sinceramente non ho assilutamente idea di cosa dovrei fare.
vi garantisco però che ho seguito il tutorial alla lettera e controllato mille volte, credo ci sia da abilitare qualcosa.
grazie a tutti.
mario