Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Dati utente nel login

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118

    Dati utente nel login

    Ciao ragazzi,

    sto usando un classe per la gestione del login. Premetto che non sono super esperta di php, php5 peggio ancora... ma ho la necessità di risolvere la cosa senza poterci studiare molto.

    Devo passare l'utente alla pagina protetta ma non riesco.

    il sistema di login è cosi composto:

    Membership.php
    Mysql.php
    constants.php
    index.php




    1)Membership.php
    Codice PHP:
    <?php

    require 'Mysql.php';

    class 
    Membership {
        
        function 
    validate_user($un$pwd) {
            
    $mysql = New Mysql();
            
    $ensure_credentials $mysql->verify_Username_and_Pass($unmd5($pwd));
            
            if(
    $ensure_credentials) {
                
    $_SESSION['status'] = 'authorized';
                    
    $_SESSION['nome'] = '$un';
                
    header("location: index.php");
            } else return 
    "Please enter a correct username and password";
            
        } 
        
        function 
    log_User_Out() {
            if(isset(
    $_SESSION['status'])) {
                unset(
    $_SESSION['status']);
                
                if(isset(
    $_COOKIE[session_name()])) 
                    
    setcookie(session_name(), ''time() - 1000);
                    
    session_destroy();
            }
        }
        
        function 
    confirm_Member() {
            
    session_start();
            if(
    $_SESSION['status'] !='authorized'header("location: login.php");
        }
        
    }

    2)Mysql.php
    Codice PHP:
    <?php

    require_once 'includes/constants.php';

    class 
    Mysql {
        private 
    $conn;
        
        function 
    __construct() {
            
    $this->conn = new mysqli(DB_SERVERDB_USERDB_PASSWORDDB_NAME) or 
                          die(
    'There was a problem connecting to the database.');
        }
        
        function 
    verify_Username_and_Pass($un$pwd) {
                    
            
    $query "SELECT *
                    FROM utenti
                    WHERE nome = ? AND pswd = ?
                    LIMIT 1"
    ;
                    
            if(
    $stmt $this->conn->prepare($query)) {
                
    $stmt->bind_param('ss'$un$pwd);
                
    $stmt->execute();
                
                if(
    $stmt->fetch()) {
                    
    $stmt->close();
                    return 
    true;
                }
            }
            
        }
    }

    3)constants.php

    Codice PHP:
    <?php

    // Define constants here

    define('DB_SERVER''localhost');
    define('DB_USER''');
    define('DB_PASSWORD''');
    define('DB_NAME''');
    4) index.php

    Codice PHP:
    <?php

    require_once 'classes/Membership.php';
    $membership = New Membership();

    $membership->confirm_Member();

    ?>

    <!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=utf-8" />
    <link rel="stylesheet" href="css/default.css" />

    <!--[if lt IE 7]>
    <script type="text/javascript" src="js/DD_belatedPNG_0.0.7a-min.js"></script>
    <![endif]-->


    <title>Untitled Document</title>



    </head>

    <body>

    <div id="container">
        


            You've reached the page that stores all of the secret     launch codes!
            <?php echo "$un"?>
        </p>
        [url="login.php?status=loggedout"]Log Out[/url]
    </div>

    </body>
    </html>
    5) login.php
    Codice PHP:
    <?php
    session_start
    ();
    require_once 
    'classes/Membership.php';
    $membership = new Membership();

    // If the user clicks the "Log Out" link on the index page.
    if(isset($_GET['status']) && $_GET['status'] == 'loggedout') {
        
    $membership->log_User_Out();
    }

    // Did the user enter a password/username and click submit?
    if($_POST && !empty($_POST['username']) && !empty($_POST['pwd'])) {
        
    $response $membership->validate_User($_POST['username'], $_POST['pwd']);
    }
                                                            

    ?>


    <!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=utf-8" />
    <title>Login to access the secret files!</title>
    <link rel="stylesheet" type="text/css" href="css/default.css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    </head>

    <body>
    <div id="login">
        <form method="post" action="">
            <h2>Login [size="1"]enter your credentials[/size]</h2>
            


                <label for="name">Username: </label>
                <input type="text" name="username" />
            </p>
            
            


                <label for="pwd">Password: </label>
                <input type="password" name="pwd" />
            </p>
            
            


                <input type="submit" id="submit" value="Login" name="submit" />
            </p>
        </form>
        <?php if(isset($response)) echo "<h4 class='alert'>" $response "</h4>"?>
    </div>
    </body>
    </html>
    Non riesco in nessun modo a passare la user dell'utente loggato nella pagina index.php,
    dove sbaglio?

    grazie a tutti,
    lory

  2. #2
    Utente di HTML.it L'avatar di sir daniel
    Registrato dal
    Dec 2007
    residenza
    Romania
    Messaggi
    379
    nella funzione che valida user e password tu ti fai restituire vero in caso positivo.

    Ora hai 2 possibilità.
    Al posto del vero ti fai restituire l'user e lo aggiungi al get del redirect, in caso negativo ti fai restituire false.

    lasci la funzione così come sta e comunque aggiungi il get con l'username inserito dall'utente in TUTTI i casi (nota, estremamente rischioso perchè poco sicuro con attacchi di code/sql injection)

    ovviamente ti consiglio la prima.

    O meglio ancora dopo aver validato l'username, crei delle sessioni che ti porti ovunque finchè l'utente resta loggato.
    BUT. Honestly - Clarity without the comfortHonest writing by Nicola Mustone on the messy overlap between humans and tech.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118
    caro sir mi puoi fare un esempio pratico della tua prima soluzione?
    gz,
    Lory

  4. #4
    Utente di HTML.it L'avatar di sir daniel
    Registrato dal
    Dec 2007
    residenza
    Romania
    Messaggi
    379
    Originariamente inviato da lorymacri
    caro sir mi puoi fare un esempio pratico della tua prima soluzione?
    gz,
    Lory
    Mysql.php
    codice:
    <?php
    
    require_once 'includes/constants.php';
    
    class Mysql {
        private $conn;
        
        function __construct() {
            $this->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or 
                          die('There was a problem connecting to the database.');
        }
        
        function verify_Username_and_Pass($un, $pwd) {
                    
            $query = "SELECT *
                    FROM utenti
                    WHERE nome = ? AND pswd = ?
                    LIMIT 1";
                    
            if($stmt = $this->conn->prepare($query)) {
                $stmt->bind_param('ss', $un, $pwd);
                $stmt->execute();
                
                if($stmt->fetch()) {
                    $username = username restituito dal database (non so come fai perchè non ho mai usato le funzioni di mysqli come le usi tu, non so se sia un fetch_object, o fecth_array ecc...)
                    $stmt->close();
                    return $username;
                } else {
                    return false;
                }
            }
            
        }
    }
    in pratica cambia solo questo. Questa funzione ti restituirà l'username di chi si logga. Poi vedi tu dove metterlo... così come sta ora, se tutto va bene deve stampartelo nell'<h4> di $response.

    Funzionerà ugualmente perchè se restituisce un username è come se fosse vero, altrimenti sarà falso.
    BUT. Honestly - Clarity without the comfortHonest writing by Nicola Mustone on the messy overlap between humans and tech.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118
    ok, grazie sir...
    Lory

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    118
    se voglio aggiungere un ulteriore parametro tipo il livello di accesso?

    ho provato a fare una cosa del genere:

    In Merbership

    Codice PHP:
    function validate_level($levels) {
            
    $mysql = New Mysql();
            
    $ensure_levels $mysql->get_level($levels);
            
            if(
    $ensure_levels) {
                
    $_SESSION['levels'] = $levels;
            } else return 
    "3";
            
    }

    function 
    confirm_Member() {
            
    session_start();
            if(
    $_SESSION['status'] !='autorizzato' AND $_SESSION['un'] !=$un AND $_SESSION['levels'] != $levelsheader("location: home.php");
        } 
    In home

    Codice PHP:
    $_SESSION['levels'];
    $levels $_SESSION['levels']; 


    In mysql

    Codice PHP:
    function get_level($levels) {
            
            
    $query "SELECT levels FROM users";
            
            if(
    $stmt $this->conn->prepare($query)) {
                
    $stmt->bind_param('ss'$levels);
                
    $stmt->execute();
                
                if(
    $stmt->fetch()) {
                    
    $stmt->close();
                    return 
    $levels;
                } else {
                    return 
    false;
                }
            }
        } 
    dove sbaglio?

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