Non riesco più ad inviare email con il php

non ti fa l'update perche qui non esegui la query
PHP:
} else {
            $q = "UPDATE utenti SET attivo='1'";

            echo "Account attivato....";
        }
modifica cosi
PHP:
} else {
    $q = "UPDATE utenti SET attivo='1' WHERE email='$email' AND username='$username'";
    if (mysql_query($q)) {
        echo "Account attivato....";
    } else {
        echo $q . "<br/>" . mysql_error();
    }
}
 
Ciao

Provo la modifica e ti dico il risultato. Ti posto la pagina di attivazione.php Dovessero esserci altri errori.

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
        
         // qui bisognera decriptare
        
         $pass= $_GET['password'];
         $email = $_GET['username'];  

        // controlliamo se i parametri sono presenti in tabella
$q = "SELECT id FROM utenti WHERE username='$username' AND password='$pass'"; 
         
        
// Controllo se lo username è presente nel db

$checkusername=mysql_query("SELECT username, attivo FROM utenti WHERE username='username' AND attivo='1'");
$vuota=mysql_num_rows($checkusername);
if($vuota > 0){
	 
        // controlliamo se i parametri sono presenti in tabella
$q = "SELECT id FROM utenti WHERE username='$username' AND attivo='0'";

exit();


}else{
    
    $q = "UPDATE utenti SET attivo='1' WHERE email='$email' AND username='$username'";
    if (mysql_query($q)) {
        echo "Account attivato....";
    } else {
        echo $q . "<br/>" . mysql_error();
    }
  
  echo "Account attivato....";
  header("Refresh: 10;URL=login.php");
}

    ?>

</body>
</html>
 
Ultima modifica:
ho sbagliato io
non cosi
PHP:
$q = "UPDATE utenti SET attivo='1' WHERE email='$email' AND username='$username'";
ma cosi
PHP:
$q = "UPDATE utenti SET attivo='1' WHERE email='$email' AND password='$pass'";

e commenta il refresh intanto
 
ciao

Domani provo e posto tutto quanto il risultato. Cosa intendi per commentare il refresh ??? O meglio cos'è in questo t caso il refresh ???? Se non sbaglio é l'aggiornamento della pagina giusto ???
 
volevo dire redirect

PHP:
header("Refresh: 10;URL=login.php");

è inutile cambiare pagina prima di aver risolto i problemi
 
Ciao

Ciao,

Purtroppo non va, continua a non farmi l'update. Con tutte le modifiche che mi hai detto di fare. Voglio provare a fare una cosa. Un semplice tastiino update e vedere se me lo cambia. Inoltre mi dice anche utente non trovato. Sei sicuro che ci vuole l'eamil anzicchè username ??? perchè nel login c'è da insierire lo username non l'email. Ora debbo andare al Gemelli di roma in ospedale. Per un controllo. Ci si sente dopo. Intanto fammi sapere che lo leggo dal cell. Ciao.
 
perchè nel login c'è da insierire lo username non l'email.
non ti confondere

una cosa è la conferma dell'attivazione dell'account

altra cosa che non devi nemmeno considerare per il momento è il login

posta tutti i var_dump e gli echo che ti ho fatto mettere nella pagina attivazione.php
 
Ciao

Mi da i seguenti risultati:


SELECT id FROM utenti WHERE email='[email protected]' AND password=''string(72) "SELECT id FROM utenti WHERE email='[email protected]' AND password=''" Account attivato....Account attivato....

SELECT id FROM utenti WHERE email='' AND password=''string(52) "SELECT id FROM utenti WHERE email='' AND password=''" Account attivato....Account attivato....
 
continua a non arrivargli la password

rocontrolla il link in registrazione e i parametri GET in attivazione.php
 
Ciao

Ciao,

Ti posto il tutto così 4 occhi vedono meglio di due.

Questo è il link che va all'attivazione.php.
PHP:
$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/fabio/MegaLaboratorio/attivazione.php?email=' 
        . $_POST['email'] .'&password=' . $_POST['password'].'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie."); 

[PHP]

Ora ti posto l'intera 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
        
         // qui bisognera decriptare
        
         $password= $_GET['password'];
         $email = $_GET['email'];  

        // controlliamo se i parametri sono presenti in tabella
$q = "SELECT id FROM utenti WHERE email='$email' AND password='$pass'"; 
         echo $q;
var_dump($q);
        
// Controllo se lo username è presente nel db

$checkusername=mysql_query("SELECT id, email, attivo FROM utenti WHERE id='$id' AND attivo='0'");
$vuota=mysql_num_rows($checkusername);
if($vuota > 0){
	 
        // controlliamo se i parametri sono presenti in tabella
//$q = "SELECT id FROM utenti WHERE username='$username' AND attivo='0'";

exit();


}else{
    
   $q = "UPDATE utenti SET attivo='1' WHERE email='$email' AND password='$pass'";
    if (mysql_query($q)) {
        echo "Account attivato....";
    } else {
        echo $q . "<br/>" . mysql_error();
        var_dump($q);
    }
  
  echo "Account attivato....";
  header("Refresh: 10;URL=attivazione.php");
}

    ?>

</body>
</html>

E questi sono i get che mi hai chiesto:

PHP:
$password= $_GET['password'];
         $email = $_GET['email'];

Inoltre ti volevo far vedere una cosa. come puoi vedere da questo link che ti posto, che la password la legge tranquillamente, ovviamente decriptata, l'ho messo io "xxx"

http://utenti/fabio/MegaLaboratorio/[email protected]&password=xxx

Semmai quello che non fa è l'update. Ti allego inoltre un'immjagine di quando vado ad eseguire il login.php. Ecco il risultato.
 
Ultima modifica:
Ciao

Ciao,

L'ho fatta più semplice. Come ti avevo accennato ieri sera. Ho messo un tastino "update", per vedere se effettivamente faceva l'update. E non lo fa.

E questo è il programmino stupido che dovrebbe effettuare l'update. Vado su phpmyadmin, e rimane sempre sullo "0" con tutto che sembra che effettui lupdate dal risultato che ti ho postato. Dov'è l'errore ???? Eppure la formula è quella no ???

PHP:
 <?php

require_once("connetti.php");


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

    ?>
<html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            
        <form action= '' method="POST">



<center>
                    <input type="submit" name="up" value="Update" />
</center>
</form>
 <?php
 
} else {
    

 $q ="UPDATE utenti SET attivo = '1' ";
 echo $q;
 var_dump($q);
 
}
 ?>


Questo è il risultato:

UPDATE utenti SET attivo = '1' string(31) "UPDATE utenti SET attivo = '1' "
 
per eseguire le query occorre questo comando
PHP:
mysql_query();
altrimenti non la eseguira mai

guarda il codice che hai postato prima
 
Ciao

Pardon, piccola distrazione, hai ragione, eppure di query ne ho viste centinaia che rinco. Scusa stavo in cucina.... Ma ora sono tornato. Provo ad inserlo ecco perchè non mi passa il valore su attivazione. Manca quella:

PHP:
 mysql_query();

Eeheheheh yuppiiiiiii L'ha aggiornato.
 
Ultima modifica:
Ciao

Una volta che siamo riusciti a capire dov'era l'errore, come bisogna procedere ora ???? Ora mi da i seguenti errori:

SELECT id FROM utenti WHERE email='[email protected]' AND password='xxx'string(77) "SELECT id FROM utenti WHERE email='[email protected]' AND password='xxx'" 1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1bool(true) Account attivato....

SELECT id FROM utenti WHERE email='' AND password=''string(52) "SELECT id FROM utenti WHERE email='' AND password=''" 1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1bool(true) Account attivato....
 
Ultima modifica:
Ciao

Allora ti posto di nuovo 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
        
         // qui bisognera decriptare
        
         $password= $_GET['password'];
         $email = $_GET['email'];  

        // controlliamo se i parametri sono presenti in tabella
//$q = "SELECT id FROM utenti WHERE email='$email' AND password='$password'"; 
  //       echo $q;
//var_dump($q);
        
// Controllo se lo username è presente nel db

$checkusername=mysql_query("SELECT id, email FROM utenti WHERE id='$id' ");
$vuota=mysql_num_rows($checkusername);
if($vuota > 0){
	 
exit();


}else{
    
   $q =  mysql_query("UPDATE utenti SET attivo='1' WHERE email='$email' AND password='$password'");
    if (mysql_query($q)) {
        echo "Account attivato....";
    } else {
        echo $q . "<br/>" . mysql_error();
        var_dump($q);
    }
  
  echo "Account attivato....";
  header("Refresh: 10;URL=attivazione.php");
}

    ?>

</body>
</html>

Come puoi notare, ho modificato la query, ma rimane sempre a zero e non fa l'update.

PHP:
$q =  mysql_query("UPDATE utenti SET attivo='1' WHERE email='$email' AND password='$password'");

Ed infine, mi da il seguente risultato:

1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1bool(true) Account attivato....

Rimanendo sempre su attivo = 0 Invece, con il singolo pulsantino me lo modificava. :(

Allora signori e signori, apriamo una mezza bottiglia di spumante. Il problema era il seguente:

In origine veniva fatto questo errore:

PHP:
$q =  "UPDATE utenti SET attivo='1' WHERE email='$email' AND password='$password'";

Dopo l'osservazione di criric, e modificata in questa maniera:

PHP:
$q =  mysql_query("UPDATE utenti SET attivo='1' WHERE email='$email' AND password='$password'");

Aggiungendo la parolina magica:

PHP:
$q =  mysql_query();

Alla query, sembrava che funzionasse. Ma invece non faceva la modifica. Dopo di che di mia iniziativa, ho modificato la query in questa maniera:

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

Andando a vedere su phpmyadmin, passa da attivo = 0 a attivo = 1 e finalmente questa parte l'abbiamo, credo (da profano), chiusa, ma non del tutto. Perchè mi continua a segnalare il seguente errore:

1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1bool(true) Account attivato....

Che non ho la più pallida idea di dove si trovi. Inoltre esegendo il login, non mi fa accedere e mi compare questa schermata che riposto di nuovo sotto forma d'immagine. credo che piano piano grazie all'aiuto di cricric e soprattutto alla sua sopportazione, stiamo per risolvere il parto. Ecco l'immagine che mi compare a video. Ovviamente, chi si vuole unire alla discussione per trovare la soluzione migliore ben venga.
 
Ultima modifica:
Ciao

Salve a tutto lo staff,

Allora ho fatto qualche prova, ma il risultato è semppre lo stesso. Non mi fa entrare. Ho apportato delle modifiche su attivazione e l'ho fatta più semplice. Posto ora la pagina attivazioneutente:

PHP:
<?php

require_once("connetti.php");

//$email = $email;

$email = $_POST['email'];          //Questa dovrebbe essere la valorizzazione della variabile. Giusto ???? Correggetemi se sbaglio

$q =  mysql_query("UPDATE utenti  WHERE email='$email'  SET attivo='1'");
    if (mysql_query($q)) {
        echo "Account attivato....";
        header("Refresh: 3;URL=login2.php");
    } else {
       echo "Errore: account non attivato";
    
}

?>

E Questa che posto è la stringa di attivazione, che va direttamente alla pagina attivazioneutente.php

PHP:
$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/fabio/MegaLaboratorio/attivautente.php?email=. $_POST['email']. '">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");

Mi dite perchè se ci aggiungo l'id, non me lo legge ??? E l'amil si ??? Ossia, la stringa con l'id sarebbe la seguente:

PHP:
$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/fabio/MegaLaboratorio/attivautente.php?id=' . $_POST['id'] .'&email' . $_POST['email'].'">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");

Grazie, spero di avere come al solito qualche delicidazione. Il vostro aiuto è stato sempre prezioso e risolutivo.
 

Discussioni simili