Non riesco ad attivare l'account

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Il problema è il seguente. Dunque, ho creato una pagina di iscrizione, con l'invio dell'email per attivare l'acdcount. ormai tutti i siti fanno questa procedura. Ma il punto è che non riesco ad attivare l'account. O mi sono rincritinito io oppure non c'ho capito na mazza di come deve essere impostata la questione. Vi posto tutto per ordine, in modo tale che vi possiate rendere conto se ho fatto qualche cavolata o meno. Partiamo subito dalla tabella utenti:

Tabella utenti:

PHP:
create table utenti (

id 		INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome 		VARCHAR(30) NOT NULL,
cognome 	VARCHAR(30) NOT NULL,
username 	VARCHAR(30) NOT NULL,
email           VARCHAR(40) NOT NULL,
password        VARCHAR(255) NOT NULL,
autorizzato 	ENUM('1', '0') DEFAULT '0',
PRIMARY KEY (id)
);

Spiegazioni: il campo autorizzato è impostato su 0, che come mi hanno spiegato, di default l'account è disattivato.

Ora posto la pagina di 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, autorizzato 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) == 0) {
        $row = mysql_fetch_assoc($cerco);        
        $_SESSION['nome'] = $row['nome'];
        $_SESSION['id'] = $row['id'];  
        //$_SESSION['autorizzato'] = $row['autorizzato'];
        $_SESSION['autorizzato'] = 1;

        $query = "SELECT id,username, nome, autorizzato 
              FROM utenti 
              WHERE attivo = 1 AND  //Qua debbo mettere attivo o autorizzato ???????
                    username='" . $_POST['username'] . "' AND 
                    password='" . md5($_POST['password']) . "'";  

        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=login.php");     
  echo "</h2> <center>";    
}  
}
}
}

?>

E infine posto la pagina di attivazione.php:

PHP:
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Account attivato</title>
        
    <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.</center></h1>
    </head>
    <body>
        <?php
       // includiamo il file di configurazione
    require_once("connetti.php");


    // controlliamo se i parametri sono presenti in tabella
    $ctrl_login = @mysql_query("SELECT id FROM utenti WHERE email='$email' AND password='$password'") or die (mysql_error());
    if(@mysql_num_rows($ctrl_login)==1)
    {
      // esito login negativo
      echo "Login incorretto.";
    }else{
      // 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 id=".$obj->id) or die (mysql_error());
var_dump($query_attivo);
  }    
       ?>
    </body>
</html>

Questo è quanto. Dove sbaglio ????? Grazie a tutti dell'attenzione.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
autorizzato non diventera mai 1 se scrivi cosi
PHP:
"UPDATE utenti SET attivo='1'
se il campo si chiama autorizzato dovrai scrivere
PHP:
"UPDATE utenti SET autorizzato='1'

poi c'è un altra cosa che non mi convince ma la riguardo un po meglio
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
PHP:
// controlliamo se i parametri sono presenti in tabella
    $ctrl_login = @mysql_query("SELECT id FROM utenti WHERE email='$email' AND password='$password'") or die(mysql_error());
    if (@mysql_num_rows($ctrl_login) == 1) {
        // esito login negativo
        echo "Login incorretto.";
    } else {
        // 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 autorizzato='1' WHERE id=" . $obj->id) or die(mysql_error());
        var_dump($query_attivo);
    }

praticamente scrivi :
Se trovo il record nel database : Login negativo
Se non lo trovo : Login positivo

Non dovrebbe essere il contrario ?
PHP:
// controlliamo se i parametri sono presenti in tabella
    $ctrl_login = @mysql_query("SELECT id FROM utenti WHERE email='$email' AND password='$password'") or die(mysql_error());
    if (@mysql_num_rows($ctrl_login) == 1) {
        // 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 autorizzato='1' WHERE id=" . $obj->id) or die(mysql_error());
        var_dump($query_attivo);
    } else {
        // esito login negativo
        echo "Login incorretto.";
    }
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ci provo e ti dico se hai visto giusto, po' esse che mi sono incasinato io come ar solito..... Mi da questo messaggio qua:

"
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.
Login incorretto. "

