Non riesco più ad inviare email con il php

vuol dire che non hai messo niente nel link dopo il ?

attivazione.php? qui non hai messo niente
 
Ciao

Inoltre ho messo anche questo per capire perchè mi dava il triangolino giallo su $ctrl_login e su $id:

PHP:
echo $q;
var_dump($_GET);

$ctrl_login = mysql_query($q) or die(mysql_error());
             $id = $_REQUEST['id'];
var_dump($ctrl_login);
var_dump($id);

echo $id; 

echo $ctrl_login;
      die();

Il risulta è il seguente:

SELECT id FROM utenti WHERE email='' AND username=''array(0) { } resource(5) of type (mysql result) NULL Resource id #5

Cosa mi sta a significare tutto ciò ????
 
il link deve essere cosi
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.');
 
ma tu dalla mail non devi accedere prima di aver verificato i dati

arrivi ad una pagina di conferma che controlla se i dati sono presenti nel database

ma se non gli passi i dati che controllo vuoi fare?

ora vedo tra l'atro che hai tolto la query per aggiornare il campo "autorizzato"

non riesco piu a seguirti

fai un po di ordine
 
Ciao

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 ???
 
dalla mail vai

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

se verificato aggiorni il campo autorizzato a 1

poi puoi passare al login
 
Ciao

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 ????
 
questo dato pero nella pagina iscrizione non lo hai $_POST['pass']
si vede quando stampi la query $q

non ti serve decriptare per ora ti basta passare due parametri che puoi verificare

prova a ripostare iscrizione,php
 
Ciao

Ciao,

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>
 
Ciao

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.
 
Ultima modifica:
Ciao

La formula dell'update è giusta ???


PHP:
$q="UPDATE utenti SET attivo='1'";

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:
 
Ultima modifica:
stampa la query
PHP:
echo $q;
die();
andra in errore prche non gli arriavano i dati nel modo giusto

ew posta iscrizione.php che è la pagina che crea il link
 
Ciao

Ok, Faccio subito. Questo è quello che mi appare:

SELECT id FROM utenti WHERE email='[email protected]' AND password=''

Non gli piace la password. Ti allego il login, tante volte ci fosse un errore la.

login.php

PHP:
<?php
require_once("connetti.php");

if (!isset($_POST['log'])) {
    ?>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Loggati</title>

        <center>   <H2>DIGITARE USERNAME & PASSWORD. PREMERE <a href="iscrizione.php"> QUI</a> </H2> 

            <form action= '' method="POST">
                <font face="Comic Sans MS">
                Username: <input type="text" name="username"  maxlength="30" size ="32"> <br> <br>
                Password: <input type="password" name="password"  maxlength="12" size ="14"> <br> <br>
                </font> 
                <center>
                    <input type="submit" name="log" value="Loggati" />
                    
                </center> </form>
        </head>
    </body>
    <?php
} else {

    session_start();
//Query originale
    
  $query = "SELECT id,username, nome, attivo FROM utenti WHERE username='" . $_POST['username'] . "' AND password='" . md5($_POST['password']) . "'";     


$cerco = mysql_query($query);

if (!isset($_POST['esci'])) {

    if (!$cerco) {
        echo "Errore query: <br/>$query<br/>" . mysql_error();
        mysql_error();
    } else {
     
    if (mysql_num_rows($cerco) == 1) {
        $row = mysql_fetch_assoc($cerco);        
        $_SESSION['username'] = $row['username'];
        $_SESSION['id'] = $row['id'];  
        //$_SESSION['autorizzato'] = $row['autorizzato'];
        $_SESSION['attivo'] = 1;

        
       
        header("Refresh: 0;URL=paginaris.php");   
    } else {

    echo "<h2> <center>";    
echo 'Premere su <a href="javascript:history.back();">back</a> Indietro per riprovare </h2>';
echo "Utente non trovato";

header("Refresh: 1;URL=paginaris.php");     
  echo "</h2> <center>";    
}  
}
}
}

?>
 
Ciao

Ragazzi ovviamente rivolto a tutto lo staff,

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.
 
non gli piace la pass perch enon gli arriva come parametro nel link

avevo scritto

e posta iscrizione.php che è la pagina che crea il link

ma probabilmente non mi ascolti
 
Ciao

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("[email protected]");
 
$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'";
 

Discussioni simili