• User

    Script per proteggere pagina php

    Ciao ragazzi ho bisogno di un aiuto, praticamente sto creando un sito e vorrei inserire un form con un login in cui inserire nome utente e password per accedere ad una pagina segreta da me creata.

    Ora sono riuscito a creare il tutto solo che non riesco a far aprire automaticamente la pagina segreta. Solo che ogni volta che effettuo il login mi trovo costretto a dover digitare manualmente l'indirizzo nel browser per accedere alla pagina segreta.

    Questo è il codice contenuto nel file che ho creato chiamato login.php:

    <?
    session_start();  
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" ".w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Login</title>
    </head>
    <body>
    <?
    function check($user,$password){
      include("utenti.php");
      foreach($utenti as $user_ => $password_){
       if (($user==$user_) AND ($password==$password_)) {
        return true;
       }
      }
      return false;
    }
    function form_login(){
    ?>
    <form id="login" action="<?=$PHP_SELF?>" method="post">
    <div style="text-align:center;margin-left:auto;margin-right:auto;">
     Utente:<br>
     <input type="text" name="utente" size="20" maxlength="255"><br>
     Password:<br>
     <input type="password" name="password" size="20" maxlength="255"><br><br>
     <input type="submit" value="   OK   ">
    </div>
    </form>
    <? }
    if(isset($_POST["utente"])){
     if (check($_POST["utente"],$_POST["password"])){
      $_SESSION["utente"] = $_POST["utente"];
      $_SESSION["password"] = $_POST["password"];
      echo "ora sei loggato! torna";
     }else{
      form_login();
     }
    }else{
     form_login();
    }  
    ?>
    </body>
    </html>
    

    Ora vorrei riuscire una volta effettuato il login a reindirizzare la pagina su la pagina ad esempio miosito.com/paginasegreta.php

    Come posso fare?

    grazie.


  • User Attivo

    Per prima cosa non usare lo short open tag (<?), utilizza il tag di apertura completo <?php

    Poi la funzione check() può essere semplificata in questo modo:

    [php]function check($user, $password) {
    include("utenti.php");
    return isset($utenti[$user]) && $utenti[$user] == $password;
    }[/php]

    Per quanto riguarda il redirect, è sufficiente inserire il codice di verifica subito dopo a session_start() (modificandolo in modo da non richiamare direttamente form_login()) ed utilizzare un header location per il redirect.

    A tal proposito, ti suggerisco di leggere questo articolo:

    Effettuare un redirect con header location e propagare le sessioni
    kb.creativepark.it/kb/entry/5/