Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Controllo su Login e reindirizzamento

    Salve! Attualmente gestisco un sito e mi chiedevo quale fosse il modo per effettuare un controllo sul login, in modo da reinderizzarlo altrove. Vi spiego meglio: ho a disposizione due categorie (A e B). Quindi se l'utente in questione corrisponde a B, ha un percorso diverso da svolgere. Come posso fare?
    Vi posto una parte di codice, per farvi capire come sto messo:

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


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

    // 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 ''

    // 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);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT user FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1");

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['id'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!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</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="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    La cosa probabilmente migliore è assegnare all'utente una categoria in fase di registrazione e inserirla in un campo del db, così quando l'utente effettua il login vedi a quale categoria appartiene e lo reindirizzi di conseguenza.

    Altrimenti puoi mettere una select nel form di login e reindirizzarlo in base a quel valore, però a quel punto è l'utente che decide dove venire inviato e non tu, quindi valuta bene quale opzione è più adatta per il tuo caso specifico.

  3. #3
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    La cosa probabilmente migliore è assegnare all'utente una categoria in fase di registrazione e inserirla in un campo del db, così quando l'utente effettua il login vedi a quale categoria appartiene e lo reindirizzi di conseguenza.

    Altrimenti puoi mettere una select nel form di login e reindirizzarlo in base a quel valore, però a quel punto è l'utente che decide dove venire inviato e non tu, quindi valuta bene quale opzione è più adatta per il tuo caso specifico.
    Quello che noi già facciamo è inserire tutti i dati utente tramite un form all'interno del db, così come la categoria, A e B per l'appunto. Quando effettuano il login, vorremmo diramarli o in una zona o in un'altra del sito, perché vedrebbero cose diverse.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Ok quindi la prima soluzione che ti ho descritto è quella che fa al caso tuo, recuperi la categoria dell'utente e lo reindirizzi di conseguenza dopo il login.

  5. #5
    Non devo modificare nulla nel codice che ho postato sopra? Come faccio a fare quello che dici tu in esempio pratico?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Non so come è strutturato il tuo db, quindi la categoria utente devi recuperartela tu.
    Mettiamo che tu abbia recuperato la categoria e che sia nella variabile $cat.
    A questo punto devi sostituire:

    codice:
    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    con:

    codice:
    // reindirizzo l'utente
    if ($cat == 'categoria1') {
        header('Location: privata1.php');
        exit;
    } elseif ($cat == 'categoria2') {
        header('Location: privata2.php');
        exit;
    }
    Ovviamente sistemando i nomi delle categorie e le "Location" con quelle del tuo codice (O usando parametri GET, vedi tu).

    Per fare in modo che un utente di una categoria non possa vedere l'altra e viceversa fai un controllo sulla categoria utente anche all'interno della pagina di ogni singola categoria. In questo modo se un utente loggato dovesse inserire manualmente l'url di una categoria a cui non appartiene non potrebbe comunque vederla.

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




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


    // 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 ''
    $Categoria = (isset($_POST['Categoria'])) ? trim($_POST['Categoria']) : '';


    // 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);
    $Categoria = addslashes($Categoria);
    }


    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);


    // Controllo l'utente esiste
    $query = mysql_query("SELECT user FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1");


    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);


    // Creo una variabile di sessione
    $_SESSION['login'] = $login['user'];


    // reindirizzo l'utente
    if ($Categoria == 'A') {
    header('Location: registrati.php');
    exit;
    } elseif ($Categoria == 'B') {
    header('Location: privata.php');
    exit;
    }
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>

    Ho provato in questo modo, ma lo script non dà segni di vita.

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.