Pensavo che fosse la soluzione al problema chiamandolo attivo visto che su quello che mi avevi inviato l'avevi chiamato attivo per essere precisi sull'update. Ora apro una discussione a parte.
Le variabili $email e $password dove le prendi nello script? A quanto vedo non sono valorizzate da nessuna parte. Inoltre, perché mostri "Login incorretto" se invece i dati vengono trovati nella tabella utenti? Non dovrebbe essere il contrario?
Ora ho capito cosa intendevi le valorizzazioni delle variabili. Ho combinato na cosa del genere, suggeritami dallo staff (o meglio da cricric)
PHP:
$mail->MsgHTML('Grazie di esserti iscritto. <a href="http://utenti/fabio/MegaLaboratorio/login.php?email=' . $_POST['email'] .'&password=' . $_POST['pass'].'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");
Solo che non mi attiva un bel ciufolo. Questa è la pagina di attivazione.php
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Account attivato</title>
</head>
<body>
<?php
// includiamo il file di configurazione
require_once("connetti.php");
// qui bisognera decriptare
$username = $_GET['username'];
$email = $_GET['email'];
// controlliamo se i parametri sono presenti in tabella
$ctrl_login = mysql_query("SELECT id FROM utenti WHERE email='$email' AND username='$username'") or die(mysql_error());
if (@mysql_num_rows($ctrl_login) == 0) {
// esito login positivo quindi rendiamo l'utente attivo
// $obj = @mysql_fetch_object($ctrl_login) or die(mysql_error());
// $query_attivo = @mysql_query("UPDATE utenti SET attivo='1' WHERE username='$username'" . $obj->id) or die(mysql_error());
$id = $_REQUEST['id'];
$sql = "UPDATE utenti ".
"SET attivo = '$emp_salary'1' ".
"WHERE username = $id" ;
var_dump($sql);
?>
<center>
<h1> Ora il tuo account è stato attivato. Ti arriverà un'altra emaail con i dati relativi alla tua connessione.
Conserva l'emaile non cestinarla. Una volta persa, non potrai più accedere al tuo account.
</h1>
</center>
<?php
} else {
// esito login negativo
echo "Dati non validi Accesso negato.";
}
?>
</body>
</html>
Mi puoi dare una mano o suggerimento ?????? Grazie.
$ctrl_login = mysql_query("SELECT id FROM utenti WHERE email='$email' AND username='$username'") or die(mysql_error());
in questo modo
PHP:
// controlliamo se i parametri sono presenti in tabella
$q = "SELECT id FROM utenti WHERE email='$email' AND username='$username'";
echo $q;
$ctrl_login = mysql_query($q) or die(mysql_error());
E qui cos'ho sbalgliato di ste cavoli di apici e virgolette del cavolo ????
PHP:
$mail->MsgHTML("Grazie di esserti iscritto. <a href="http://utenti/fabio/MegaLaboratorio/attivazione.php" >clicca qui</a> "per attivare il tuo account. Grazie.");
Se prima non risolvo quello non posso effettuare la modifica che mi hai mandato
Ancora non ho potuto provare la tua query modificata. Mi da sempre errore la seguente istruzione. Non capisco cosa vuole
PHP:
$mail->MsgHTML("Grazie di esserti iscritto. <a href="http://utenti/fabio/MegaLaboratorio/attivazione.php>"." clicca qui</a> 'per attivare il tuo account. Grazie.");
$mail->MsgHTML("Grazie di esserti iscritto.<a href='http://utenti/fabio/MegaLaboratorio/attivazione.php'>clicca qui</a>per attivare il tuo account. Grazie.");
non andavano. Ma ho la stringa memorizzata, non l'ho cancellata. Ho fatto sia la prova con e senza, ma quelli sono necessari giusto ???? Tu intendi questa stringa qua:
PHP:
mail->MsgHTML('Grazie di esserti iscritto. <a href="http://utenti/fabio/MegaLaboratorio/login.php?email=' . $_POST['email'] .'&password=' . $_POST['pass'].'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");
L'ho rimessa. Almeno non mi da errore. Veddiamo se funziona la query. No, niente stesso risultato. Non mi fa entrare. Che fare ?? Non fa proprio l'update è questo il problema.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Account attivato</title>
</head>
<body>
<?php
// includiamo il file di configurazione
require_once("connetti.php");
// qui bisognera decriptare
$username = $_GET['username'];
$email = $_GET['email'];
// controlliamo se i parametri sono presenti in tabella
$q = "SELECT id FROM utenti WHERE email='$email' AND username='$username'";
echo $q;
$ctrl_login = mysql_query($q) or die(mysql_error());
$id = $_REQUEST['id'];
echo " <html> <head>";
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
echo "<center><h1> Ora il tuo account è stato attivato. Ti arriverà un'altra emaail con i dati relativi alla tua connessione.
Conserva l'email e non cestinarla. Una volta persa, non potrai più accedere al tuo account.
</h1> </center> ";
// esito login negativo
echo "Dati non validi Accesso negato.";
?>
</body>
</html>
Qua mi da due lampadine, evidentemente c'è qualcosa che non gli piace.
PHP:
$ctrl_login = mysql_query($q) or die(mysql_error());
$id = $_REQUEST['id'];
E questa è la pagina iscrizione.php attuale:
PHP:
<?php
require_once("connetti.php");
if (!isset($_POST['reg'])) {
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Modulo d'iscrizone</title>
<center> <H1>BENVENUTO NEL SITO D'ISCIRIZIONE PROVA</H1>
<form action= '' method="POST">
<font face="Comic Sans MS">
Nome: <input type="text" name="nome" maxlength="30" size ="32"> <br> <br>
Cognome: <input type="text" name="cognome" maxlength="30" size ="32"> <br> <br>
Username: <input type="text" name="username" maxlength="30" size ="32"> <br> <br>
Email: <input type="text" name="email" maxlength="40" size ="42"> <br> <br>
Rip-Email: <input type="text" name="ripemail" maxlength="40" size ="42"> <br> <br>
Password: <input type="password" name="password" maxlength="12" size ="14"> <br> <br>
Rip-Passw: <input type="password" name="passw" maxlength="12" size ="14"> <br> <br>
</font>
<center>
<input type="submit" name="reg" value="Invio iscrizione" />
<input type="submit" name="uscita" value="Uscita" />
</center> </form>
</head>
<body>
<?php
} else {
$nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
$cognome = mysql_real_escape_string(strtolower(trim ($_POST['cognome'])));
$username = mysql_real_escape_string(strtolower(trim ($_POST['username'])));
$password = mysql_real_escape_string(trim ($_POST['password']));
$passw = mysql_real_escape_string(trim ($_POST['passw']));
$email = mysql_real_escape_string(trim ($_POST['email']));
$ripemail = mysql_real_escape_string(trim ($_POST['ripemail']));
//crittografa la passowrod
$pass = mysql_real_escape_string(md5(trim($_POST['password'])));
// verifico la presenza dei campi obbligator
$ok_ko ="";
//controllo campi compilati
if($nome ==""){$ok_ko .= "Attenzione: il campo nome deve essere compilato. <br> <br>";}
if($cognome ==""){$ok_ko .= "Attenzione: il campo cognome deve essere compilato. <br> <br>";}
if($username ==""){$ok_ko .= "Attenzione: il campo username deve essere compilato. <br> <br>";}
if($email ==""){$ok_ko .= "Attenzione: il campo email deve essere compilato. <br> <br>";}
if($password ==""){$ok_ko .= "Attenzione: il campo password deve essere compilato. <br><br>";}
if($password != $passw){$ok_ko .= "Attenzione: le due password non coincidono. <br> <br>";}
// Controllo se lo username è presente nel db
$checkusername=mysql_query("SELECT username FROM utenti WHERE username='$username'");
$vuota=mysql_num_rows($checkusername);
if($vuota > 0){
echo "<br> <br> <h1> Attenzione: lo username: ".$username." è già presente nell'archivio. Si prega di cambiare email. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();
}
//controllo scrittura corretta dell'email
if(!filter_var($email, FILTER_VALIDATE_EMAIL)||!filter_var($ripemail,FILTER_VALIDATE_EMAIL)){
$ok_ko .= "indirizzo email non valido<br>";
// } //chiude il controllo scrittura corretta dell'email
// Controlla se le due email coincidono
if($email != $ripemail){$ok_ko .= "Attenzione: le due email non coincidono. <br> <br>";}
} //chiude il controllo scrittura corretta dell'email
// Controllo se esiste l'email nel db
$checkemail=mysql_query("SELECT email FROM utenti WHERE email='$email'");
$vuota=mysql_num_rows($checkemail);
if($vuota > 0){
echo "<br> <br> <h1> Attenzione: l'email: ".$email." è già presente nell'archivio. Si prega di cambiare email. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();
}
if($ok_ko !=""){
echo "<h1>$ok_ko</h1>";
echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();
}else{
$query="INSERT INTO utenti(nome, cognome, username, email, password) VALUES('$nome','$cognome','$username','$email','$pass')";
//var_dump($query);//qui dovresti vedere se la query si forma come dovrebbe
$q_i=mysql_query($query);//qui se registra, se bool false errore, se resuorce... è a posto
var_dump($q_i);
// Parte riguardante l'invio email
//require_once ("/class.phpmailler.php");
require_once 'phpmailer/class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Username = "@gmail.com"; // GMAIL username
$mail->Password = ""; // GMAIL password
$mail->SetFrom("no_replay@myserver.org");
$mail->Subject = "Attivazione account.";
//$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->CharSet = "UTF-8"; //Content-Type" content="text/html;
$mail->AddAddress($_POST['email']);
//$mail->MsgHTML('Grazie di esserti iscritto. <a href="http://utenti/fabio/MegaLaboratorio/login.php?username=' . $_GET['username'] .'&password=' . $_GET['pass'].'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");
$mail->MsgHTML('Grazie di esserti iscritto. <a href="http://utenti/fabio/MegaLaboratorio/login.php?username=' . $_POST['username'] .'&password=' . $_POST['pass'].'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");
if(!$mail->Send()) {
echo "Errore";
} else {
echo "<h1> <br>Utente registrato correttamente. E' stata inviata un'email di conferma per attivare l'account</h1>";
header("Refresh: 10;URL=login.php");
}
}
}
?>
Magari essendo più esperto di me identifichi subito l'errore.
Ora poi non so quale sia "echo $q;". Probabilmente, dovrebbe essere questa: "Dati non validi Accesso negato."
SELECT id FROM utenti WHERE email='' AND username=''
Ora il tuo account è stato attivato. Ti arriverà un'altra emaail con i dati relativi alla tua connessione. Conserva l'email e non cestinarla. Una volta persa, non potrai più accedere al tuo account.
Dati non validi Accesso negato.