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

    Problema strano con le sessioni

    Sto creando un'applicazione funzionante in locale. La pagina index comprende un form di login, se l'utente ha inserito la userid e la password giuste viene inoltrato ad una pagina protetta, se no compare un messaggio di errore.

    Copiando lo stesso codice da un mio sito che funziona in remoto, faccio partire l'applicazione in locale. Risultato? Nonostante legga che i dati siano corretti, non mi fa accedere alle pagine protette.

    Ho allora impostato:

    safe mode=On
    session.use.trans_id=1

    Adesso mi funziona, ma mi compare il PHPSESSID nella barra degli url, cosa che non può essere concepita per l'applicazione che sto facendo.

    Provando a cambiare il session.use.trans_id impostandolo a 0, tutto non mi funziona. Premetto che ho i cookie abilitati, sia sul browser sia all'utilizzo nel php.ini.

    Che devo fare?

    Vi posto il codice che ha ogni pagina protetta:


    Codice PHP:
    <?php
    @session_start();
    // controllo autorizzazione utente

    if (!session_is_registered('autorized')) {
      echo 
    "<h1>Area riservata, accesso non consentito</h1>";
      die;
    }
    ?>
    Questo è il codice che mi riceve i dati dal form di login e reindirizza:

    Codice PHP:
    <?php

      
    include("PHP/connessione.php");
            
      
    $i=0;
      
    $user=$_POST['userid'];
      
    $pass=$_POST['passwd'];
      
                    
    $query   "SELECT * FROM utenti WHERE (username LIKE '$user') AND (user_password LIKE '$pass')";
            
                        
    $risultato mysql_query($query) or die (mysql_error());
                        
                        
    $check mysql_num_rows($risultato);
                                                    
                        if(
    $check>0){
        @
    session_register('autorized');
        
    $autorized 1;
        echo 
    "Sei autorizzato ad entrare [url='home.php']Accedi[/url]";
              } 
              else     
          
          {
         echo 
    "NON sei autorizzato ad entrare [url='index.php']Indietro[/url]"
      }


    ?>
    Cosa sbaglio? Datemi qualche suggerimento perchè non so proprio che fare... Vi ringrazio anticipatamente...

  2. #2
    l'uso di session register & C. e' ormai deprecato. Dovresti usare $_SESSION.

    togli la chiocciola davanti a session_start e mettilo (il session_start) anche nella pagina che raccoglie il form.

    L'uso del LIKE e' da evitare visto che i valori debbono essere precisi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Intanto grazie per la celere risposta.

    $_SESSION come la utilizzo? Così?

    Pagina che riceve i dati dal form:

    Codice PHP:

    <?php

      
    include("PHP/connessione.php");
            
      
    $user=$_POST['userid'];
      
    $pass=$_POST['passwd'];
      
                    
    $query   "SELECT * FROM utenti WHERE (username LIKE '$user') AND (user_password LIKE '$pass')";
            
                        
    $risultato mysql_query($query) or die (mysql_error());
                        
                        
    $check mysql_num_rows($risultato);
                                                    
                        if(
    $check>0){

        
    $_SESSION["key"]=1;
        echo 
    "Sei autorizzato ad entrare [url='home.php']Accedi[/url]";
              } 
              else     
          
          {
         echo 
    "NON sei autorizzato ad entrare [url='index.php']Indietro[/url]"
      }


    ?>

    Codice inserito in ogni pagina da proteggere:

    Codice PHP:

    <?php
    @session_start();
    // controllo autorizzazione utente

    if (!isset($_SESSION["key"])) {
      echo 
    "<h1>Area riservata, accesso non consentito</h1>";
      die;
    }
    ?>
    Nel logout:

    Codice PHP:

            
    <?php

    @session_start();

    session_unset();

    session_destroy();




    ?>



    <script language="JavaScript">
    <!--
    document.location.href = "index.php"
    //-->
    </script>
    Ho provato ma c'è qualcosa che non va... Nel senso che inserendo il login correttamente, non mi fa accedere alle pagine protette... Non sono molto ferrato con le sessioni...mi scuso se queste possono essere domande forse banali...

  4. #4
    intanto in ogni pagina che vuoi controllare devi mettere il suo session_start() altrimenti non sarai membro della sessione.

    Poi if (!isset($_SESSION["key"])) {

    controlla solo se e' presente l'indice "key" ma l'indice potrebbe essere vuoto o con contenuto non valido. Siccome sei tu che valorizzi $_SESSION['key'] devi verificare che ci sia quanto atteso, cioe' il valore che hai immesso.

    Togli la chiocciola di fronte a session_start().

    per eliminare una sessione:

    Codice PHP:
    <?php
    session_start
    ();
    $_SESSION = array();
    session_destroy();

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.