$mail->MsgHTML('Grazie di esserti iscritto.<a href="http://utenti/fabio/MegaLaboratorio/attivazione.php?email=' . $_POST['email'] . '&password=' . $_POST['pass'] . '">clicca qui per attivare</a> il tuo account Grazie.');
SELECT id FROM utenti WHERE email='paperinik4@gmail.com' AND username=''array(2) { ["email"]=> string(20) "paperinik4@gmail.com" ["password"]=> string(0) "" } resource(3) of type (mysql result) NULL Resource id #3
Uhmm credo di avere fatto un gran casino. Dalla email deve arrivare alla pagina di login o di attivazione ??? Oppure deve arrivare ad attivare prima l'account e dopo passare al login ??? L'update sta sulla pagina attivazione se non erro. E c'hai ragione c'hai, come faccio l'update ??? Se me so magnato la stringa ??? Deve stare prima sull'attivazione o sul login ???
attivazione.php
qui verifichi se la mail e qualsiasi altro dato che hai nella pagina tipo la username sono presenti nel database con campo autorizzato pari a zero
Finalmente un po' di chiarezza. Quindi quella stringa che mi hai dato:
PHP:
$mail->MsgHTML('Grazie di esserti iscritto.<a href="http://utenti/fabio/MegaLaboratorio/attivazione.php?email=' . $_POST['email'] . '&password=' . $_POST['pass'] . '">clicca qui per attivare</a> il tuo account Grazie.');
E' corretta no ??? Ed è giusto che stia sulla pagina iscrizione.php Quindi, ci vuole una query che fa la verifica dell'email e password dopo di che fare l'update. Bel problemino da risolvere ehehehe. E come fare per decripatre la password ????? Basta questo ch emi avevi postato ???
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'";
Praticamente c'è anche la query che dovrebbe servire a verificare se tali dati sono presenti nel db o sbaglio ????
Ho fatto na cosa del genere, la devo testare, ma intanto mi puoi dire se logicamente potrebbe andare ??? Grazie.
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
$q = "SELECT id FROM utenti WHERE email='$email' AND password='$pass'";
$checktotal=mysql_query("SELECT id, email, pass FROM utenti WHERE id='$id', email='$$email',password='$pass'");
$vuota=mysql_num_rows($total);
if($vuota > 0){
echo "<br> <br> <h1> Attenzione: non è presente nessun dato con i relativi dati richiesti. </h1>";
echo "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();
}else{
$q="UPDATE utenti SET attivo='1'";
echo "Account attivato....";
}
?>
</body>
</html>
direi che piu o meno puo andare
non ti serve il redirect altrimenti la pagina continuera a ricaricarsi
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
$q = "SELECT id FROM utenti WHERE email='$email' AND username='$username'";
$checktotal = mysql_query($q);
$vuota = mysql_num_rows($total);
if ($vuota > 0) {
echo "<br> <br> <h1> Attenzione: non è presente nessun dato con i relativi dati richiesti. </h1>";
echo "Impossibile continuare";
exit();
} else {
$q = "UPDATE utenti SET attivo='1'";
echo "Account attivato....";
}
?>
</body>
</html>
Provo e ti dico. Hi fatto degli impacchi su un dito che mi è cascato un bicchiere e mi sono tagliato. Eovviamente è gonfio come un palloncino.
Mi da il segunte errore:
Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /volume1/web/utenti/fabio/MegaLaboratorio/attivazione.php on line 22 Account attivato....
Cosa vuol dire ???? E ovviamente non mi fa entrare.
La cosa brutta, è che se vado su phpmyadmin, e faccio la modifica manuale da 0 a 1 ed eseguo il login.php. Non mi fa entrare ugualmente Non so più che fare e soprtautto non so dove sia lo sbaglio :dipser:
ho sgamato che non mi fa l'update e la cosa brutta è che vado su phpmyadmin, e modifico attivo = 0 ad attivo = 1 non mi accetta la modifica ???? Coim'è sta storia ????? O meglio m el'accetta ma non mi fa entrare ugualmente.
No assolutamente, anzi ti ascolto eccome. Solo che poi facio alcune prove per vedere senza ottenere risultati:A nche quella ch emi avevi detto tu. L'ho modificata mettendo la password ma niente non me la legge. E poi ripeto. Non fa l'update al campo attivo. Se lo facesse sarebbe un passo avanti. Ora ti posto l'iscrizione.php
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?email=' . $_POST['email'] .'&password=' . $_POST['password'].'">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");
}
}
}
?>
Come puoi vedere dalla riga, che ti posto singolarmente che ti ascolto, sennò non starei qua a rompere le scatole se non ascoltassi no ????
PHP:
$mail->MsgHTML('Grazie di esserti iscritto. <a href="http://utenti/fabio/MegaLaboratorio/login.php?email=' . $_POST['email'] .'&password=' . $_POST['password'].'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");
nel link invii password e nella pagina attivazione recuperi l'username
è questo il problema
modifica cosi questo pezzo e riprova
PHP:
// qui bisognera decriptare
$pass= $_GET['password'];
$email = $_GET['email'];
// controlliamo se i parametri sono presenti in tabella
$q = "SELECT id FROM utenti WHERE email='$email' AND password='$pass'";