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

    creare un form con contenuto action invisibile

    Salve
    Scusate il titolo poco chiaro.
    Pongo il mio quesito.
    Vorrei creare il solito form che, cliccando sul pulsante submit, viene chiamata un'altra pagina php.
    Il mio problema è che l'utente, visualizzando il codice sorgente della pagina, non deve visualizzare la pagina php di destinazione.
    Mi sono inventato un po di codice ma non sò se è la soluzione giusta o c'è qualcosa di più rapido.
    Ho postato il codice in questa sessione semplicemente perchè c'è più php che html.

    Ecco il codice:
    codice:
    <html>
        <head>
        </head>
        <body>
            <?php
                session_start();
                $nome = $_POST['nome'];
                if($nome=="")
                    {
                    echo "<form name='nomeform' method='post' action='pagina.php'>";
                    echo "Nome <input type='text' name='nome' autocomplete='off'>";
                    echo "<input type='submit' value='    Invia    '>";
                    echo "</form>";
                    }
                else
                    {
                    $_SESSION['nome'] = $_POST['nome'];
                    header("location:pagina1.php");   
                    }
            ?>  
        </body>
    </html>
    Analizziamo la pagina.
    1) quando la pagina viene chiamata per la prima volta, la variabile $nome è vuota e viene mostrato a video il form.
    2) il visitatore riempe la casella input con i dati, clicca sul pulsante submit e viene lanciata la stessa pagina php ossia quella impostata nel campo action della form.
    3) questa volta la variabile $nome è valorizzata, memorizzo i dati in una variabile di sessione e chiamo la pagina che mi interessa, la variabile di sessione mi serve per trasferire i dati ad altre pagine php.

    Ho visto il codice sorgente e non rimane traccia della pagina1.php quale pagina di destinazione.
    Cosa ne pensate?
    Va bene o c'è qualcosa di più funzionante?
    Grazie.
    Mariuccia

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dipende cosa devi fare e come si comporta l'altra tua pagina... perchè devi nascondere il nome dello script? certamente puoi rinviare il form alla stessa pagina, in cui potresti anche fare un semplice "include" (i redirezionamenti potrebbero cmq venir "intercettati"), ma anche inviare tutto a uno script tipo "processapagina1.php" che poi richiama qualcos'altro... dipende da cosa devi "proteggere"

  3. #3
    Premetto che una parte del problema è stato già trattato in questo form da una mia collega, proprio due giorni fa, adesso tocca a me di risolvere il problema di nascondere lo script.

    Ho creato un sistema di login composto in questo modo:
    pagina1.php con il form
    pagina2.php recupera i dati e li processa, se l'utente è identificato viene indirizzato a pagina3.php (reindirizzamento in php)
    pagina3.php fa quello che devo fare
    pagina4.php fa il logout resettando tutte le variabili.

    Una volta fatto il logout, se uso il tasto indietro del browser, mi vengono mostrate tutte le pagine php tranne la pagina2.php e mi va bene, nessun malintenzionato riesce ad entrare nell'area riservata.

    Se analizzo il codice sorgente della pagina1.php, riesco a scoprire a cosa si collega il form ossia pagina2.php.

    Se punto direttamente a questa pagina scrivendo direttamente l'url nella barra degli indirizzi, un malintenzionato riesce ad entrare nell'area riservata.
    Questo succede poichè, all'interno della pagina2.php, vi è la seguente istruzione:
    $password=$_POST('password');
    Essendo $_POST una variabile superglobale che non posso eliminate, mi valorizza la variabile $password anche senza passare per il form della pagina1.php e mi fa l'accesso all'area riservata.

    Dietro al problema della variabile $_POST ci stiamo da una settimana e l'abbiamo risolto ieri, su questo sito.
    Se nascondo il reidirizzamento alla pagina2.php, la situazione è un pò più sicura di quella attuale.
    Ovviamente non cerco livelli di protezione di una banca ma un minimo mi farebbe piacere.

    Grazie mille.
    Mariuccia.

    P.S. Come si fa ad intercettare il redirezionamento che ho creato io in php dal momento che è lato server? Sicuramente con conoscenze non alla portata di tutti, vero? Grazie

  4. #4
    Originariamente inviato da Mariuccia1970
    Questo succede poichè, all'interno della pagina2.php, vi è la seguente istruzione:
    $password=$_POST('password');
    Essendo $_POST una variabile superglobale che non posso eliminate, mi valorizza la variabile $password anche senza passare per il form della pagina1.php e mi fa l'accesso all'area riservata.
    Questa non l'ho capita ... e con cosa si valorizzerebbe la variabile $password? Anche utilizzando cURL e passando un valore in POST bisognerebbe comunque conoscere la password. Se l'accesso avviene comunque allora c'è un problema nella script.
    Inoltre, per evitare l'accesso a pagine non autorizzate puntandole direttamente basterebbe verificare, ad esempio, la presenza di un qualche parametro in sessione che viene impostato solamente nel caso in cui si effettui il giro "normale" ed in caso esso non sia presente visuallizzare un messaggio di accesso negato oppure effettuare un redirect ad una pagina di cortesia.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Ciao.
    Non so rispondere alla tua domanda perchè non sono esperta.
    Purtroppo questo problema succede, la mia collega ha già postato una discussione qualche giorno fa con esempi banali, la puoi consultare quì: http://forum.html.it/forum/showthrea...readid=1502310
    la discussione é lunga.

    Alla fine ha fatto degli esempi creando due semplici file php:

    pagina1.php contenente il form

    pagina2.php che recupera i dati con l'istruzione
    $password=$_POST('password'); //e li mostra a video
    echo $password;

    Se mi trovo in pagina2.php e premo ripetutamente F5, noto che $password è sempre valorizzata anche se non passo per il form e non c'è stato verso di distruggere la variabile superglobale $_POST, mi hanno detto che non si poteva.
    Mi è stata consigliata una soluzione per effettuare il login e logout che ha funzionato benissimo, mi rimane da rendere invisibile la pagina php che viene chiamata dal form.

    Grazie.
    Mariuccia

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non è cmq una buona soluzione "nascondere" e basta la pagina... il problema è a monte... secondo me al login puoi settare una variabile di sessione come controllo e in tutti gli script "riservati" verifichi tale variabile: se non è settata "salti" ad una pagina di "errore"

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.