Pagina 1 di 8 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 74
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    203

    Area protetta e sessioni

    Buongiorno,

    vi chiedo pervavore di aiutarmi a creare le pagine protette del mio sito "personali".
    Mi spiego meglio:

    io ho un database mysql nella quale ci sono gli utenti con le relative usr e pass.
    Ho inserito anche un ulteriore record con la pagina nella quale negono indirizzati una volta inseriti user e pass.

    Tutto funziona bene, l'unica cosa è che se io inserisco il percorso della pagina diretta e sono autenticato riesco ad entrare anche nelle pagine altrui...come posso fare?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    Non si capisce bene quale sia il tuo obbiettivo, per come lo hai descritto sembra che ogni utente registrato abbia una pagina personale che non viene popolata con dei dati presi dal db.

    cmq a quanto ho capito ognuno ha delle personal page, soltanto che quando ti autentichi con i dati di un utente riesci a visualizzare anche le pagine degli altri

    Potresti fare una pagina di controllo, mi spiego meglio....

    1.fai autenticare l'utente facendo una select sul db delle user e pass che l'utente ha inserito sul form


    2. se la select ha avuto esito positivo, fai memorizzare user - pass - id utente su delle variabili di sessione.

    3. dopo ti crei la pagina di controllo che di user, pass e id che includerai su tutte le pagine.
    In questo modo ogni volta che l'utente entrerà su una pagina non sua, lo script di controllo effettuerà una select dei suoi dati e lo riporterà solo ed esclusivamente sulla sue pagina


    esempio pratico.

    pagina di autenticazione

    Codice PHP:
    <?php
    session_start
    ();

    $select "select * from users where user = ".$_POST['user']." AND pass = ".$_POST['pss'].";";
    $query mysql_query($select);

    if(
    $query){
        if (
    mysql_num_rows($query)>0){

            
    $row mysql_fetch_assoc($query);

            
    $_SESSION['user'] = $row['user'];
            
    $_SESSION['pss'] = $row['pass'];
            
    $_SESSION['id'] = $row['id'];
            
    header("location: ".$row['pagina']);

        }else{
            echo 
    "<script language=javascript>alert('utente inesistente');</script>";
        }
    }else{
    echo 
    "<script language=javascript>alert('errore di connessione. riprova più tardi');</script>";
    }
    ?>

    Pagina di controllo


    Codice PHP:
    <?php
    session_start
    ();

    $select "select * from users where user = ".$_SESSION['user']." AND pass = ".$_SESSION['pss']."AND id = ".$_SESSION['id'].";";
    $query mysql_query($select);

    if(
    $query){
        if (
    mysql_num_rows($query)>0){

            
    $row mysql_fetch_assoc($query);

            
    header("location: ".$row['pagina']);

        }else{
            
    session_unset();
            echo 
    "<script language=javascript>alert('utente inesistente');</script>";
        }
    }else{
    session_unset();
    echo 
    "<script language=javascript>alert('errore di connessione. riprova più tardi');</script>";
    }
    ?>

    Questa pagina la includi in tutte le pagine

    include('controllo.php');



    Oppure, invece di andare a fare una select ogni volta che entri in una pagina, in fase di autenticazione memorizzi in session anche la pagina di destinazione per quell'utente

    Codice PHP:
    <?php
    session_start
    ();

    $select "select * from users where user = ".$_POST['user']." AND pass = ".$_POST['pss'].";";
    $query mysql_query($select);

    if(
    $query){
        if (
    mysql_num_rows($query)>0){

            
    $row mysql_fetch_assoc($query);

            
    $_SESSION['user'] = $row['user'];
            
    $_SESSION['pss'] = $row['pass'];
            
    $_SESSION['id'] = $row['id'];
            
    $_SESSION['pagina'] = $row['pagina'];
            
    header("location: ".$row['pagina']);

        }else{
            echo 
    "<script language=javascript>alert('utente inesistente');</script>";
        }
    }else{
    echo 
    "<script language=javascript>alert('errore di connessione. riprova più tardi');</script>";
    }
    ?>
    e nella pagina di controllo metterai


    Codice PHP:
    <?php
    session_start
    ();

    header('location: '.$_SESSION['pagina']);
    ?>

    cmq per creare delle personal page per ogni utente, ti consiglio di farlo attraverso l'uso del db.
    Quindi creare una sola pagina dedicata all'area personale di un utente e successivamente popolarla con i dati dell'utente autenticato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    203
    Grande!

    ti ringrazio moltissimo, ho modificato un po' il mio codice ma 1 cosa non funziona; mi manda nella pagina indicata nel record mysql, il problema è nel codice:

    <?php
    session_start();

    header('location: '.$_SESSION['pagina']);
    ?>

    da inserire nelle pagine protette di ciscun utente.....

    Beh questo non funziona, chiunque una volta effettuato il login entra...

  4. #4
    In entrata in ogni pagina personale..dovresti mettere un controllo!

    Tipo..

    controlli se nel db esiste un record con id=$_SESSION['id']

    Poi successivamente controlli se la pagina salvata nell'apposito campo..corrisponde a quella in cui sei..

    Se è la stessa continui la visualizzazione, altrimenti fai uscire un errore!


  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    203
    Non sò come metter giù il controllo...

    if ($row['id']== //è qui che non so...

  6. #6
    Codice PHP:
    $D=mysql_fetch_object(mysql_query("SELECT * FROM users WHERE id='$_SESSION['id'] '",$Connessione));

    if(
    $D!='' && $D->pagina==$_SERVER['PHP_SELF'])
     
    Visualizzi la pagina
    else
      
    Errore 
    Pressaoco così!

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    può andar bene anche quella soluzione

    oppure puoi fare cosi a inizio di ogni pagina.
    Codice PHP:
    <?php
    $path 
    $_SERVER['PHP_SELF'];
    $pagina basename($path);

    if (
    $pagina != $_SESSION['pagina']){

    header('location: pagina_di_errore.php');

    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    203
    così non funziona mi rimanda sempre alla pagina di errore

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    ma su $_session['pagina'] la registri la pagina che prendi dal db?

    controlla che $_session['pagina'] sia pieno quando esegui la pagina.

    all'inizio della pagina di destinazione, dopo aver fatto la login,fai un

    echo $_session['pagina'];
    exit;

  10. #10
    Originariamente inviato da hackerdm
    può andar bene anche quella soluzione

    oppure puoi fare cosi a inizio di ogni pagina.
    Codice PHP:
    <?php
    $path 
    $_SERVER['PHP_SELF'];
    $pagina basename($path);

    if (
    $pagina != $_SESSION['pagina']){

    header('location: pagina_di_errore.php');

    ?>
    Hai dimenticato di chiudere la parentesi graffa dell' IF

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.