Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    depotenziare web application

    salve a tutti sto realizzando la mia prima web application(x tesi di laurea)e praticamente ora mi trova nella fase di depotenziamento software...forse la + complicata x me.in pratica questo codice che vi quoto è una pagina che compare ad un lavoratore che inserisce la user e password...lo indirizza ad una pagina corsi.php dove ci sono tutti i corsi dove lavoratore può accedere(è inscritto)...cliccando su uno di essi mi si apre la scheda del corso(esempio:clicco su corso di informatica)...fin qui tutto bene,ma ora se vado nel link presente nella pagina di internet explorer e vado a sostituire alla parola informatica con patente_europea mi si apre la pagina del corso patente_europea nonostante il lavoratore non sia inscritto.dunque dovrei impedire al lavoratore loggato di fargli visitare le pagine dove non è inscritto.ora mi chiedo c'è qualcuno che mi possa aiutare anche con qualche tutorial sul web.grazie anticipatamente

    Codice PHP:
    <?
    $id_corsi 
    FixData($_REQUEST["corsi"],6,1);
    $query "SELECT * FROM corsi WHERE id_corsi = ".$id_corsi;
    $result mysql_query($query) or die(mysql_error());
    if (
    mysql_num_rows($result) > 0) {
        
    $corsi mysql_fetch_assoc($result);
    } else {
        
    header("location:corsi.php?action=lista");
    }
    $pagina["titolo"] = "scheda corsi";
    $pagina["breadcrumbs"] = array("corsi"=>"corsi.php","scheda corsi"=>"");
    include 
    "inc/header.php";
    ?>
    <div id="content">
        <div id="content-wrapper">
            <div class="small">
                        
            </div>
            <div class="big last">
                <form action="corsi.php" class="insert" name="frm_lavoratori" id="frm_lavoratori" method="post">
                    <fieldset>
                        <h4>dati anagrafici</h4>
                        <div class="item">
                            <label for="titolo">titolo [i]*[/i]</label>
                            <input name="titolo" type="text" class="input w300" value="<?=$corsi["titolo"]?>" />
                        </div>
                        <div class="item">
                            <label for="durata">durata [i]*[/i]</label>
                            <input class="input w300" name="durata" type="text" value="<?=$corsi["durata"]?>" />
                        </div>
                    </fieldset>
                    <fieldset>
                        <h4>riferimenti</h4>
                        <div class="item">
                            <label>e-mail</label>
                            <input name="email" type="text" class="input w300" value="<?=$corsi["email"]?>" />
                        </div>                                                    
                    </fieldset>
                    <fieldset>
                        <h4>note</h4>
                        <div class="item">
                            <label for="note">note</label>
                            <textarea name="note" class="input w400"><?=$corsi["note"]?></textarea>
                        </div>
                    </fieldset>                                                
                    <div class="form-submit">
                        <input type="hidden" name="id_corsi" value="<?=$id_corsi?>" />
                        <input type="hidden" name="action" value="modifica" />
                        <input type="submit" value="salva" />
                    </div>
                </form>
            </div>
        </div>
        <br class="clear" />        
    </div>
    <?
    include "inc/footer.php";
    ?>

  2. #2
    Se ho capito bene vuoi che un utente non possa visitare tutte le pagine?.

    Molto semplice!. Quando l'utente fa il login, vedi se è registrato col parametro della pagina che vuole visitare, ed utilizzi le sessioni per non farlo entrare o viceversa!.

  3. #3
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    In ogni pagina controlli, in base alla sessione/cookie (insomma, il metodo che usi per il login) se l'utente ha i permessi per visualizzare tale pagina.

    Se si, vai avanti, se no, lo fermi.
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    ora mi chiedo c'è qualcuno che mi possa aiutare anche con qualche tutorial sul web.grazie anticipatamente
    Hai già visto le guide di html.it?
    Di sicuro qualcosa che possa farti comodo lo trovi...

    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    esatto,non voglio che visualizzi le pagine...faccio il login in questo modo:
    Codice PHP:
    <?
    session_start
    ();
    $user FixData($_POST["user"],1,1);
    $password FixData($_POST["password"],1,1);
    $query "SELECT id_lavoratore FROM lavoratore WHERE user = '".$user."' AND password = '".$password."'";
        
    $result mysql_query($query);
        if (
    mysql_num_rows($result) > 0) {
            
    $studente mysql_fetch_assoc($result);
            
    $_SESSION["tipo"] = "lavoratore";
            
    $_SESSION["id"] = $lavoratore["id_lavoratore"];
        }
        
    mysql_free_result($result);
    }
    if (
    $_SESSION["tipo"]) {
        
    header("location:index.php");
    } else {
        
    session_destroy();
        
    header("location:login.php");
    }
    ?>
    premetto che la parte riguardante le sessioni devo ancora studiarla per bene.tu non è che mi potresti linkare qualke tutorial oppure mi daresti un aiuto.grazie

  6. #6
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Riguardo alla sessione ho trovato questo esempio: http://php.html.it/articoli/leggi/22...-ajax-e-php/3/

    Devi ricordarti il session_start(); in ogni pagina in cui vuoi usare la sessione.
    Il funzionamento è lo stesso di $_POST[], cioè un vettore di oggetti.
    Solo che gli oggetti nel post vengono cancellati "quando cambi pagina" (spero che il concetto sia reso, anche se so di aver scritto in modo indecente) invece la sessione mantiene le informazioni che ci hai messo dentro fino a quando l'utente non chiude l'applicazione (e forse anche un po' dopo...) oppure non tu non le cancelli esplicitamente.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  7. #7
    Le sessioni le usi dopo.

    Quando l'utente si logga, lo script deve vedere 3 paramentri (1° User - 2° Pass - 3° Paramentro per vedere in che pagine puo accedere).

    In base al 3° parametro la sessione è uguale a qualcosa:

    Codice PHP:
    session_start();

    if (
    $parametro === $value_1){  //puo vedere le pagine classificabili con $value_1
    $_SESSION['pagina'] = $value_1;

    }elseif (
    $parametro === $value_2){  //puo vedere le pagine classificabili con $value_2
    $_SESSION['pagina'] = $value_2;

    }
    etc.. 
    Poi nelle pagine "protette" fai all'inizio:

    } else {
    Codice PHP:
    session_start();

    if (
    $_SESSION['pagina'] === $value_1){  //puo vedere la pagina
    $_SESSION['pagina'] = $value_1;

    }else{ 

    //rimandalo indietro


    P.S.
    Se hai implementato il login, puoi fare senza problemi anche questo!.

  8. #8
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Per altre vie questa discussione è andata avanti...
    Quindi per non far perdere il filo a quanti si siano affezionati al thread (e per incorrere in sanzioni e/o ammonimenti da parte degli amministratori... ) spiegherò a che punto siamo arrivati.

    L'idea è (dovrebbe essere...) di fare una query al database per recuperare le pagine a cui il lavoratore ha diritto di accedere al momento della login.
    Per pigrizia non ho testato ciò che segue, che è una modifica di uno dei codici postati da morena:

    Codice PHP:
    <?
    session_start
    ();
    $user FixData($_POST["user"],1,1);
    $password FixData($_POST["password"],1,1);
    $query "SELECT id_lavoratore FROM lavoratore WHERE user = '".$user."' AND password = '".$password."'";
        
    $result mysql_query($query);
        if (
    mysql_num_rows($result) > 0) {
            
    $studente mysql_fetch_assoc($result);
            
    $_SESSION["tipo"] = "lavoratore";
            
    $_SESSION["id"] = $lavoratore["id_lavoratore"];
        
                
    // Da qualche parte nel database dovresti avere le pagine a cui il lavoratore puo' accedere.
                
    $query "SELECT pagina FROM pagine_lavoratore WHERE id_lavoratore = ".$lavoratore['id_lavoratore'];
                
    $result mysql_query($query);
                
    $pagine_disponibili = Array();
                
                while(
    $row mysql_fetch_assoc($result))
                {
                    
    $pagine_disponibili[$row['pagina']] = true;
                } 
                
    $_SESSION["pagine_disponibili"] = $pagine_disponibili;
            }
        
    mysql_free_result($result);
    }
    if (
    $_SESSION["tipo"]) {
        
    header("location:index.php");
    } else {
        
    session_destroy();
        
    header("location:login.php");
    }
    ?>
    Se l'utente inserisce username e password corrette, in sessione viene aggiunto anche un vettore contenente le pagine a cui l'utente ha diritto ad accedere.
    Ho utilizzato un vettore associativo che ha per chiave il nome della pagina, e che associa alla chiave il valore true. Diciamo che non mi pare una idea eccessivamente stupida...

    Siccome potrebbero esserci dubbi su come si usi poi il vettore associativo, posto anche questo esempio (testato e garantito):

    Codice PHP:
    <? 
     $array 
    = Array();
     
    $array['pag']=1;
     
    $array['chiave 2']=2;
     
    $chiave3 "chiave 3";
     
    $valore3 "valore 3";
     
    $array[$chiave3] = $valore3;
     
    $array['index.htm'] = true;
     
    $array['fisica_nucleare.php'] = false;
     
     foreach (
    $array as $key => $value)
     {
        echo 
    $key " -> " $value "
    "
    ;
     }
     
     echo 
    "

    "
    ;
     
        
    $vettore_pagine_test = array ( "index.htm""fisica_nucleare.php""pagina_inesistente.php" );
        for (
    $i=0$i<3$i++)
        {
            
    $pagina_richiesta $vettore_pagine_test[$i];
            if (
    $array[$pagina_richiesta])
            {
                echo 
    $pagina_richiesta ": ammessa
    "
    ;
            }
            else
            {
                echo 
    $pagina_richiesta ": non ammessa, ritenta, sarai pi&ugrave; fortunato
    "
    ;
            }
        }
    ?>
    Nulla di particolare. Il foreach fa vedere tutto il contenuto dell'array associativo.

    Il secondo ciclo di for serve solo per ciclare su un vettore di pagine da verificare. Per ogni pagina del vettore viene stampato un messaggio o l'altro a seconda del valore associato a quella pagina nel vettore associativo.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  9. #9
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    `How to Reinvent the Wheel`
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  10. #10
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Originariamente inviato da strae
    `How to Reinvent the Wheel`
    E dov'era la ruota? Io sono fermo ai cingoli...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

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.