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

    nozioni base per sessioni

    Qualcuno sarebbe così gentile da spiegarmi qual'è lo script base per aprire e chiudere una sessione, in seguito a login, avendo una struttura ad inclusione, nel senso che dentro index vengono caricate tutta le altre pagine?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Una guida la trovi su questo sito sotto: http://freephp.html.it/guide/lezione.asp?id=196

    Cmq per aprire una sessione si utilizza:
    Codice PHP:
    session_start(); 
    e va messo in testa alla pagina e prima di ogni output html generato dallo script e prima di ogni include(); per creare una variabile di sessione basta fare:
    Codice PHP:
    $_SESSION['nome'] = 'qualsiasi_valore'
    come una normale variabile. Da quel momento in poi la variabile resta presente nello script fino a quano non la distruggi. Per distruggere:
    Codice PHP:
    // Desetta tutte le variabili di sessione.
    session_unset();
    // Infine , distrugge la sessione.
    session_destroy(); 

  3. #3
    grazie marco,
    il mio problema è che la pagina che non è protetta nel senso che o la vede o no, ma nel senso che se la sessione è attiva il form è editabile, altrimenti mostra solo i risultati della query.

    Tale pagina è inclusa con questo script in index.php:

    codice:
    $p="main";
    //pagina passata via parametro
    if(isset($_GET['page'])){
       $p=$_GET['page'];
       if($p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists($p.".php")){
          //pagina di errore
          $p="error";
       }
    }
    include($p.".php");
    per cui session_start() la metto solo nell'index
    dove per altro includo il modulo di login:

    codice:
    if($_POST["Submit"] == "Logout"){ 
    $_SESSION=array(); 
    session_destroy(); 
    header("Location: index.php?page=$page"); 
    }else{ 
    if($_POST["Submit"] == "Login"){ 
    if($_POST['username'] != '' && $_POST['password'] != ''){ 
    $username = $_POST["username"]; 
    $password = md5($_POST["password"]); 
    $query = "SELECT * 
    FROM tab 
    WHERE username = '$username' 
    AND pass = '$password'"; 
    $result = mysql_query($query); 
    if(!$result || mysql_num_rows($result) == 0){ 
    echo "Username sconosciuto o Password errata"; 
    }else{ 
    $_SESSION['user'] = $username; 
    } 
    }else{ 
    echo "Devi inserire username e password"; 
    } 
    } 
    } 
    
    if(!isset($_SESSION['user'])){ 
    ?> 
    <form name="formadmin" method="post" action="<?="index.php?page=$page";?>"> 
    username: <input type="text" name="username" size="12"> 
    password:_<input type="password" name="password" size="12"> 
    <input type="submit" name="Submit" value="Login"> 
    </form> 
    <? 
    }else{ 
    ?> 
    <form name="formadmin" method="post" action="<?="index.php?page=$page";?>"> 
    Benvenuto <?= ucfirst($_SESSION['user'])."...";?> per uscire clicca 
    <input type="submit" name="Submit" value="Logout"> 
    </form> 
    <? 
    } 
    ?>
    Nell'index inoltre in testa a tutto metto
    ob_start();
    ed, alla fine,
    ob_end_flush();

    Mentre la pagina richiesta ha semplicemente 2 funzioni ed una prevede:
    codice:
    if(!isset($_SESSION['user'])){
      echo "contenutopagweb";
    }else{
      echo "form editabile";
    }

    il problema è che una volta loggato non mi più mostra le pagine incluse.

    In cosa sbaglio?

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    quando includi i file usa require() al posto di include() almeno ti esce a video l'errore. Prova!

  5. #5
    niente, non esce alcun errore....
    ho trascurato di dirti che in locale (unix) funziona bene...
    è sul web (win) che non và....

    potrei aggirare l'ostacolo eliminando le sessioni, ma in questo modo l'utente dovrà riconnettersi ad ogni aggiornamento....

  6. #6
    marco perdonami, oltre ad aver perso una giornata intera io ho fatto perdere del tempo anche a te e ad altri...

    Lo script funziona è il css che è stato generato, evidentemente, solo per essere visualizzato dai pc....
    ...il mio mac lo visualizza sballatissimo, mettendomi il risultato in un posto che per scovarlo devo scorrere x tre ore entrambe le barre del browser...



    Scusa ancora e grazie per l'impeccabile spiegazione sulle sessioni.


  7. #7
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    figurati!

  8. #8
    marco scusa,
    ho ancora un problema

    dopo aver eseguito il logout, termina la sessione e viene visualizzata la pagina web correttamente, ma se premo un qualunque pulsante dal menù, apre la pagina in modalità login. a cosa potrebbe essere dovuto?

  9. #9
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    mmm non saprei sinceramente...non sono espertissimo..pero' potresti provare a mettere in testa un header() per ricaricare lapagina dove aver fatto il logout.Cosi' facendo se nn sbaglio sarebbbe come fare un refresh e perdere i dati.
    In testa alla pagina prima di tutto fai(prova):
    Codice PHP:
    if(logout e' stato premuto(non so come lo verifichi)){
       header("Location: [url]http://www.pagina.php/[/url]");

    Prova ma n saprei..ciao!

  10. #10
    è nello script sopra, cmq lo riporto

    if($_POST["Submit"] == "Logout"){
    $_SESSION=array();
    session_destroy();
    header("Location: index.php?page=$page");
    }else{
    if($_POST["Submit"] == "Login"){
    ...
    }
    }

    <form name="formadmin" method="post" action="<?="index.php?page=$page";?>">
    Benvenuto <?= ucfirst($_SESSION['user'])."...";?> per uscire clicca
    <input type="submit" name="Submit" value="Logout">
    </form>

    anche se visto che ho fatto il form non ha senso avere l'header.
    ho provato anche con un semplice link, senza form, ma dà lo stesso problema.

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.