• User

    creare un area utenti riservata

    inanzitutto un salutone a tutti 🙂 ho letto molte discussione e siete davvero ingamba...e ho voluto esporvi anche il mio problema eccolo:

    sto creando un sito e volevo inserire nel sito un area utenti riservata solo a chi si inscrive ossia:
    iscrizione area utenti >compilazione form con tutti i dati richiesti >registrare il tutto nel DB .
    io sto usando easyphp ho provato a fare qualcosa ma mi da errore index e non mi fa registrare nulla sul DB se volete posso postarvi il mio cod utilizzato per vedere se sto sbagliando in qualcosa.....asp vostre notizie ...grazie 🙂


  • ModSenior

    Qua c'è un tutorial: http://www.giorgiotave.it/forum/php-mysql/83033-tutorial-area-privata.html#post512240

    devi comunque postare che errore da... altrimenti non possiamo aiutarti...


  • User

    incredibile velocissimi .......:o
    vado subito a vedere il link grazie per la risposta lampo

    questo e il mio cod
    config.php
    [php]<?php
    //Variabili per la connessione al database
    $db_host = "localhost";
    $db_user = "root";
    $db_pass = "";
    $db_name = "registrazione";
    $tbl_name="";
    $field_username = "";
    $field_password = "";
    $field_email = "";
    $redirect_page = "index.php";
    ?>[/php]registra.php
    [php]<form name="registra" id="registra" method="POST" action="">
    <table>
    <tr><td>Username:</td><td><input name="username" type="text" /></td></tr>
    <tr><td>Password:</td><td><input name="password" type="password" /></td></tr>
    <tr><td>Ripeti password:</td><td><input name="rpassword" type="password" /></td></tr>
    <tr><td>E-Mail:</td><td><input name="email" type="text" /></td></tr>
    <tr><td colspan="2" align="right"><input name="submit" type="submit" value="Invia" /></td></tr>
    </table>
    </form>

    <?
    $username=$_POST['username'];
    $password=$_POST['password'];
    $rpassword=$_POST['rpassword'];
    $email=$_POST['email'];

    $form_error = true;
    $password_error = true;
    $email_error = true;

    if(isset($_POST['submit'])) {
    //Controlla che tutti i campi siano stati riempiti
    if(trim($username) == "" || trim($password) == "" || trim($rpassword) == "" || trim($email) == "") {
    echo("<b>Attenzione: </b>Devi completare tutti i campi<br>");
    } else {
    $form_error = false;
    }

       //Controlla che le due password si corrispondano
       if($password != $rpassword) {
               echo("<b>Attenzione: </b>Le due password si devono corrispondere<br>");
       } else {
               $password_error = false;
       }
    
       //Controlla che nell'ultimo campo sia stato inserito un indirizzo email
       for($i=0; $i<strlen($email); $i++) {
               if($email* == "@") $email_error = false;
       }
    
       if($email_error == true) {
               echo("<b>Attenzione: </b>L'indirizzo email fornito non e corretto<br>");
       }
    

    //Se il controllo ha successo, effettua la registrazione
    if($form_error == false && $password_error == false && $email_error == false) {
    include("config.php");

               //Effettua la connessione al database
               $connect = mysql_connect($db_host,$db_user,$db_pass) or die("Connessione fallita: ".mysql_error());
               mysql_select_db($db_name);
    
               //Controlla che l'username scelto non sia gia  esistente:
               $user_exists = false;
               $query = mysql_query("SELECT $field_username FROM $tbl_name");
               while($user = mysql_fetch_assoc($query)) {
                       if($username == $user["$field_username"]) $user_exist = true;
               }
    
           //Se l'username e esistente si invia un messaggio d'errore, altrimenti si prosegue con la registrazione
           if($user_exist == true) {
                       echo("<b>Attenzione: </b>L'username scelto e gia  presente nel database<br>");
                       mysql_close($connect);
               } else {
                       mysql_query("INSERT INTO $tbl_name ($field_username,$field_password,$field_email) VALUES('$username','$password','$email')");
                       mysql_close($connect);
                       echo("<script type=\"text/javascript\">document.location = \"$redirect_page\"</script>");
               }
       }
    

    }
    ?>
    [/php]bene ..mi da errore dicendomi che username password e email sono variabili indefinite.

    ho anche creato un database dal nome registra con tabella dal nome utenti
    con 4 campi
    id notnull id_autoincrement chiave
    username notnull unica
    password notnull unica
    email notnull unica

    grazie 🙂


  • ModSenior

    registra.php
    [php]
    table>
    <tr><td>Username:</td><td><input name="username" type="text" /></td></tr>
    <tr><td>Password:</td><td><input name="password" type="password" /></td></tr>
    <tr><td>Ripeti password:</td><td><input name="rpassword" type="password" /></td></tr>
    <tr><td>E-Mail:</td><td><input name="email" type="text" /></td></tr>
    <tr><td colspan="2" align="right"><input name="submit" type="submit" value="Invia" /></td></tr>
    </table>
    </form>

    <?
    $form_error = true;
    $password_error = true;
    $email_error = true;

    if(isset($_POST['submit'])) {
    $username= (isset($_POST['username'])) ? trim($_POST['username']) : '';
    $password=(isset($_POST['password'])) ? trim($_POST['password']) : '';
    $rpassword=(isset($_POST['rpassword'])) ? trim($_POST['rpassword']) : '';
    $email= (isset($_POST['email'])) ? trim($_POST['email']) : '';
    //Controlla che tutti i campi siano stati riempiti
    if($username == "" || $password == "" || $rpassword == "" || $email == "") {
    echo("<b>Attenzione: </b>Devi completare tutti i campi<br>");
    } else {
    $form_error = false;
    }

       //Controlla che le due password si corrispondano
       if($password != $rpassword) {
               echo("<b>Attenzione: </b>Le due password si devono corrispondere<br>");
       } else {
               $password_error = false;
       }
    
       //Controlla che nell'ultimo campo sia stato inserito un indirizzo email
       for($i=0; $i<strlen($email); $i++) {
               if($email* == "@") $email_error = false;
       }
    
       if($email_error == true) {
               echo("<b>Attenzione: </b>L'indirizzo email fornito non e corretto<br>");
       }
    

    //Se il controllo ha successo, effettua la registrazione
    if($form_error == false && $password_error == false && $email_error == false) {
    include("config.php");

               //Effettua la connessione al database
               $connect = mysql_connect($db_host,$db_user,$db_pass) or die("Connessione fallita: ".mysql_error());
               mysql_select_db($db_name);
    
               //Controlla che l'username scelto non sia gia  esistente:
               $user_exists = false;
               $query = mysql_query("SELECT $field_username FROM $tbl_name");
               while($user = mysql_fetch_assoc($query)) {
                       if($username == $user["$field_username"]) $user_exist = true;
               }
    
           //Se l'username e esistente si invia un messaggio d'errore, altrimenti si prosegue con la registrazione
           if($user_exist == true) {
                       echo("<b>Attenzione: </b>L'username scelto e gia  presente nel database<br>");
                       mysql_close($connect);
               } else {
                       mysql_query("INSERT INTO $tbl_name ($field_username,$field_password,$field_email) VALUES('$username','$password','$email')");
                       mysql_close($connect);
                       echo("<script type=\"text/javascript\">document.location = \"$redirect_page\"</script>");
               }
       }
    

    }
    ?>
    [/php]

    comuqne cosi da sempre gli echo di errore, visto che metti le variabili a true, e non cambiano mai di stato...


  • User

    cosi pero con variabilie true non va avanti fino a quando gli errori di compilazione non sono risolti una volta risolti passano a false tu cosa mi suggerisci di fare!!!!
    per risolvere ...
    anche se ho visto il tuo post e davvero fatto bene se non riesco a risolvere il mio di errore passo al tuo che mi sa che e' meglio.
    cmq secondo te?


  • ModSenior

    ah si... non avevo fatto caso che passavano a false, in linea teorica può andare...

    PS le password meglio se nel database metti un hash in md5...


  • User

    come posso fare per inserirlo ..ti ricordo che sono un po alle prime armi in php e sql quindi adesso so un po lento ....
    l'errore continua a darmelo ma cosa strana e che nel db non registra nulla...


  • ModSenior

    puoi incollare l'errore...


  • User

    Notice: Undefined index: username in c:\programmi\easyphp1-8\www\registra.php on line 13

    Notice: Undefined index: password in c:\programmi\easyphp1-8\www\registra.php on line 14

    Notice: Undefined index: rpassword in c:\programmi\easyphp1-8\www\registra.php on line 15

    Notice: Undefined index: email in c:\programmi\easyphp1-8\www\registra.php on line **16

    questo è l'errore che mi da.

    **


  • ModSenior

    ma ha i fatto quelle modifiche che ti ho detto io? perchè con quelle modifiche è impossibile che ti da questi notice...


  • User

    di modifiche ti riferisci solo all'aggiunta di questo:
    $username= (isset($_POST['username'])) ? trim($_POST['username']) : '';
    $password=(isset($_POST['password'])) ? trim($_POST['password']) : '';
    $rpassword=(isset($_POST['rpassword'])) ? trim($_POST['rpassword']) : '';
    $email= (isset($_POST['email'])) ? trim($_POST['email']) : '';

    se e solo questo si ho aggiunto il pezzo da te suggerito.

    pero mi sorge un dubbio io ho creato solo 3 cose
    config.php
    registra.php
    index.php
    propio in index.php non ho fatto riferimento perninte al codice php
    puo essere dovuto a questo?


  • ModSenior

    @tapin said:

    propio in index.php non ho fatto riferimento perninte al codice php
    puo essere dovuto a questo?

    cioè?


  • User

    cioe' non ho messo niente che faccia riferimento al php... nulla solo una pagina bianca con i relativi
    <head>
    </head
    <body>
    </body>
    </html>

    basta ...puo essere dovuto a questo?


  • ModSenior

    no...

    boh a me sembra tutto giusto... non sò come mai vedi i notice...


  • User

    con il tuo permesso provo il tuo di login e vediamo cosa mi dice speriamo bene...
    un attimo di pazienza.. e ti dico tutto.


  • User

    con il tuo mi da questo errore

    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\config.php:14) in c:\programmi\easyphp1-8\www\registrati.php on line 51


  • ModSenior

    O.o

    prima di quell'errore mostra qualcosa?

    boh.... e l'ho pure testato prima di postarlo...


  • User

    no.... mostra la pagina index.php nel modo in cui e stata scritta e poi cliccando su registrazione inserisco i dati invio e alla pagina successiva mi compare l'errore.. citato prima


  • ModSenior

    controlla che prima di <?php ci siano degli a capo...

    cioè la pagina cosi
    [php]

    <?php
    // codice
    [/php]
    che magari prende quello come output...


  • User

    adesso mi compare questo dopo che ho dati gli spazi di 1 solo invio a tutti i files :
    **questo errore adesso mi compare nella pagina index.php

    Warning**: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\index.php:2) in c:\programmi\easyphp1-8\www\config.php on line 4