Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    Come recuperare dei valori dalla sessione dopo un redirect

    Non riesco a recuperare dei valori dalla sessione dopo un redirect
    ecco il mio codice

    pagina1.php (questa pagina si trova sul mio pc in locale)
    session_start();
    $_SESSION['segretaria'] = "anna" ;
    $PHPSESSID=session_id();
    header("location: http://www.miourl.it/action/my_remot...php?PHPSESSID=$PHPSESSID");

    my_remote_action.php (questa pagina si trova su un pc in remoto)
    $si = $_GET['PHPSESSID'];
    session_id($si);
    session_start();
    $nome = $_SESSION['segretaria'];
    echo "
    nome: ".$nome;

    Ho stampato il session id della pagina1.php e di my_remote_action.php e risultano identici, ma a video mi stampa solo
    nome:
    senza il valore 'anna'
    come mai?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Prova mettendo session_start(); all'inizio:

    Codice PHP:
    my_remote_action.php (questa pagina si trova su un pc in remoto)
    session_start(); 
    $si $_GET['PHPSESSID'];
    session_id($si);
    $nome $_SESSION['segretaria'];
    echo 
    "
    nome: "
    .$nome
    Posso chiederti perché passi tramite GET l'id di sessione?

  3. #3
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739

    Re: Come recuperare dei valori dalla sessione dopo un redirect

    codice:
    header("location: http://www.miourl.it/action/my_remote_action.php?".SID);
    Prova

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Per Diego:
    passo il session_id in get, perchè nel file: recupero la sessione in questo modo:

    session_id($si);
    session_start();

    così sono sicuro che i due file:
    - pagina1.php
    - my_remote_action.php
    hanno lo stesso id di sessione (li ho stampati con il comando echo e sono identici)
    ho messo session_start() in cima al file my_remote_action.php ma il risultato non è cambiato

    per Grino:
    ho provato la tua soluzione e l'attributo 'nome' è sempre vuoto quando vado a recuperarlo dalla sessione, inoltre stampando i due session id, risultando diversi tra le due pagine



    Riporto il codice che ho provato con i vostri suggerimenti:

    pagina1.php (questa pagina si trova sul mio pc in locale)
    Codice PHP:
    session_start();
    $_SESSION['segretaria'] = "anna" ;
    $PID=session_id();
    header("location: bla bla...miourl.it/action/my_remote_action.php?".$PID); 
    my_remote_action.php (questa pagina si trova su un pc in remoto)
    Codice PHP:
    session_start();
    $nome $_SESSION['segretaria'];
    echo 
    "
    nome: "
    .$nome

  5. #5
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Se i due file sono su server diversi non potrà mai funzionare.

    Quando ti colleghi alla prima pagina il server A creerà un file normalmente in /var/lib/php/session che si chiamerà ad esempio sess_1234567, e qui inserirà tutte le informazioni sulle variabili di sessione;

    Quando vai nella seconda pagina sul server B (passandole con GET l'id di sessione 1234567) questo creerà un altro file sess_1234567 nella sua cartella /var/lib/php/session .... ma sarà un file vuoto.

    l'id di sessione è uguale solo perchè tu le stai dicendo di creare un file con quell'id .... ma per il resto sono due file diversi su due macchine diverse.

    Forse (ma molto forse) se le macchine sono in rete LOCALE potresti impostare entrambe per salvare le sessioni in una cartella condivisa altrimenti quello che vuoi fare non è possibile.


  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Las ho capito perchè non funziona, grazie
    Avrei pensato di passare i dati con il curl, per farlo ho scritto questo codice funzionante:
    Codice PHP:
    session_start();    

    $last_name "tusi";

    $url 'bla bla bla miourl.it/action/my_remote_action.php.php';
    $fields = array(
        
    'lname'=>urlencode($last_name)
    );

    foreach(
    $fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string,'&');
    //open connection
    $ch curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);

    //execute post
    $result curl_exec($ch);
    //close connection
    curl_close($ch); 
    my_remote_action.php (questa pagina si trova su un pc in remoto)
    Codice PHP:
    session_start(); 
    $last_name $_POST['lname'];
    echo 
    "
    last name:"
    .$last_name
    Il problema è che con questo codice riesco a passare delle stringhe, invece io devo passare 10 volte l'oggetto cliente (valorizzato ogni volta con dati differenti) che è una classe composta da vari attributi: nome, cognome, indirizzo, ecc..)

    come faccio a passarli inpost?


    grazie

  7. #7
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    non so come si usino le funzioni curl, però ho notato che esiste un curl_setopt_array .... forse è quello che fa al caso tuo.

    Comunque per quello che vuoi fare secondo me ci sono almeno altre due strade più semplici (sicuramente ce ne sono anche altre, ma a me vengono in mente queste due)

    1. Creare sul DB una tabella sessioni, e in pratica simulare quello che farebbe la sessione nel DB, che naturalmente dovrà essere accessibile da entrambe le macchine

    2. usare i cookie per registrare direttamente nel PC dell'utente i dati che ti occorrono.

    .... ovviamente la seconda ipotesi è da prendere in considerazione solo se i dati non sono particolarmente importanti e quindi non necessitano di segretezza .... in questo caso andrei decisamente sulla prima opzione.


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.