Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83

    Le variabili di sessione pazze...

    Buongiorno...
    Sto sviluppando un sito Web... Tuttavia le variabili di sessione impazziscono...
    Mi spiego...
    Nel momento in cui un utente effettua un login, salvo i dati del login in variabili di sessione, purtroppo quando devo fare la verifica delle variabili mi risultano nulle. Questo però non accade ovunque ma solo nelle sotto cartelle, anche se in modo bizzarro... Mostro un esempio reale...
    Accedo come admin:
    Inserisco i dati, il risultato delle variabili di sessione è questo:
    Array ( [cookie] => 1 [id] => 1 [username] => username [logged] => Y )
    controllo la session nella sottodirectory da cui farò partire un file .php:
    Array ( [cookie] => 1 [id] => 1 [username] => username [logged] => Y )
    Il risultato è uguale
    Successivamente faccio partire un file .php in una sottodirectory:
    mi da errore perchè dice che risultano mancanti i dati nella sessione, a questo punto controllo cosa c'è nella $_Session dalla sottodirectory:

    Ovvero nulla
    E nella directory principale risultavano mentre nella sottodirectory scomparivano e riapparivano dopo un po...
    Adesso controllando ho notato che il problema si è risolto magicamente da solo...
    Però per curiosità qualcuno mi sa dire qualcosa al riguardo per evitare in futuro?
    Io avevo letto che poteva essere un problema di gestione della macchina dove andava impostato il file php.ini...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Directory e sottodirectory non hanno alcun effetto sulle sessioni.
    Hai messo session_start() all'inizio di ogni file in cui usi le sessioni?

  3. #3
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83
    Quote Originariamente inviata da Nexus0100 Visualizza il messaggio
    Buongiorno...
    Sto sviluppando un sito Web... Tuttavia le variabili di sessione impazziscono...
    Mi spiego...
    Nel momento in cui un utente effettua un login, salvo i dati del login in variabili di sessione, purtroppo quando devo fare la verifica delle variabili mi risultano nulle. Questo però non accade ovunque ma solo nelle sotto cartelle, anche se in modo bizzarro... Mostro un esempio reale...
    Accedo come admin:
    Inserisco i dati, il risultato delle variabili di sessione è questo:
    Array ( [cookie] => 1 [id] => 1 [username] => username [logged] => Y )
    controllo la session nella sottodirectory da cui farò partire un file .php:
    Array ( [cookie] => 1 [id] => 1 [username] => username [logged] => Y )
    Il risultato è uguale
    Successivamente faccio partire un file .php in una sottodirectory:
    mi da errore perchè dice che risultano mancanti i dati nella sessione, a questo punto controllo cosa c'è nella $_Session dalla sottodirectory:

    Ovvero nulla
    E nella directory principale risultavano mentre nella sottodirectory scomparivano e riapparivano dopo un po...
    Adesso controllando ho notato che il problema si è risolto magicamente da solo...
    Però per curiosità qualcuno mi sa dire qualcosa al riguardo per evitare in futuro?
    Io avevo letto che poteva essere un problema di gestione della macchina dove andava impostato il file php.ini...
    Chiedo scusa se mi auto-quoto, ma controllando meglio il problema non si è risolto...
    Aggiungo dettagli...
    Effettuo il login e questo è il risultato:
    Array ( [cookie] => 1 [id] => 1 [username] => unica64 [logged] => Y ) e sono su sito.com/test.php
    successivamente attivo uno script da questa posizione:
    sito.com/contenuti/admin/carica_modifica_prodotto.php
    che sarebbe questo:
    Codice PHP:
    <?php include "../../connessione/connessione.php"?>
    <?php 
    include '../../Gestione/controllo_connessione.php'?>
    <?php
        $conn 
    = new mysqli($server$username$password$database);    // Check connection    etc...
    Ma lo script che da problemi è questo:
    Codice PHP:
    <?php include '../../Gestione/controllo_connessione.php'?>
    che fa questo:
    Codice PHP:
    <?php include "./connessione/connessione.php"?>
    <?php
        session_start
    ();

        
    $conn = new mysqli($server$username$password$database);    // Check connection
        
    if ($conn->connect_error) {
            die(
    "Connection failed: " $conn->connect_error);
        }
        
    $sql "SELECT* FROM admin WHERE id = 1";
        
    $result $conn->query($sql);
        if(
    $result->num_rows 0){
            
    $row $result->fetch_assoc();
            if(
    $row["logged"]=="Y"){
                if (
    $_SESSION["logged"] != "Y"){
                     echo 
    $_SESSION["logged"];
                    echo 
    "Error 1";
                    
    ?><!--
                    <script language="javascript">
                        window.open('sito.com/Gestione/non_connesso.html','_top')                </script>                
                <?php
                
    }
            }
            else        {
                echo 
    "Error 2";
                
    ?>
                <script language="javascript">
                    window.open('sito.com/Gestione/non_connesso.html','_top')
                </script>
                <?php
            
    }
        }
    ?>
    Se avete domande fate...
    In ogni caso si ferma e stampa "Error 1", l'echo della session serve per vedere cosa risulta esserci dentro, ma ovviamente è vuota... Perciò entrerebbe nel reindirizzamento e a quel punto chiede il login, se io torno sulla home però il risultato è sempre il solito, ovvero:
    Array ( [cookie] => 1 [id] => 1 [username] => username [logged] => Y )
    non riesco a capire...


    P.S. session_start(); c'è ;D

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Scusa, ma si capisce poco.
    Fa una cosa, scrivi la struttura di cartelle e file, in modo da capire i file coinvolti dove sono e vedere se qualche include è sbagliato.
    Indica anche l'include nel file che ti crea problemi.

  5. #5
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83
    Mmm, non ho modo di avere una struttura file, la dovrei fare io... ti specifico dove si trovano i file che ti ho indicato che hanno il problema...

    /home.php -> la home
    /Gestione/connetti.php -> effettuo la connessione ad admin salvando le session
    /test.php -> visualizzo le session correttamente
    /Gestione/test.php -> visualizzo anche qui le session correttamente...
    /contenuti/admin/test.php -> anche qui tutto ok, visualizzo sempre correttamente le session...
    /contenuti/admin/carica_modifica_prodotto.php -> qui avviene l'evento strano... e mi dice che
    nelle session non c'è niente...


    /contenuti/admin/carica_modifica_prodotto.php questo file qui inculde però:
    Codice PHP:
    <?php include '../../Gestione/controllo_connessione.php'?>
    Che è:
    /Gestione/controllo_connessione.php -> nella stessa cartella in cui ho effettuato il login...


    /contenuti/admin/test.php -> qui non vengono più mostrate le variabili di sessione, ovvero sono sparite
    /test.php -> qui ci sono acnora...
    /contenuti/admin/test.php -> qui continuano a non eserci...

    test.php ->
    Codice PHP:
    <?phpsession_start();echo implode("<br />\n"$_SESSION);?>

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Fa una cosa, nel file in cui non funzionano le sessioni, all'inizio metti session_start() e vedi se funziona, se funziona hai problemi con l'include.
    Dalle spiegazioni non si capisce veramente nulla, c'è solo una gran confusione.

  7. #7
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83
    La session_start(); c'è già, scusa se non sono molto chiaro...

  8. #8
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83
    La cosa che non capisco è che il file controllo_connessione.php è quello che stampa "Error 1" ma quel file lo utilizzo anche altre volte, da errore solo se viene incluso da /contenuti/admin/un_file.php eppure l'include è corretto perché la stampa la effettua...

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Ricordati che session_start() deve essere la prima cosa in assoluto, tu ce l'hai dopo un include, spostalo prima e vedi se funziona, perché se l'include che lo precede genera un warning o un errore, anche se non mostrato a video magari per via di come è impostata la direttiva error_reporting, questo inibisce il funzionamento di session_start()

  10. #10
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83
    Provato... Continua a non funzionare...
    In più anche se volessi non includere il file e stampare l'array di session direttamente nel file che da problema il risultato è uguale... In quel file li non esistono variabili di sessione...
    Ultima modifica di Nexus0100; 08-08-2016 a 20:55

Tag per questa discussione

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.