Visualizzazione dei risultati da 1 a 6 su 6

Discussione: creare modulo Login

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181

    creare modulo Login

    Premetto col dire che di php non so quasi un benemerito grillo(tranne alcuni funzioni),quindi per iniziare bene ho deciso di provare a creare un sistema di registrazione e login,per la registrazione mi sono arrangiato cercando un po' su internet,ma ho problemi con il login...

    Ho creato questa tabella:

    codice:
    <?php
    
    include ('configurazione.php');
    
    mysql_query("CREATE TABLE `tabella_registrati` (
    `id` INT( 40 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `nick` VARCHAR( 255 ) NOT NULL ,
    `mail` VARCHAR( 255 ) NOT NULL ,
    `pass` VARCHAR( 255 ) NOT NULL ,
    ) ENGINE = MYISAM") or die ("Errore durante la connessione");
    
    echo "Installazione riuscita";
    
    ?>

    Adesso vengono i problemi:
    codice:
    <?php
    
    include ('configurazione.php');
    
    ?>
    
    <form action='?inviodati=ok' method='POST'>
    
    Mail
    
    <input type='text' name='mail'>
    
    
    Password
    
    <input type='password' name='pass'>
    
    
    <input type='submit' value='Login'>
    
    
    </form>
    
    <?php
    
    $mail = $_POST['mail'];
    $pass = $_POST['pass'];
    
    $sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'");
    
    $num_rows = mysql_num_rows($sql); 
    
    ?>
    c'è un modo per controllare se la mail corrisponde alla password?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Codice PHP:
    $sql mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail' AND password = '$password' "); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Ehm si scusa,codice riciclato e non cancellato ,l'avevo usato per controllare se l'email esisteva già...

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    ok,credo di aver risolto...ho un altro problema ora:mi viene restituito un errore che però non riesco a trovare:
    codice:
    <?php
    
    // includiamo il file di connessione al database 
    
    include ('configurazione.php');
    
    
    
    // creiamo il nostro modulo di registrazione
    
    ?>
    
    
    <form action='?inviodati=ok' method='POST'>
    
    User Name
    
    <input type='text' name='UserName'>
    
    
    Mail
    
    <input type='text' name='mail'>
    
    
    Password
    
    <input type='password' name='pass'>
    
    
    Ripeti Password
    
    <input type='password' name='pass2'>
    
    
    <input type='submit' value='Completa Registrazione'>
    
    
    </form>
    
    
    
    <?php
    
    // attraverso un if controlliamo che il form sia stato inviato 
    
    if ( $_GET['inviodati'] == "ok" ) {
    
    
    
    // recuperiamo i dati inviati con il form
    
    
    $UserName = $_POST['UserName'];
    
    $mail = $_POST['mail'];
    
    $pass1 = $_POST['pass'];
    
    $pass2 = $_POST['pass2'];
    
    
    // ora controlliamo che i campi siano stati tutti compilati
    
    if ( $mail == TRUE && $UserName == TRUE && $pass1 == TRUE && $pass2 == TRUE )  {
    
    
    // controlliamo se il campo mail � stato scritto in maniera errata
    
    
    if( $UserName == TRUE ){
    
    $sql2 = mysql_query("SELECT * FROM tabella_registrati WHERE nick = '$UserName'") or die ("Username già occupato");
    
    $num_rows = mysql_num_rows($sql2); 
    
    $email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail); 
    if ( $email == TRUE ) {
    
    
    
    // controlliamo se l'mail � presente gi� nel database
    
    $sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("Mail già occupata");
    
    $num_rows = mysql_num_rows($sql); 
    
    if ( $num_rows == 0 ) {
    
    // ora controlliamo che le password inserite siano identiche
    
    if ( $pass1 == $pass2 ) {
    
    
    // infine criptiamo la password con md5
    
    $pass_md5 = md5($pass1);
    
    mysql_query("INSERT INTO tabella_registrati
                 (id , nick , mail , pass )
                 VALUES 
                 ('','$UserName','$mail' , '$pass_md5' )") OR DIE(mysql_error());
    
    // e inviamo una mail con la riuscita registazione
    
    $messagem = "Grazie per esserti iscritto.Ecco i tuoi dati: $UserName\r\nPassword: $pass1";
    
    
    mail ($mail, "Registrazione Farebury", $messagem, "From: Farebury@bury.it");
    
    // messaggio da far visualizzare all'utente finale
    
    echo "Complimenti registrazione effettuata con successo.";
    
    
    } else {
    
    echo "Le password non corrispondono";
    
    
    }
    
    } else {
    
    echo "Indirizzo mail già utilizzato.";
    
    }
    
    } else {
    
    echo "La tua mail non è idonea, per la registrazione.";
    
    } else {
    
    echo "Username già occupato.";
    
    }
    } else {
    
    echo "Tutti i campi sono obbligatori.";
    }
    }
    
    ?>
    e questo è l'errore che mi restituisce:
    codice:
    Parse error: syntax error, unexpected T_ELSE in /home/oxoc/public_html/registrazione.php on line 124

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    C'è un else sbagliato, eccoti la versione corretta.

    Codice PHP:
    <?php

    // attraverso un if controlliamo che il form sia stato inviato 

    if ( $_GET['inviodati'] == "ok" ) {



    // recuperiamo i dati inviati con il form


    $UserName $_POST['UserName'];

    $mail $_POST['mail'];

    $pass1 $_POST['pass'];

    $pass2 $_POST['pass2'];


    // ora controlliamo che i campi siano stati tutti compilati

    if ( $mail == TRUE && $UserName == TRUE && $pass1 == TRUE && $pass2 == TRUE )  {


    // controlliamo se il campo mail � stato scritto in maniera errata


    if( $UserName == TRUE ){

    $sql2 mysql_query("SELECT * FROM tabella_registrati WHERE nick = '$UserName'") or die ("Username già occupato");

    $num_rows mysql_num_rows($sql2); 

    $email eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail); 
    if ( 
    $email == TRUE ) {



    // controlliamo se l'mail � presente gi� nel database

    $sql mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("Mail già occupata");

    $num_rows mysql_num_rows($sql); 

    if ( 
    $num_rows == ) {

    // ora controlliamo che le password inserite siano identiche

    if ( $pass1 == $pass2 ) {


    // infine criptiamo la password con md5

    $pass_md5 md5($pass1);

    mysql_query("INSERT INTO tabella_registrati
                 (id , nick , mail , pass )
                 VALUES 
                 ('','
    $UserName','$mail' , '$pass_md5' )") OR DIE(mysql_error());

    // e inviamo una mail con la riuscita registazione

    $messagem "Grazie per esserti iscritto.Ecco i tuoi dati: $UserName\r\nPassword: $pass1";


    mail ($mail"Registrazione Farebury"$messagem"From: [email]Farebury@bury.it[/email]");

    // messaggio da far visualizzare all'utente finale

    echo "Complimenti registrazione effettuata con successo.";


    } else {

    echo 
    "Le password non corrispondono";


    }

    } else {

    echo 
    "Indirizzo mail già utilizzato.";

    }

    } else {

    echo 
    "La tua mail non è idonea, per la registrazione.";


    } else {

    echo 
    "Username utilizzato";
    }
    }else {
        echo 
    "Tutti i campi sono obbligatori.";
    }
        
    }
    Comunque ti consiglio di indentare il codice, è impossibile capire a quale if si riferiscono alcuni else. Infatti con una buona indentazione non avresti avuto problemi a trovare l'errore.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Grazie,ho un ultimissimo problema(anche perchè non ho fatto altro)...ho letto che per mantenere un utente collegato bisogna creare una sessione,io ne ho creato una con i cookie,ma non funziona...
    Questo è il codice del login.php:
    Codice PHP:
    <?php 
    include 'dbc.php';

    $err = array();

    foreach(
    $_GET as $key => $value) {
        
    $get[$key] = filter($value); //get variables are filtered.
    }

    if (
    $_POST['doLogin']=='Login')
    {

    foreach(
    $_POST as $key => $value) {
        
    $data[$key] = filter($value); // post variables are filtered
    }


    $user_email $data['usr_email'];
    $pass $data['pwd'];


    if (
    strpos($user_email,'@') === false) {
        
    $user_cond "user_name='$user_email'";
    } else {
          
    $user_cond "user_email='$user_email'";
        
    }

        
    $result mysql_query("SELECT `id`,`pwd`,`full_name`,`approved`,`user_level` FROM users WHERE 
               
    $user_cond
                AND `banned` = '0'
                "
    ) or die (mysql_error()); 
    $num mysql_num_rows($result);

      
    // Match row found with more than 1 results  - the user is authenticated. 
        
    if ( $num ) { 
        
        list(
    $id,$pwd,$full_name,$approved,$user_level) = mysql_fetch_row($result);
        
        if(!
    $approved) {
        
    //$msg = urlencode("Account not activated. Please check your email for activation code");
        
    $err[] = "Account not activated. Please check your email for activation code";
        
        
    //
        
    ("Location: login.php?msg=$msg");
         
    //exit();
         
    }
         
            
    //check against salt
        
    if ($pwd === PwdHash($pass,substr($pwd,0,9))) { 
        if(empty(
    $err)){            

         
    // this sets session and logs user in  
           
    session_start();
           
    session_regenerate_id (true); //prevent against session fixation attacks.

           // this sets variables in the session 
            
    $_SESSION['user_id']= $id;  
            
    $_SESSION['user_name'] = $full_name;
            
    $_SESSION['user_level'] = $user_level;
            
    $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
            
            
    //update the timestamp and key for cookie
            
    $stamp time();
            
    $ckey GenKey();
            
    mysql_query("update users set `ctime`='$stamp', `ckey` = '$ckey' where id='$id'") or die(mysql_error());
            
            
    //set a cookie 
            
           
    if(isset($_POST['remember'])){
                      
    setcookie("user_id"$_SESSION['user_id'], time()+60*60*24*COOKIE_TIME_OUT"/");
                      
    setcookie("user_key"sha1($ckey), time()+60*60*24*COOKIE_TIME_OUT"/");
                      
    setcookie("user_name",$_SESSION['user_name'], time()+60*60*24*COOKIE_TIME_OUT"/");
                       }
              
    header("Location: Homepage.php");
             }
            }
            else
            {
            
    //$msg = urlencode("Invalid Login. Please try again with correct user email and password. ");
            
    $err[] = "Login Invalido. Riprova con  email e password corretti.";
            
    //header("Location: login.php?msg=$msg");
            
    }
        } else {
            
    $err[] = "Errore - Login Invalido. Utente Inesistente";
          }        
    }
                         
                         

    ?>
    <html>
    <head>
    <title>Login Utenti</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
    <script language="JavaScript" type="text/javascript" src="js/jquery.validate.js"></script>
      <script>
      $(document).ready(function(){
        $("#logForm").validate();
      });
      </script>
    <link href="styles.css" rel="stylesheet" type="text/css">

    </head>

    <body>
    [url="http://forum.it.altervista.org/../Homepage.htm"][img]http://forum.it.altervista.org/../immagini/logo.png[/img][/url]


    <table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
      <tr> 
        <td colspan="3"></td>
      </tr>
      <tr> 
        <td width="160" valign="top">

    </p>
          

     </p>
          

    </p>
          

    </p>
          

    </p></td>
        <td width="732" valign="top">

    </p>
          <h3 class="titlehdr">Login Utenti
          </h3>  
          


          <?php
          
    /******************** ERROR MESSAGES*************************************************
          This code is to show error messages 
          **************************************************************************/
          
    if(!empty($err))  {
           echo 
    "<div class=\"msg\">";
          foreach (
    $err as $e) {
            echo 
    "$e 
    "
    ;
            }
          echo 
    "</div>";    
           }
          
    /******************************* END ********************************/      
          
    ?></p>
          <form action="login.php" method="post" name="logForm" id="logForm" >
            <table width="65%" border="0" cellpadding="4" cellspacing="4" class="loginform">
              <tr> 
                <td colspan="2"></td>
              </tr>
              <tr> 
                <td width="28%">Username / Email</td>
                <td width="72%"><input name="usr_email" type="text" class="required" id="txtbox" size="25"></td>
              </tr>
              <tr> 
                <td>Password</td>
                <td><input name="pwd" type="password" class="required password" id="txtbox" size="25"></td>
              </tr>
              <tr> 
                <td colspan="2"><div align="center">
                    <input name="remember" type="checkbox" id="remember" value="1">
                    Ricordami</div></td>
              </tr>
              <tr> 
                <td colspan="2"> <div align="center"> 
                    

     
                      <input name="doLogin" type="submit" id="doLogin3" value="Login">
                    </p>
                    

    [url="register.php"]Registrati[/url]<font color="#FF6600"> 
                      |</font> [url="forgot.php"]Password Dimenticata[/url] <font color="#FF6600"> 
                      </font></p>
                    <!--

    <span style="font: normal 9px verdana">Powered by <a href="http://php-login-script.com">PHP 
                      Login Script v2.3</a></span></p>-->
                  </div></td>
              </tr>
            </table>
            <div align="center"></div>
            <p align="center"> </p>
          </form>
          

    </p>
           
          </td>
        <td width="196" valign="top"></td>
      </tr>
      <tr> 
        <td colspan="3"></td>
      </tr>
    </table>

    </body>
    </html>
    e questo della Homepage.php:
    codice:
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Farebury</title>
    <link rel="icon" href="../../favicon.ico" />
    </head>
    
    <body>
    
    
    <table width='75%'>
    <tr>
      <td></td>
      <form action="login.php" method="post" name="logForm" id="logForm" >
      <td width="28%">Username / Email</td>
      <td width="50%"><input name="usr_email" type="text" class="required" id="txtbox" size="25"></td>
      <td>Password</td>
      <td><input name="pwd" type="password" class="required password" id="txtbox" size="25"></td>
      <td><input name="doLogin" type="submit" id="doLogin3" value="Login"></td>
      <td width='80'><input name="remember" type="checkbox" id="remember" value="1" width='100'>Ricordami</td>
      </form>
      <td>Registrati<font color="#FF6600"> <font color="#FF6600">
     |</font> Password Dimenticata <font color="#FF6600"></td>
    </tr>
    </table>
    </body>
    </html>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.