Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    Semplice login e password

    Ciao a tutti....

    Devo fare un semplice login.

    In tutte le pagine "protette" metto questo pezzo di codice
    Codice PHP:

    session_start
    ();
    if(!isset(
    $_SESSION["autorizzato"]))
      
    header("Location: nonautorizzato.php"
    Che manderà alla pagina "nonautorizzato.php" l'utente che non ha ancora messo la password

    E infine ho creato la pagina autorizza.php

    ... Però autorizza.php mi da pagina bianca.....
    La user e la password la devo confrontare con i valori presenti nel mio db nella tabella "utenti"

    Pagina nonautorizzato:

    Codice PHP:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>


    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <
    title>Utente non Registrato</title>




    <
    body>



                <
    p align="center">Se si dispone di tale autorizzazione immettere user e password</p>


    <
    form method="post" action="autorizza.php">

    <
    p width="340" align="center">[img]immagini/errore.jpg[/img]</p>

    <
    p align="center">User :<input typetext name="user" value="">
    Password :<input typetext name="pass" value=""> </p>

    <
    p align="center"> <input type="submit" name="invia" value="invia"> </p>

    </
    form>


    </
    body>
    </
    html
    pagina autorizza

    Codice PHP:

    <?php

    if(!isset($_POST["pass"]))
      
    header("Location: nonautorizzato.php");
    $pass htmlentities($pass);


    /* Variabili precedenti */
    $user=$_POST['user'];
    $pass=$_POST['pass'];

    /* Connessione e selezione del database */

    $cn mysql_connect("localhost""xxx""xx")
    or die(
    "[b]Errore:[/b] Impossibile connettersi al Database mysql");

    mysql_select_db("xxx",$cn)
    or die(
    "[b]Errore:[/b] Impossibile accedere al Database Mysql");


    $query="SELECT * FROM utenti WHERE user='$user' AND pass='$pass' ";


    $queryresult mysql_query($query,$cn)
    or die(
    "[b]Errore:[/b] Usare il tasto Indietro del Browser per reinserire l'user e password'");



    /* Controllo se si hanno le autorizzazioni necessarie */

    $row mysql_fetch_assoch($queryresult);
    print_r($row);

    ?>

  2. #2
    1) Sei molto vulnerabile da una SQL injection
    2) le password dovrebbero essere in hash
    3) fai un https per la criptazione
    4) spero che il $_SESSION[autorizzato] derivi da un sessionid();

    Queste giusto per citarne alcune , poi scusa questo a cosa serve?

    $user=$_POST['user'];
    $pass=$_POST['pass'];

    usa le variabili $_POST direttamente nella query

  3. #3
    Lo so... ma non devo proteggere cose segretissime...

    era solo una cosa "fashion"

    Mi serve una cosa che funzioni....

    $user=$_POST['user'];
    $pass=$_POST['pass'];

    sono delle variabili post che vengono passate alla pagina per l'autenticazione....

    Se hai uno script semplice semplice è ben accetto.....

    Il mio non va.... :master: :master:

  4. #4
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da silverwings
    1) Sei molto vulnerabile da una SQL injection
    2) le password dovrebbero essere in hash
    3) fai un https per la criptazione
    4) spero che il $_SESSION[autorizzato] derivi da un sessionid();
    servono tutte queste cose per avere un login "sicuro"?
    Manca qualcosa?

    Qualche link dove viene spiegato come costruire un login sicuro?

    E' meglio costruirsi un login o magari usare uno script pronto affidabile?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  5. #5
    Io di script ne ho provati tanti ma nessuno funzionava e il manuale erano tutti in inglese...


    Aiutateci..

  6. #6

  7. #7
    io ne ho realizzato uno formidabile con anche il tasto di spunta "Ricorda accesso" se lo vuoi te lo passo
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  8. #8
    Originariamente inviato da hacker_nait
    io ne ho realizzato uno formidabile con anche il tasto di spunta "Ricorda accesso" se lo vuoi te lo passo
    Te ne sarei grato...

  9. #9
    Codice PHP:

    // Funzione da chiamare all'inizio di ogni pagina, restituisce false se non loggato, true se loggato o se il cookie esiste ed è valido

    function is_logged() {
        global 
    $C$connessione;
        if (
    $_SESSION['logged'] == 1) {
            
    $query "UPDATE utenti SET last_login='".date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s")."' WHERE id ='".$_SESSION['userid']."'";
            
    $result mysql_query($query$connessione) or die(mysql_error());
            return 
    true;
        } else {
            if (!empty(
    $_COOKIE['nomesito'])) {
                
    $hashusername substr($_COOKIE['nomesito'],0,32);
                
    $hashpassword substr($_COOKIE['nomesito'],32,32);
                
    $query "SELECT * FROM utenti WHERE MD5(username)='".addslashes($hashusername)."' and MD5(password)='".addslashes($hashpassword)."'";
                
    $result mysql_query($query$connessione) or die(mysql_error());
                
    $totalRows mysql_num_rows($result);
                if(
    $totalRows == 0) {
                    
    setcookie ('nomesito'""time() - 3600);
                    return 
    false;
                } else {
                    
    $row mysql_fetch_assoc($result);
                    
    $query "UPDATE utenti SET last_login='".date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s")."' WHERE id ='".$_SESSION['userid']."'";
                    
    $result mysql_query($query$connessione) or die(mysql_error());
                    
    $_SESSION['logged'] = 1;
                    
    $_SESSION['userid'] = $row['id'];
                    return 
    true;
                }
            } else {
                return 
    false;
            }
        }
    }

    // Funzione di login, il parametro 'ricorda' basta che non sia vuoto per attivarsi; restituisce 0 se il login è andato a buon fine, 1 se l'utente nn esiste o la pass non è valida, 2 se i campi non sono compilati

    function login($username$password$ricorda) {
        global 
    $C$connessione;
        if(!empty(
    $username) and !empty($password)) {
            
    $query "SELECT * FROM utenti WHERE username='".$username."' and password='".$password."'";
            
    $result mysql_query($query$connessione) or die(mysql_error());
            
    $totalRows mysql_num_rows($result);
            if(
    $totalRows == 0) {
                return 
    1;
            } else {
                
    $row mysql_fetch_assoc($result);
                if(
    $row['status'] < 0) return 3;
                if(
    $ricorda != "") {
                    
    setcookie('nomesito'md5($row['username']).md5($row['password']), time()+2419200);
                }
                
    $_SESSION['logged'] = 1;
                
    $_SESSION['userid'] = $row['id'];
                return 
    0;
            }
        } else {
            return 
    2;
        }
    }

    // Funzione di logout, da chiamare in una pagina che, se la fuzione restituisce true, esegua un header per Location alla home

    function logout() {
        global 
    $C$connessione;
        
    setcookie('nomesito'"logout"time()-3600);
        unset(
    $_SESSION['logged']);
        if (
    $_SESSION['logged'] == 1) {
            return 
    false;
        } else {
            return 
    true;
        }

    La tabella del db deve avere i campi id, username (VARCHAR), password (VARCHAR BINARY in chiaro) e last_login (in formato DATETIME)

    Nelle pagine protette avrai a disposizione la variabile $_SESSION['userid'] (che coincide con l'id dell'utente nel db).

    Da mettere nel config.php:

    Codice PHP:
    $hostname_connessione '62.149.***.***';                // HOST OF THE MYSQL OFTEN localhost
    $username_connessione 'Sql******';                        // YOUR USERNAME FOR MYSQL
    $password_connessione '********';                        // YOUR PASSWORD FOR MYSQL
    $database_connessione 'Sql1****';                    // YOUR DATABASE NAME 
    E, prima di qualsiasi print o scritta in HTML, inserire questo:
    Codice PHP:
    ob_start();
    if(
    $connessione mysql_connect($hostname_connessione$username_connessione$password_connessione)) {
        if(!
    mysql_select_db($database_connessione))    die("Impossibile selezionare il database. Riprovare più tardi.");
    } else {
        die(
    "Impossibile connettersi al database. Riprovare più tardi.");
    }
    session_start(); 
    fammi sapere

    (preciso che questo sistema di login è stato progettato per siti in cui PHP.ini è settato con le opzioni per slashare automaticamente le variabili globali $_POST, $_GET e affini)
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  10. #10
    Ciao...

    Grazie per il tuo script.... era proprio quello che cercavo...

    Però non riesco a farlo andare.....
    Ecco che cosa ho fatto.

    Una pagina login.php

    Codice PHP:
    <?
    function login($username$password$ricorda) {
        global 
    $C$connessione;
        if(!empty(
    $username) and !empty($password)) {
            
    $query "SELECT * FROM utenti WHERE username='".$username."' and password='".$password."'";
            
    $result mysql_query($query$connessione) or die(mysql_error());
            
    $totalRows mysql_num_rows($result);
            if(
    $totalRows == 0) {
                return 
    1;
            } else {
                
    $row mysql_fetch_assoc($result);
                if(
    $row['status'] < 0) return 3;
                if(
    $ricorda != "") {
                    
    setcookie('nomesito'md5($row['username']).md5($row['password']), time()+2419200);
                }
                
    $_SESSION['logged'] = 1;
                
    $_SESSION['userid'] = $row['id'];
                return 
    0;
            }
        } else {
            return 
    2;
        }

    ?>
    pagina config.php
    Codice PHP:
    $hostname_connessione 'localhost';                // HOST OF THE MYSQL OFTEN localhost
    $username_connessione 'xxx';                        // YOUR USERNAME FOR MYSQL
    $password_connessione 'xxx';                        // YOUR PASSWORD FOR MYSQL
    $database_connessione 'xxx'
    Pagina prova.php (che è la mia pagina "protetta per vedere se va lo script")
    Codice PHP:
    <?
    function is_logged() {
        global 
    $C$connessione;
        if (
    $_SESSION['logged'] == 1) {
            
    $query "UPDATE utenti SET last_login='".date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s")."' WHERE id ='".$_SESSION['userid']."'";
            
    $result mysql_query($query$connessione) or die(mysql_error());
            return 
    true;
        } else {
            if (!empty(
    $_COOKIE['nomesito'])) {
                
    $hashusername substr($_COOKIE['nomesito'],0,32);
                
    $hashpassword substr($_COOKIE['nomesito'],32,32);
                
    $query "SELECT * FROM utenti WHERE MD5(username)='".addslashes($hashusername)."' and MD5(password)='".addslashes($hashpassword)."'";
                
    $result mysql_query($query$connessione) or die(mysql_error());
                
    $totalRows mysql_num_rows($result);
                if(
    $totalRows == 0) {
                    
    setcookie ('nomesito'""time() - 3600);
                    return 
    false;
                } else {
                    
    $row mysql_fetch_assoc($result);
                    
    $query "UPDATE utenti SET last_login='".date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s")."' WHERE id ='".$_SESSION['userid']."'";
                    
    $result mysql_query($query$connessione) or die(mysql_error());
                    
    $_SESSION['logged'] = 1;
                    
    $_SESSION['userid'] = $row['id'];
                    return 
    true;
                }
            } else {
                return 
    false;
            }
        }




    ob_start();
    if(
    $connessione mysql_connect($hostname_connessione$username_connessione$password_connessione)) {
        if(!
    mysql_select_db($database_connessione))    die("Impossibile selezionare il database. Riprovare più tardi.");
    } else {
        die(
    "Impossibile connettersi al database. Riprovare più tardi.");
    }
    session_start();
    ?>
    Inoltre ho impostato le variabili sul Db in questo modo (tabella utenti)




    La pagina di logout non l'ho fatta....

    ma scusa.... ma dov'è la pagina per inserire la user e password??

    Mi dici dove sbaglio ????


    Grazie in anticipo del tuo aiuto..... non sai neanche quanto...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.