Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [Sessioni] Creazione file sessioni non regolare. Chi sbaglia?

    Buon pomeriggio a tutti,

    scrivo questo post perchè non riesco a comprendere davvero il comportamento (e per meglio dire in questo caso...la MECCANICA..) delle sessioni in php.

    Partiamo dal livello basilare.

    Sistema Operativo: Windows Vista 32bit
    Programma utilizzato per test in locale: EasyPhp 5.3.6.1
    Directory di salvataggio sessioni: /tmp (quella predefinita nella cartella di EasyPhp)

    Ora..

    ..ho due pagine:

    Pagina 1 = index.php
    Codice PHP:
    <?php
    session_start
    ();
    ?>
    <html>
    .....
    <form action="login.php">
    .....
    .....
    </form>
    .....
    <?php

     
    if (isset($_SESSION['dato_ok'])) {

        echo 
    $_SESSION['dato_ok']

     }
    ?>
    ....
    ....
    </html>
    <?php
    session_destroy
    ();
    ?>
    Come potete vedere, la pagina ha un form con due campi: username e password i quali valori passerà alla pagina login.php.

    Di seguito..

    Pagina 2 = login.php
    Codice PHP:
    <?php
    session_start
    ();

    # Controlli sul dato passato..
    #
    # Se il dato è ok..allora salvo in sessione..

    $_SESSION['dato_ok'] = $_POST['dato_controllato'];
    header("Location:index.php");

    ?>
    Come vedete, in caso vada tutto bene, il dato passato e controllato viene salvato in sessione per poi essere stampato nella pagina 1 ...faccio così perchè sto testando appunto la sessione.

    Il problema è:

    - Perchè quando apro la pagina e quindi dovrebbe aprire la sessione...e creare il file.........il file non viene creato? ...oppure viene creato 1 volta si...e 10 no???

    ---------

    - Sbaglio qualcosa?
    - SbagliA qualcosa il programma?

    Non capisco.

    Grazie mille,
    Wart

  2. #2
    Scusa se te lo chiedo, ma cosa stai pianificando di realizzare?, controllandolo e provandolo non ho riscontrato niente di anomalo, a parte il ;
    Codice PHP:
    <?php
    session_start
    ();
    ?>
    <html>
    .....
    <form action="login.php" method="post">
    <input type="text" name="dato_controllato">
    <input type="submit">

    </form>
    .....
    <?php

     
    if (isset($_SESSION['dato_ok'])) {

        echo 
    $_SESSION['dato_ok'][SIZE=7];[/SIZE]

     }
    ?>
    ....
    ....
    </html>
    <?php
    session_destroy
    ();
    ?>

    Codice PHP:
    <?php
    session_start
    ();

    # Controlli sul dato passato..
    #
    # Se il dato è ok..allora salvo in sessione..

    $_SESSION['dato_ok'] = $_POST['dato_controllato'];
    [
    size=5]header("Location:test.php");[/size]

    ?>
    Non ho paura dei computer, ma della loro eventuale mancanza. (Isaac Asimov)
    http://www.manuelprojects.com

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Ciao Manuel, grazie per la risposta.

    Si perdonami non mi ero accorto del ; mancante ma nella mia pagina c'è.

    Non riesco a capire! Non mi crea (e neanche distrugge) il file di sessione regolarmente...

    ...cioè una volta lo crea (dopo un pò di tempo)...e 10 volte no!

    Sto creando una pagina di accesso ad un'area riservata ai clienti per il mio dominio...riservato ai clienti.

    Della serie:

    -> Hai username e password che ti do io
    --> Allora entra e visualizzi quello che devi visualizzare.
    -----> Altrimenti no. Rimani sulla index.


    Grazie.

  4. #4
    Prova così, questo è quello che uso regolarmente per gli accessi proprietari ad aree riservate.

    Comprende anche la gestione dell'errore.

    Pagina login.php:
    Codice PHP:
    <form name="access" action="autentify.php" method="post">
            <table border="0" style="width:400px;" cellpadding="0" cellspacing="0">
            <tr>
                <th>Username</th>
                <td><input type="text" name="username" style="color:#999;"  class="login-inp" /></td>
            </tr>
            <tr>
                <th>Password</th>
                <td><input type="password"  name="password" style="color:#999"  class="login-inp" /></td>
            </tr>
            <tr>
                <th></th>
                <td valign="top"><?PHP if(isset($_GET['errn'])){ if($_GET['errn'] == "noaccess"){?><font color="#AA0000">Impossibile effettuare l'accesso.</font><?PHP }  if($_GET['errn'] == "nosession"){?><font color="#AA0000">Tempo di inattivit&aacute; superato.
    Per motivi di sicurezza rieseguire il login.</font> <?PHP } if($_GET['errn'] == "exitsuccess"){?><font color="#004400">Disconnessione eseguita.</font> <?PHP } } ?></td>
            </tr>
            <tr>
                <th></th>
                <td><input type="submit" class="submit-login" value=" "  /></td>
            </tr>
            </table>
            </form>

    Pagina autentify.php
    Codice PHP:
    <?PHP
        $Username 
    $_POST['username'];
        
    $Password $_POST['password'];
        
        if((
    $Username == "xxxxx") && ($Password == "xxx"))
         {
            
    session_start();
            
    $_SESSION['ACCESS'] = "OK"
                   
                    
    //PAGINA DI LANDING IN CASO DI USERNAME E PASS CORRETTI
            
    header("location:start.php");    
         }
         
         else
         {
                    
                     
    //PAGINA DI LANDING IN CASO DI USERNAME E PASS SCORRETTI
             
    header("location:login.php?errn=noaccess");
         }
    ?>
    Non ho paura dei computer, ma della loro eventuale mancanza. (Isaac Asimov)
    http://www.manuelprojects.com

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Non vedo però la creazione di una sessione...e poi non ho capito perchè è presente il parametro $_GET

    Ad ogni modo, resta il fatto che pur avendo session_start() ad entrambe le mie pagine (pagina 1 & pagina 2) ...la sessione..in locale..non viene creata. QUASI MAI.



    Quanto prima effettuerò i test online (e solo online.... )


  6. #6
    Il parametro get nella pagina login serve perchè se è presenta vuol dire che la pagina autentify ha fatto un redirect con quella varibile specificando l'errore di login.

    La sessione si crea solo se l'utente è stato accettato (Combinazione user+pass ok),
    a quel punto nelle pagine di accesso riservato ti basterà verificare:

    Codice PHP:
    session_start();
    if(!isset(
    $_SESSION['ACCESS']))
    {

        
    header("location:login.php?errn=nosession");
    }

    if(isset(
    $_SESSION['ACCESS']))
    {
        if(
    $_SESSION['ACCESS'] != "OK")
        {
            
    header("location:login.php?errn=nosession");
        }

    Non ho paura dei computer, ma della loro eventuale mancanza. (Isaac Asimov)
    http://www.manuelprojects.com

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Giusto per la cronaca...in questo momento sto testando online. Ho impostato correttamente (credo) la directory personalizzata con ini_set a inizio pagina (prima di inizializzare la sessione) e...

    ...attraverso Filezilla non riesco a visualizzare nella cartella di riferimento nessun file di sessione creato...seppur dovrebbe esserci perche la pagina inizia così:

    Codice PHP:
    <?php
    ini_set
    ("session.save_path""path/personalizzata");
    session_start();
    $_SESSION['prova'] = "bla bla bla";
    ?>

    ..resto del contenuto..
    ..e quindi, avendo un "qualcosa" da mettere nell'array $_SESSION dovrebbe automaticamente creare il file di sessione...con la variabile al suo interno (Giusto?). Ma ciò non avviene (oppure che ne so...i file di sessione sono file nascosti che non posso vedere tramite Filezilla..).

    Mah.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Ultimo post.

    Se nella suddetta pagina eseguo un echo print_r del contenuto dell'array $_SESSION esso mi stamperà a video correttamente il contenuto dell'array...inclusi i parametri che gli passo, se glieli passo, come riportato negli esempi di codice delle due pagine all'inizio di questo thread.

    Solo non riesco a capire perchè non vedo il/i file di sessione nella cartella che ho specificato attraverso la funzione ini_set (visto che è corretta..credo..non mi da nessun errore e il phpinfo() me la da).




    Grazie.

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.