Visualizzazione dei risultati da 1 a 7 su 7

Discussione: $_SESSION e jquery

  1. #1
    Utente di HTML.it L'avatar di ercoli
    Registrato dal
    Mar 2002
    Messaggi
    173

    $_SESSION e jquery

    Grazie a quanti vorranno eventualmente rispondere.

    Brevemente: ho una form con due select; grazie a jquery/ajax dinamicamente la prima select determina la seconda. In pratica da form.php invio passo con jquery le variabili a select.php e questo restituisce il risultato delle query MySQL al primo file. Tutto bene.

    Il problema mi si é presentato nel momento in cui ho deciso di conservare in una variabile di sessione uno dei valori che passo con jquery dal primo al secondo file.

    Per intenderci:


    codice:
    // dal file form.php passo le due variabili a select.php
    $.get("select.php", { ruoloid: idruolo, item: 'categorie'}
            SOME CODE
    A questo punto, all'inizio del file select.php

    codice:
    session_start();
    $_SESSION['role'] = $_GET['ruoloid']; 
            SOME CODE
    Purtroppo sembrerebbe che la variabile non venga valorizzata come da un semplice echo $_SESSION['role'] alla fine di form.php.

    Qualcuno sa dirmi dove sbaglio?

    Ciao!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    con il codice che hai dato non si può capire molto, quello che mi chiedo, è in form.php quando ti aspetti di trovare la variabile in sessione?
    in form.php c'è il session_start?

    Ricorda che la sessione viene reperita al caricamento della pagina.

    ciao

  3. #3
    Utente di HTML.it L'avatar di ercoli
    Registrato dal
    Mar 2002
    Messaggi
    173
    form.php

    codice:
    <?
    //siamo all'inizio del file form.php
    session_start();
    SOME CODE
    ?>
    
    // dal file form.php passo le due variabili a select.php
    $.get("select.php", { ruoloid: idruolo, item: 'categorie'}
    SOME CODE
    
      select 1
      select 2
    
    <? echo 'questo è il valore della variabile di sessione: ' .$_SESSION['role']; ?>
    echo $_SESSION['role']; rimane vuoto

    select.php

    codice:
    <?php
    //siamo all'inizio del file select.php
    session_start();
    $_SESSION['role'] = $_GET['ruoloid']; 
    $sessione = $_SESSION['role'];
    SOME CODE
    
    $query = <<<EOQ
    SELECT * 
    FROM bandi
    WHERE id_tipo_categorie = '$categoriaID' AND id_tipo_ruoli = '$sessione'
    ORDER BY titolo
    EOQ;
    Il problema é che - vedi query di select.php - la condizione AND id_tipo_ruoli non funziona. Se escludo questa condizione tutto funziona, anche se il set di risultati non é corretto, proprio perché mi manca la condizione.
    Quando dico che non funziona, intendo dire che non mi viene restituito nulla, come mi comunica Firebug dalla console Net.

  4. #4
    Utente di HTML.it L'avatar di ercoli
    Registrato dal
    Mar 2002
    Messaggi
    173
    Ho fatto un passo avanti nel debugging.

    Riassumo per semplicità di lettura.

    Il file form.php raccoglie la variabile myVars da una <select>; questa variabile mediante jquery/ajax viene inviata al file select.php; quest'ultimo usa la variabile $_GET['myVars'] per effettuare una query MySQL e restituire un array con print_r(). Fin qui ok.

    La prima istruzione di form.php é: session_start();

    La prime due istruzioni di select.php sono:
    $_GET['myVar'] = $var;
    $_SESSION['data'] = $var;

    Ho la conferma che $_SESSION['data'] (cosa che nei post precedenti non avevo ed ecco dunque il passo avanti nel debugging) viene correttamente valorizzato, in quanto ho fatto l'append di tale variabile a print_r() e con Firebug vedo che l'array ottenuto in risposta da select.php contiene il dato corretto.

    select.php (e qui viene il baco) contiene due query MySQL: la prima viene chiamata agendo sulla prima <select> di form.php, la seconda viene chiamata agendo sulla seconda <select> di form.php.

    La prima query funziona correttamente
    SELECT mio_campo
    FROM tabella
    WHERE un_campo = '{$_SESSION['data']}'

    La seconda no, ossia l'array restituito da print_r(); risulta vuoto. La sintassi é sicuramente corretta e la query funziona se a WHERE un_campo = '{$_SESSION['role']}' sostituisco un valore fisso, ad esempo WHERE un_campo = 1
    SELECT *
    FROM tabella
    WHERE un_campo = '{$_SESSION['role']}'

    Come é possibile?

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    non è che magari hai le register globals a on?

    Se si, un'operazione cosi:

    $role = '';

    andrebbe a sovrascrivere anche $_SESSION['role']

    ciao

  6. #6
    Utente di HTML.it L'avatar di ercoli
    Registrato dal
    Mar 2002
    Messaggi
    173
    Maledizione!
    Register globals = off

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Se in un punto della tua pagina $_SESSION è valorizzato è ad un certo punto non lo è più l'unica cosa da fare è controllare il codice arrivando al limite di stampare un $_SESSION ogni riga per vedere dove cambia e da li vedere cosa fa il tuo codice per cambiarlo.

    ciao

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.