Visualizzazione risultati 1 fino 8 di 8

Discussione: GET, sessione, php

  1. #1
    Guest

    Unhappy GET, sessione, php

    Buongiorno a tutti, avrei un piccolo problema riguardo il GET di PHP.
    Ho una pagina con 3 link e in base al link che viene premuto vorrei modificare una variabile tramite sessione.
    Ecco il codice in questione:
    l'url di questa pagina si presenta in questo modo:
    httx://miosito.altervista.org/#/regioni/(non fate caso a httx, è solo per non creare link inutili qui sul forum)

    Codice HTML:
    <a href="#gallery/puglia?selk=1"><span class="highlight">Puglia</span></a><br>
    <a href="#gallery/lombardia?selk=2"><span class="highlight">Lombardia</span></a><br>
    <a href="#gallery/piemonte?selk=3"><span class="highlight">Piemonte</span></a>
                          <?php
                              session_start();
                              if(isset($_GET['selk']))
                              {
                                  $appoggio=$_GET['selk'];
                                  if ($appoggio == '1')
                                  {
                                      $_SESSION['dov'] = "puglia";
                                  }
                                  if ($appoggio == '2')
                                  {
                                      $_SESSION['dov'] = "lombardia";
                                  }
                                  elseif ($appoggio == '3')
                                  {
                                      $_SESSION['dov'] = "piemonte";
                                  }
                                  else
                                  {
                                      $_SESSION['dov'] = "ciao";
                                  }
                              }
                          ?>
    E qui sorge il problema, non appena interrogo la variabile $_SESSION['dov'] in qualsiasi altra pagina, il risultato è sempre "ciao".
    Dove sbaglio?
    Ah l'URL che mi si genera appena clicco sul link è il seguente:
    httx://miosito.altervista.org/#/regioni/puglia?selk=1
    Non so proprio cosa sbaglio, però su tutti i tutorial che ho visto, quando usano il GET, prima della variabile c'è sempre .php?variabile=valore invece io ho direttamente il punto interrogativo.
    La pagina ha estensione .php e la sessione viene inizializzata prima che qualunque altro output in php venga generato.

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,709

    Predefinito

    Le sessioni sono contenute nell'header della pagina.
    Una volta che l'header è stato inviato, non è possibile più modificarlo. Quindi prima di terminare l'invio dell'header devi aver già effettuato la session_start() e quindi aver "aperto" la sessione.
    Automaticamente, l'header viene "ultimato" appena invii un qualsiasi carattere HTML (anche uno spazio bianco). Quindi, prima di inviare qualsiasi carattere in uscita nell'HTML, devi aver effettuato la session_start().

    Quindi dal tuo codice vedo che prima della session_start() hai dell'html. Dovresti fare una cosa del genere:

    Codice PHP:
    <?php session_start(); ?>

    <!-- qui codice html della pagina, come i tuoi <a> del tuo codice -->
    <?php
    //qui il codice PHP che fa uso delle sessioni
    ?>

    -------------
    Ulteriore consiglio (non è un errore), il tuo codice potrebbe esser riscritto più semplicemente così:

    Codice PHP:
    if(isset($_GET['selk']))
    {
    if(
    $_GET['selk'] == '1')
    {
    //parentesi graffe opzinali visto che c'è solo un'istruzione
    $_SESSION['dov'] = "puglia";
    }
    else if(
    $_GET['selk'] == '2')
    {
    $_SESSION['dov'] = "lombardia";
    }
    else if(
    $_GET['selk'] == '3')
    {
    $_SESSION['dov'] = "piemonte";
    }
    else
    {
    $_SESSION['dov'] = "ciao";
    }
    }
    o meglio:
    Codice PHP:
    if(isset($_GET['selk']))
    {
    switch(
    $_GET['selk'])
    {
    case
    '1':
    $_SESSION['dov'] = "puglia";
    break;
    case
    '2':
    $_SESSION['dov'] = "lombardia";
    break;
    case
    '3':
    $_SESSION['dov'] = "piemonte";
    break;
    default:
    $_SESSION['dov'] = "ciao";
    }
    }
    Oppure, per rendere il codice un po' più dinamico (e facilmente modificabile):
    Codice PHP:
    $regioni = array('puglia', 'lombardia', 'piemonte');
    if(isset(
    $_GET['selk']))
    {
    if(isset(
    $regioni[$_GET['selk']]))
    $_SESSION['dov'] = $regioni[$_GET['selk']];
    else
    $_SESSION['dov'] = "ciao";
    }
    EDIT:

    Solo ora vedo gli url dei link. Come mai hai l'àncora #gallery/... ? Non mi sembra corretto.

    Ciao!
    Ultima modifica di alemoppo : 29-11-2016 alle ore 13.11.39

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    ...EDIT:

    Solo ora vedo gli url dei link. Come mai hai l'àncora #gallery/... ? Non mi sembra corretto.

    Ciao!
    Inanzitutto grazie per i consigli che mi hai dato.
    Il sito che devo realizzare è composto nel seguente modo:
    ho 3 grandi sezioni: regioni, natura e arte.
    Ogni sezione(regioni, natura, arte) ha diversi album, quindi ad esempio regioni avrà 20 album, natura avrà un album fatto su montagne, un album fatto su mare ecc.. ogni album con il proprio nome.
    Praticamente il sito è fatto tutto in angular(non da me) e il mio compito è di metterlo su altervista.
    Abbiamo bisogno di altervista perchè vogliamo che il cliente, tramite il pannellino di altervista, possa caricare le immagini autonomamente, senza dipendere da noi, direttamente nelle cartelle dei vari album.
    Esempio se il cliente va a fare 10 foto in Trentino, autonomamente va su altervista e le butta nella cartella Trentino.
    Il php tramite cicli for stamperà tutte le immagini in modo automatico. Tutto qui.
    Invece attualmente con angular, le immagini vengono caricate su un array scritto manualmente.
    Quindi non so perchè abbiano fatto l'àncora. In azienda mi hanno chiesto questo e dovrei riuscire a farlo
    È quindi impossibile usare il GET quando si usano le àncore?
    Pensi che non sia possibile?
    Piccolo OT: non lavoro per l'azienda, ci sto facendo uno stage
    Ultima modifica di retrey : 29-11-2016 alle ore 14.59.34

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,709

    Predefinito

    Prova spostandola in fondo all'url, così:

    Codice:
    ./puglia?selk=1#gallery
    Però dipende dal percorso del file.

    Ciao!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Prova spostandola in fondo all'url, così:

    Codice:
    ./puglia?selk=1#gallery
    Però dipende dal percorso del file.

    Ciao!
    Grazie del tuo tempo.
    Non va, cercherò altre soluzioni. È come se il get non andasse d'accordo con l'àncora.

  6. #6
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,709

    Predefinito

    GET+ancora non vanno in conflitto, li ho usati tante volte assieme (comuqnue, test).

    Secondo me sbagli il percorso.

    EDIT: effettivamente se anche "puglia" fa parte dell'ancora, prova così:
    Codice:
    ./?selk=1#gallerypuglia
    (ma non so quale sia il nome dell'ancora.

    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    ...Secondo me sbagli il percorso..
    Il percorso dovrebbe essere esatto perchè, funzioni php a parte, il sito funziona e anche bene

    Non mi prende il get, infatti se imposto la variabile globale fuori dall'IF, sulle altre pagine riesco a recuperarne il valore.

  8. #8
    Guest

    Predefinito

    Ho risolto tramite javascript
    Praticamente ho impostato onclick sul tag a facendo partire una funzione javascript che genera un cookie successivamente prelevato con PHP sulle altre pagine.
    Grazie ancora.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •