Non riesco più ad inviare email con il php

scusa ma il titolo della discussione è " Non riesco più ad inviare email con il php"

stai chiedendo di un sistema di login autorizzazione

on sto capendo qual'è il problema
 
scusa se si chiama autorizzato perche tu lo chiami attivo? o viceversa

cmq apri una discussione a parte che in questa c'è confusione e rispiega con un po piu di calma cosa non va
 
Ciao

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

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?

Ciao Ale,

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.
 
Ciao,
modifica la query
PHP:
$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 posta quello che ti stampa
 
Ciao

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 :(
 
se apri l'istruzione con i doppi apici all'interno devi usare quelli singoli
 
Ciao

Ciao Criric,

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.");

Cosa c'è che non le piace ????
 
lo avevo scritto sopra
PHP:
$mail->MsgHTML("Grazie di esserti iscritto.<a href='http://utenti/fabio/MegaLaboratorio/attivazione.php'>clicca qui</a>per attivare il tuo account. Grazie.");
cmq hai tolto i dati in GET

attivazione.php?user= etc etc
 
Ciao

Si,

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

Ti riposto la pagina 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
$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.
 
questo
PHP:
echo $q;
dovrebbe stamparti qualcosa me lo posti?
 
allora metti die() subito dopo

PHP:
echo $g;
die();

serve a bloccare l'esecuzione della pagina
 
Ciao

Mi visualizza questo:

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.
 
non gli arrivano i parametri
aggiungi questo
PHP:
echo $q;
var_dump($_GET);
die();
e posta

ps:
echo $q è questa
SELECT id FROM utenti WHERE email='' AND username=''
 

Discussioni simili