• User

    Finalmente ho risolto.
    Il problema stava nel database, è la prima volta che mi succede una cosa del genere, in pratica creando la tabella gestore come cliccavo per aprirla mi si disconnetteva.
    ho dovuto cambiare nome alla tabella e tutto è andato.


  • User Newbie

    prova


  • User Newbie

    Ciao a tutti
    Thedarkita o chiunque sappia rispondere ho da fare diverse domande, spero siate pazienti nei miei confronti...premetto che nn riesco a inviare msg sul forum **.
    Sto realizzando una sezione privata in un sito web, ma nn ci riesco.
    Ho provato ad inserire di sana pianta i file che hai messo a disposizione, ma nn funge.
    Ho provato il sito off-line,quando clicco sulla prima pagina ovvero index.php, si apre un'altra pagina in cui mi dice di specificare come aprire tale pagina o se la si vuole salvare.
    Poi ho visto che non hai creato il database con access, ma un file in sql.
    Come faccio a inserire quella query in access?
    Devo fare altre modifiche per il corretto funzionamento della sezione privata.
    Ma l'user e la password per accedere all'area privata devo impostarle nel database.

    grazie in anticipo per la tua pazienza.


  • User Attivo
    1. per provarla offline devi avere apache....lo possiedi?

    2.dacci il link della versione online


  • ModSenior

    Ciao donjovi84,

    questo tutorial utilizza un database mysql.
    Il file sql contiene le query da eseguire per la creazione delle tabelle del database.
    Per utilizzare un database access dovresti modificare tutte le query del tutorial, tieni presente che la maggior parte degli hosting non permettono di collegarsi ad un database access da php.
    Il sito devi provarlo su un server con php installato altrimenti non può essere eseguito, perciò o carichi il tutto su un hosting oppure installi un web server in locale (Puoi installare un pacchetto già completo come xampp per non avere problemi).


  • User Newbie

    Come faccio a creare un database sql?mi potete dire le dritte elementari su come muovermi.


  • User Newbie

    Se volete vedere l'errore che mi esce on-line andate al seguente indririzzo:Se volete vedere l'errore che mi esce on-line andate al seguente indririzzo:merolladivani.com/menu/frame.html
    e cliccate su area clienti.grazie nuovamente.


  • User Newbie

    xhi mi aiuta.


  • User

    Significa che sono errati i dati di acceso al database, devi ricontrollare i dati inseriti nella pagina config.php.


  • User Newbie

    Io ho semplicemente inserito il file database.sql,non ho crato nessun database.
    Volevo sapere come si crea un database sql.
    grazie:tongueout:


  • User Newbie

    ciao
    nel caso che il login fosse errato mi da Nome utente o Password errati
    vorrei sotto questa dicitura inserire "RIPROVA" e mandare l'utente alla pagina index:php.
    Scusate son scarso ma il php non mi entra :arrabbiato: devo lavorarci ancora parecchio.
    ciao e grazie


  • User

    Sostituisci questo:
    [PHP]die('Nome Utente o Password errati');[/PHP]
    Con questo:
    [PHP]die('Nome Utente o Password errati<br /><a href="/index.php">RIPROVA</a>');[/PHP]


  • User Newbie

    Rieccomi
    volevo chiedevi per rendere un'altra pagina privata si deve inserire questo codice sempre prima del html ?

    <?php
    // Includo la connessione al database
    require('config.php');

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: index.php');
    exit;
    }
    ?>

    ciao ciao


  • User Newbie

    Grazie della velocità per la risposta
    ho tolto / perchè mi mandava nella pagina index del server con la modifica va ok.

    no questo "/index.php"

    ma questo "index.php"


  • User

    Si è proprio quello il codice per una pagina riservata 🙂


  • User Newbie

    Ciao TheDarkita.Sono nuovo del forum.Complimenti per il tutorial!!!Veramente ben fatto.L'ho seguito passo passo e non ho avuto problemi,tranne uno.E spiego che tipo di problema ho avuto.Ho integrato i tuoi script per la registrazione degli utenti con la relativa attivazione via mail.Funziona tutto tranne l'attivazione in se per se.Mi spiego meglio.Quando registo un nuovo utente,questo viene inserito nel database e insieme a lui viene generata una stringa casuale di 32 caratteri.Fin qui ci sono.Ora,per scrupolo,ho provato ad effettuare il login prima di verificare l'email e attivare la registrazione.Mi fa entrare nella pagina privata.php.Cosa che non dovrebbe accadere fino a quando non viene confermata l'attivazione.Ora non so dove sbaglio.Ho controllato e ricontrollato il codice decine di volte.Ho seguito passo passo ma non riesco a capire perchè avviene ciò.Aiutoooo!!!Vi prego!!!


  • ModSenior

    Ciao nellius,

    grazie per i complimenti. 🙂
    Devi fare un controllo nella pagina di login impedendolo se l'account non è attivo. Se non ricordo male questo argomento lo abbiamo già trattato, per cui se cerchi nelle varie pagine dovresti trovare tutte le informazioni del caso.


  • User Newbie

    Grazie TheDarkita:)
    Ho riletto bene la questione e ho risolto.Il problema che avevo era che nel file di login,e precisamente,nella select query prima del controllo per vedere se è attiva la registrazione o meno,non avevo scritto il campo attivazione.Di conseguenza il controllo avveniva solo sul campo id,attivandomi automaticamente l'utente registrato.
    Ma ora è tutto apposto.
    Grazie ancora.
    Ciaooo

    Ho aperto una thread,non in questa sezione del tutorial all'area privata ovviamente:),dove chiedo informazioni per un argomento che potrebbe essere interessante.
    Mi interesserebbe il tuo punto di vista e,perchè no,anche il tuo aiuto:)


  • User Attivo

    Ciao! E se io volessi invece vederla la password utente? Basta togliere questo? e basta, senza nessun'altra modifica?

    [PHP]// Crypt della password per garantire una miglior sicurezza
    $pass = md5($pass);
    [/PHP]

    Grazie!


  • User

    Ciao utenti ma soprattutto ciao Thedarkita e grazie per questo meraviglioso script.
    Ho seguito con attenzione tutto ciò che si è scritto senza riscontrare particolari problemi e quindi implementando lo script in base alle mie esigenze.
    Vengo al dunque: effettuando, però, le modifiche nella pagina di registrazione, sul checkbox per accettare la privacy policy, al momento di cliccare sul link di attivazione mi compare "Errore, Link non valido".
    Ho letto e riletto dalla prima all'ultima pagina e confrontato la pagina originaria con la pagina modificata e non sono riuscito a trovare l'errore.
    Di seguito i codici delle due pagine.

    Pagina funzionante:
    [PHP]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
    }
    
    
    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
        die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
        die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
        die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
        die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
        die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {
        
        // Crypt della password per garantire una miglior sicurezza
        $pass = md5($pass);
        
        
        // Genero una stringa casuale di Attivazione
        $attivazione = '';
        for($x=1; $x<=32; $x++)
        $attivazione.=rand(0,9);
        $attivazione = md5($attivazione);
        $message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="h00p://wwv.miosito.it/a/attivazione.php?code='.$attivazione.'">Attiva account</a>';
        // Header dell'email, per mandarla in formato html
        $headers = "From: adwmaster <[email protected]>\r\n";
        $headers .= "Reply-To: [email protected]\r\n";
        $headers .= "Return-Path: [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($mail, 'Registrazione Tutorial TheDarkITA', $message, $headers);
        
        // Query per l'inserimento dell'utente nel database
        $strSQL = "INSERT INTO utenti (user,pass,mail,attivazione)";
        $strSQL .= "VALUES('$user', '$pass', '$mail', '$attivazione')";
        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
        
    
        // Reindirizzo l'utente ad una pagina di conferma della registrazione
        header('Location: registrato.php');
        exit;
    }
    

    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h00p://wwv.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="h00p://wwv.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Registrazione</title>
    </head>

    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /><br />
    <input name="registra" type="submit" value="Registrati" /><br />
    </form>
    </body>
    </html>
    [/PHP]

    Pagina non funzionante:
    [PHP]
    <?php
    session_start();
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    $accept = (isset($_POST['accept'])) ? trim($_POST['accept']) : '';   // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
        $accept = addslashes($accept);
    }
    
    
    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
        die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
        die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
        die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
        die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
        die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
        
    elseif($accept != 1)
        die('Devi accettare l\'informativa');    
    // Registrazione dell'utente nel database
    else
    {
        
        // Crypt della password per garantire una miglior sicurezza
        $pass = md5($pass);
        
        
        // Genero una stringa casuale di Attivazione
        $attivazione = '';
        for($x=1; $x<=32; $x++)
        $attivazione.=rand(0,9);
        $attivazione = md5($attivazione);
        $message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="h00p://wwv.miosito.it/a/attivazione.php?code='.$attivazione.'">Attiva account</a>';
        // Header dell'email, per madnarla in formato html
        $headers = "From: adwmaster <[email protected]>\r\n";
        $headers .= "Reply-To: [email protected]\r\n";
        $headers .= "Return-Path: [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($mail, 'Registrazione Tutorial TheDarkITA', $message, $headers);
        
        // Query per l'inserimento dell'utente nel database
        $strSQL = "INSERT INTO utenti (user,pass,mail,accept)";
        $strSQL .= "VALUES('$user', '$pass', '$mail', '$accept')";
        mysql_query($strSQL) OR die("Errore 003. <br>
    

    Possibile cause: <br>

    • non ha spuntato la casella per l'informativa. <br>

    • non ha inserito i suoi dati correttamente.<br>

    • errore del sistema.<br>
      Si prega tornare indietro e riprovare a registrarsi o<br>
      contattare l'amministratore.<br>
      Failure because: ".mysql_error());

      // Reindirizzo l'utente ad una pagina di conferma della registrazione
      header('Location: registrato.php');
      exit;
      

      }
      }
      ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h00p://wwv.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="h00p://wwv.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Registrazione</title>
      </head>

    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /><br />
    <span class="Stile14">Accetto l' <a href="/informativa.php">informativa</a></span>
    <input name="accept" type="checkbox" id="accept" checked="checked" value="1" />
    <br />
    <input name="registra" type="submit" value="Registrati" /><br />
    </form>
    </body>
    </html>
    [/PHP]

    Grazie anticipatamente.