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

    Problema Area Riservata

    Ciao,
    ho creato un complesso sito con pagine di login, registrazione utente e via dicendo.
    il problema è che quando accedo tramite login alla mia pagina personale, la pagina ha un indirizzo del tipo: personale.php?id=34 dove id=34 identifica la mia pagina.
    ora ho notato che se cambio fisicamente il valore dell'id (per esempio 35) accedo alla pagina personale della persona identificata dal numero 35 del mio database..
    Questo ovviamente non dovrebbe succedere...
    come devo risolvere questo "ENORME" ( ) problema?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    34
    puoi provare a mettere un if a inizio pagina, del tipo:

    Codice PHP:
    if ($_GET['id']!=$user_id)
    {
        echo 
    "Non puoi accedere a questa pagina";
        exit;

    Ovviamente ad $user_id dovresti mettere il valore dell'id. Se usi un database mysql dovresti fare una cosa del genere:

    Codice PHP:
    $query="SELECT * from utenti WHERE id='$_SESSION[id]'";
    $result=mysql_query($query) or die("impossibile selezionare utente");
    $user=mysql_fetch_array($result);

    $user_id=$user['id'
    penso che una cosa del genere dovrebbe funzionare

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    devi passare i dati per POST e mettere in una sessione i dati relativi alla USERNAME.. non la PASSWORD..
    posta un po' di codice, magari trovi qualcuno che può aiutarti..

  4. #4
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Originariamente inviato da telegio
    devi passare i dati per POST e mettere in una sessione i dati relativi alla USERNAME.. non la PASSWORD..
    posta un po' di codice, magari trovi qualcuno che può aiutarti..
    Esatto quando la persona si logga deve avere un identificativo, poi quando apri la pagina invii tramite post/get l'identificativo e fai in modo che solo lui possa vederla. Ps ma non è che fai le pagine per ogni utente a mano?
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  5. #5
    Originariamente inviato da Aires
    Esatto quando la persona si logga deve avere un identificativo, poi quando apri la pagina invii tramite post/get l'identificativo e fai in modo che solo lui possa vederla. Ps ma non è che fai le pagine per ogni utente a mano?

    Ciao Aires...le pagine sono sempre le stesse. cambiano solo i dati visualizzati all'interno.

    vi mostro la fase di login e l'autorizzazione ad accedere alle pagine riservate:
    Codice PHP:
    if($admin == "0") {
        
    session_register('autorizzato');
            
    $_SESSION["autorizzato"] = 1;
        
    $destinazione "personale.php?id=".$id;
    } else {
        
    session_register('admin_ok');
            
    $_SESSION["admin_ok"] = 1;
        
    $destinazione "admin/admin.php?id=".$id;

    In questa prima parte verifico solo se l'utente che si logga è un amministratore o un utente normale (tramite il campo admin del mio DB.

    Codice PHP:
    <?php session_start();?>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <?php
    if (!session_is_registered('admin_ok')) {
      echo 
    "<script type=\"text/javascript\">alert(\"AREA RISERVATA!\\nACCESSO NEGATO!!\");history.go(-1)</script>";
      die;
    }
    ?>
    Qui proteggo le varie pagine (nella fattispecie quelle amministratore) da utenti che non si sono loggati.

    io avevo pensato di fare così:
    nell'indirizzo passo anche la password (criptata in md5) e poi creo un file da includere in ogni mia pagina che per prima cosa mi verifica se la password che mi è arrivata è la stessa che si trova sul db tramite l'id che piene mandato.
    se si visualizza la pagina se no errore.

    che ne dite?esistono anche modi più semplici?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    34
    $id sarebbe l'id dell'utente, giusto?

    se è così puoi mettere questo if:

    Codice PHP:
    if ($_GET['id']!=$id)
    {
        echo 
    "Non puoi accedere a questa pagina";
        exit;

    e in questo caso se l'id dell'utente è diverso dall'id del get (nell'esempio che hai fatto tu, se è diverso da 34), allora fa quello che c'è dentro l'if. Ovviamente il mio "echo" è solo un esempio, puoi mettere quello che vuoi... anche un redirect alla pagina precedente

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    io avevo pensato di fare così:
    nell'indirizzo passo anche la password (criptata in md5) e poi creo un file da includere in ogni mia pagina che per prima cosa mi verifica se la password che mi è arrivata è la stessa che si trova sul db tramite l'id che piene mandato.
    se si visualizza la pagina se no errore.

    che ne dite?esistono anche modi più semplici?
    esistono modi più sicuri.. la password una volta inserita non deve MAI essere più toccata..
    io faccio così, ma è possibile che sbaglio:
    faccio un controllo generale se la username non è in sessione. se non c'è RAUS..
    SE invece c'è, controllo con una query che l'id dello username in sessione sia uguale, come nel tuo caso, a quello del contenuto che si sta cercando di visualizzare. in questo caso devi avere però utenti UNIVOCI..

  8. #8
    Originariamente inviato da Mauri88
    $id sarebbe l'id dell'utente, giusto?

    se è così puoi mettere questo if:

    Codice PHP:
    if ($_GET['id']!=$id)
    {
        echo 
    "Non puoi accedere a questa pagina";
        exit;

    e in questo caso se l'id dell'utente è diverso dall'id del get (nell'esempio che hai fatto tu, se è diverso da 34), allora fa quello che c'è dentro l'if. Ovviamente il mio "echo" è solo un esempio, puoi mettere quello che vuoi... anche un redirect alla pagina precedente
    Mauri scusami questa parte la dovrei inserire in ogni pagina privata?
    ti faccio un esempio:
    supponi la mia pagina personale.php. All'inizio della pagina io eseguo le seguenti cose:
    Codice PHP:
    <?php
    include "./check_adm.php";
    ?>
    Intestazione HTML
    <?php
    include "../connessione.php"//per connettermi al database

    $myid $_GET['id']; ricavo l'id passato

    //estrapolo le informazioni per quell'
    id
    $check 
    mysql_query("SELECT * FROM $tbl_name WHERE id = '".$myid."'");
    $arr mysql_fetch_row($check);

    etcetc.
    adesso se io, una volta loggato, cambio l'indirizzo da admin.php?id=34 a dmin.php?id=44
    visualizzo la pagina di un'altra persona...come dovrei modificare il tutto?

  9. #9
    Originariamente inviato da telegio
    esistono modi più sicuri.. la password una volta inserita non deve MAI essere più toccata..
    io faccio così, ma è possibile che sbaglio:
    faccio un controllo generale se la username non è in sessione. se non c'è RAUS..
    SE invece c'è, controllo con una query che l'id dello username in sessione sia uguale, come nel tuo caso, a quello del contenuto che si sta cercando di visualizzare. in questo caso devi avere però utenti UNIVOCI..
    mi puoi spiegare meglio come creare questo?

  10. #10
    Originariamente inviato da alexmarco
    mi puoi spiegare meglio come creare questo?
    Codice PHP:
    <?php session_start();?>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <?php

    include "../connessione.php";

    $myid $_GET['id'];

    $check mysql_query("SELECT * FROM $tbl_name WHERE id = '".$myid."'");
    $arr mysql_fetch_row($check);

    if (!
    session_is_registered('admin_ok') || $_SESSION['username'] != $arr[1] || $_SESSION['password'] != $arr[2]) {
      echo 
    "<script type=\"text/javascript\">alert(\"AREA RISERVATA!\\nACCESSO NEGATO!!\");history.go(-1)</script>";
      die;
    }
    ?>
    ho modificato così:
    - nel file index.php in fase di login salvo username e password come variabili di sessione
    - ogni mia pagina privata include un file check.php (quello che vedete sopra) che verifica se le variabili di sessione username e password sono le stesse relative all'id che arriva.
    se si ok se no RAUS (come dice telegio )
    non intendevate questo?

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.