E ovviamente cliccando sull'email di conferma per attivare l'account, non mi fa entrare.... :(
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ora ricordo la domanda di ALe

$email e $password dove li valorizzi?
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ho fatto una piccola prova, perchè mi è venuto il dubio che non facesse l'update, e difatti non fa l'update. ossia non aggiorna, ecco perchè non mi fa entrare e tutto il resto. Ti posto il piccolo esempio che ho fatto. La sintassi dell'update dovrebbe esssere la seguente se non erro:

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

Il file si chiama provaupdate.php

PHP:
<?php
       // includiamo il file di configurazione
    require_once("connetti.php");
    
    if (!isset($_POST['prova'])) {
        
    
    ?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
         <form action= '' method="POST">
        <input type="submit" name="prova" value="Prova update - Invio" />
    </head>
    <body>
        <?php
    }else{
        $query = "UPDATE utenti SET attivo='1' ";
        var_dump($query);
    }
     
        
        ?>
    </body>
</html>

E il var_dump che c'ho messo mi restituisce la seguente cosa:

PHP:
string(29) "UPDATE utenti SET attivo='1' "

Cos ami sta ad indicare tutto ciò ?? Ho visto giusto ????
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ora ricordo la domanda di ALe

$email e $password dove li valorizzi?

Mi sembra sul login.php se non erro. Aspe, che ci guardo...

Il login.php è il seguente:

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) == 0) {
        $row = mysql_fetch_assoc($cerco);        
        $_SESSION['nome'] = $row['nome'];
        $_SESSION['id'] = $row['id'];  
        //$_SESSION['autorizzato'] = $row['autorizzato'];
        $_SESSION['attivo'] = 1;

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

        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=login.php");     
  echo "</h2> <center>";    
}  
}
}
}

?>

e ti riposto anche paginaris.php, dovrebbero essere valorizzati la no ???

paginaris.php:

PHP:
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 
    <?php
require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}

$stringa= strtoupper($_SESSION['nome']);
if(isset($_SESSION['nome']) && $_SESSION['attivo'] == 1) {
 
   
    echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
?>
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
    
<?php


    echo "<div class=\"messaggio\"><h1>";

    echo "BENVENUTO ".$stringa." <br />";
    echo $me;
    echo "</h1></div>";
    echo "</body></html>";
    }else{
    header("Location:failed.html");      
    exit();   
 
}
 
 ?> 
 
<html>
    <head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
  

<center>  <br> <br>
    

<input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />
 

 
</center>
 </body>
</html>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
no come fai ad arrivare a attivazione.php?
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Mi manca il passaggio intermedio sai. Non so da dove ci arrivo, non ricordo, ma cliccando sul link che arriva dall'email dovrebbe essere questa se non sbaglio .

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


$mail->AddAddress($_POST['email']);

if(!$mail->Send()) {
  echo "Errore nell'inviare l'email: " . $mail->ErrorInfo;
} else {
  echo "Messaggio inviatro correttamente!";
}
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
si credo sia questo
PHP:
$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/fabio/MegaLaboratorio/attivazione.php">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");

ora dovresti passare nel link email e password alla pagina attivazione ma non saprei cosi su due piedi il modoo piu sicuro
penso dovranno viaggiare in get quidni dopo il ?
esempio
attivazione.php?email=email&psw=password
ma dovranno in qualche modo essere criptate


intanto imposta l'attivazione.php in questo modo

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
        $email = $_GET['email'];
        $password = $_GET['password'];

        // controlliamo se i parametri sono presenti in tabella
        $ctrl_login = @mysql_query("SELECT id FROM utenti WHERE email='$email' AND password='$password'") or die(mysql_error());
        if (@mysql_num_rows($ctrl_login) == 1) {
            // 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 id=" . $obj->id) or die(mysql_error());
            ?>
        <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>
 
Ultima modifica:

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
ciao

ora infinitesimaCiao,

Scusa, ma sono dovuto uscire che avevo una visita medica. Domani, provo subito lo script che mi hai inviato e ti sapró dire. Anche se sarò di courvé in cucina. Tra una pausa e l'altra. Comunque grazie ancora infinitesimale, per l'aiuto prezioso che mi state tutti quanti dando....
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Certo devi passargli i dati dal link nella mail
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ehmmmmm perdonami come si fa ???? Non dirimi con benvenuto .$[nome]. " "." I tuoi dati sono i seguenti: username --> ".$[username]. " ". e la tua password è: $[password]. Sarebbe troppo semplice se fosse così, almeno credo o sbaglio ???
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
cito quanto detto qualche post fa
criric ha scritto:
ora dovresti passare nel link email e password alla pagina attivazione ma non saprei cosi su due piedi il modoo piu sicuro
penso dovranno viaggiare in get quidni dopo il ?
esempio
attivazione.php?email=email&psw=password
ma dovranno in qualche modo essere criptate
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova a passarli in chiaro intanto, per vedere se funziona poi qualcuno magari ci dira come codificarli

basta che aggiungi ?email=$emal&psw=$psw al link

ma non ricordo bene come chiami le variabili nel file che invia la mail
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ci provo subito,

Se fosse così semplice saremmo a cavallo ehehehehehe. Poi dopo ti debbo chiedere un'eventuale chiarimento sull'iscrizione2. Mi salta un passaggio. Ma poi ti dico. Na cosa per vorta. Per essere sicuri ti posto la stringa:

PHP:
$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/fabio/MegaLaboratorio/attivazione?email=$emal&psw=$psw.php">clicca qui per attivare</a></b>'." "."per attviare l'account. Grazie.");
 
Ultima modifica:

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Ho fatto diverse prove. la prima quella che mi avevi postato tu.


PHP:
aggiungi ?email=$emal&psw=$psw  //l'estensione php in questo caso va messa ???? e dove ????

Poi ho sostituito con la username e password, perchè gli ho chiamati così. Ma niente

PHP:
http://utenti/fabio/MegaLaboratorio/attivazione.php?username=$username&password=$password

Risultato:

Una pagina bianca quando clicchi sul link. E dopo quando vai su login.php (che in teoria dovrebbe andare in modo automatico, ma non so come), digito username e password e non mi fa entrare. Sicuramente c'è qualche sbaglio da parte mia. Ma quando mi hai digitato quella stringa mi sono ricordato che i siti la visualizzano. Moh vateli a ripescà quali sono ehehehehe.
 
Discussioni simili
Autore Titolo Forum Risposte Data
C Non riesco ad attivare il sito in locale (nè in rete) - PHP / EasyPHP PHP 4
L Non riesco a riprodurre uno sfondo Photoshop 0
R Non riesco a rinnovare l'immagine di sfondo PHP 1
G non riesco a capire quale sia l'errore [SQL] MySQL 2
R Non riesco a cambiare l'immagine di sfondo PHP 4
I Non riesco ad accedere ftp tramite IP in LAN Reti LAN e Wireless 6
Leshabituelles Non riesco ad aggiornare PHP PHP 0
D [HTML] Non riesco aprire foto singole in un album creato con "iWebAlbum" HTML e CSS 1
D [MS Access] aiuto non riesco a capire MS Access 6
T [PHP] aiuto....Fatal error: Uncaught Error:non riesco a capire PHP 1
O PHP 5.6 non riesco ad abilitare TSL 1.2 PHP 1
W Non riesco più a modificare i dati di una tabella da phpmyadmin MySQL 0
C non riesco a inviare la posta con account alice Posta Elettronica 1
L [Javascript] aiuto non riesco a inviare in get dal server web locale su altervista con httpRequest Javascript 0
G [Javascript] non riesco a usare ace - ReferenceError: define is not defined 1 ace.js:37:1 Javascript 0
booklisa Non riesco a connettermi: Connection timed out CMS (Content Management System) 3
A Non riesco ad inviare una mail attraverso PHP su Xampp PHP 2
otto9due Lampeggiamento solo su .hover(), inizia ma non riesco a fermarlo! jQuery 2
ANDREA20 [PHP] Non riesco ad impostare reset password invio via email PHP 6
S [PHP] Aiuto! Non riesco a richiamare una variabile PHP 2
V [PHP] Non riesco a trovare errore PHP 25
SimooRu [PHP] Non riesco a far passare i dati con i form PHP 4
elpirata [HTML] Non riesco a centrare menu orizzontale HTML e CSS 5
CristianB72 Non riesco a connettermi al DB tramite PDO Database 10
G Non riesco a spostare un cerchio fatto con tracciati in photoshop Photoshop 1
gandalf1959 IPN Listener di Paypal, non riesco a registrare utente nel mio DB PHP 14
A Non riesco più a visualizzare il codice sicurezza nel forum Supporto Mr.Webmaster 3
G Non riesco a colorare una campitura con lo strumento penna Photoshop 1
P non riesco a visualizzare i dati dopo aver inserto l'id PHP 36
P Non riesco a capire dove sta l'errore e perchè non mi memorizza il contenuto PHP 14
marino51 non riesco a caricare un allegato percgè non riesco a ridimensionare la finestra Supporto Mr.Webmaster 0
napuleone XP non riesco a cambiare le impostazioni delle cartelle Windows e Software 2
E non riesco a installare git su mac Mac e Software 0
Shyson Non riesco a modificare i commenti del visitatori Social Media Marketing 0
T Non riesco ad installare il composer su xampp Apache 0
A Non riesco a fare backup sito perchè Filezilla non scarica tutti i file! Web Server 4
P non riesco a registrarmi a MrW.Tools.it Comunicazioni dallo Staff 4
neo996sps Non riesco a fare un parse XML con PHP PHP 1
C Non riesco più ad entrare su WordPress...."È richiesto l'aggiornamento del database" WordPress 0
M non riesco a configurare Apache 0
S non riesco a capire la struttura di questo sito in PHP PHP 0
S [RISOLTO]aiuto, non riesco afar funzionare il camp odi ricerca per un DB con PHP PHP 5
Monital variabili nei link, non riesco a passarle PHP 8
L Non riesco a far funzionare un plugin (probabilmente ho sbagliato qualcosa nel richiamare lo script) jQuery 10
S non riesco ad eliminare dei caratteri in PHP - Excel PHP 10
A Html e css non riesco a capire l'errore HTML e CSS 13
P Befana che vola non riesco a trovarla Javascript 6
A Non riesco a visualizzare il file PHP 2
neo996sps [Visual Studio] Non riesco a salvare i record Visual Basic 0
D Non riesco a cancellare un href >.< Javascript 6

Discussioni simili