Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    RESPONsO DEI DATI PHP VIA AJAX QUANDO LA SESSIONE SCADE

    Ciao a tutti
    la questione e' questa : in un pagina php faccio una chiamata ajax per far eseguire una query mysql contattando una pagina php.
    La pagine contengono delle sessioni.
    Se la sessione scade mentre eseguo il codice ajax mi carica mezza pagina dove dovrebbe dare il responso in ajax e l'altra la pagina dove viene eseguito il redirect quando la sessione scade.

    per essere chiaro:
    da a.php via ajax chiamo la pagina b.php che esegue il codice e il responso torna in a.php (normale funzionamento ajax)

    Se la sessione � scaduta mi carica parte della pagina a.php e parte della pagina di login.php

    il controllo sulla scadenza delle sessioni viene fatto sia su a.php sia su b.php

    potete/sapete aiutarmi ?

    grazie mille

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Aumenta il tempo di validità della sessione.
    Per scadere durante una chiamata AJAX a quanto ce l'hai adesso?

  3. #3
    Grazie per la risposta MA : anche se lo imposto a 10 o a 60 minuti che senso ha? non mi risolve il problema! la questione si riflette a tutte le pagine che si scambiano dati tramite ajax.

    Se sei loggato e lasci aperta la pagina un ora e poi vai a fare l'operazione il problema persiste!

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Beh, è così che funziona la sessione.

  5. #5
    scusa forse non sono stato chiaro io.
    non è questione di tempo di scadenza di sessione, il fatto è che quando scade la sessione ed io sono ancora dentro una pagina e compio un'operazione attraverso ajax mi carica una parte della pagina vecchia insieme quella del login.
    Invece la logica è che se faccio qualsiasi operazione e la sessione scade deve solo reindirizzarmi alla pagina di login!

    questo succede già normalmente se faccio un passaggio da una pagina php ad un altra, mentre se c'è di mezzo una chiamata ajax succede quello che ho scritto sopra!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    metti un controllo su b.php che valuti se la sessione è scaduta nel qual caso b.php non fa l'operazione richiesta tramite ajax ma reindirizza a login.php

  7. #7
    ti mando il codice che c'è già in b.php

    <?php


    $minutes=5;//Setta logout in minuti

    if (isset($_SESSION["time"])) {
    $sessionTTL = time() - $_SESSION["time"];
    if ($sessionTTL > $minutes*60) {
    session_unset();
    session_destroy();
    header("location:index.php");//redirect user to a login page or any page to which we want to redirect.
    }
    }else {
    session_unset();
    session_destroy();
    header("location:index.php");//redirect user to a login page or any page to which we want to redirect.
    }


    $_SESSION["time"] = time();

    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Ora non so come è strutturata l'applicazione quindi potrei sbagliare, ma se b.php è accessibile solo tramite ajax e non deve essere aperta come pagina singola questo codice non devi mettercelo.

    Basterebbe qualcosa tipo:

    Codice PHP:
    if (session_status() !== PHP_SESSION_ACTIVE) {
        
    header("location:index.php");
    } else {
        
    //processa qui la richiesta ajax, nel caso in cui la sessione sia ancora attiva

    Ultima modifica di M4V1; 16-12-2016 a 17:00

  9. #9
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Ora non so come è strutturata l'applicazione quindi potrei sbagliare, ma se b.php è accessibile solo tramite ajax e non deve essere aperta come pagina singola questo codice non devi mettercelo.

    Basterebbe qualcosa tipo:

    Codice PHP:
    if (session_status() !== PHP_SESSION_ACTIVE) {
        
    header("location:index.php");
    } else {
        
    //processa qui la richiesta ajax, nel caso in cui la sessione sia ancora attiva


    questo codice:
    session_status() !== PHP_SESSION_ACTIVE

    è standard per ogni occasione?

  10. #10
    scusa ma se io inserisco questo codice nella prima pagina :

    <?php
    if (session_status() !== PHP_SESSION_ACTIVE) {
    header("location:index.php");
    } else {
    echo"
    <script type='text/javascript'>
    $('#listR').submit(function(e){

    e.preventDefault(); // Prevent Default Submission
    $('#results').html('<img src='img/loader.gif' height='16' width='16'/>');
    $.ajax({
    url: 'listR.php',
    type: 'POST',
    data: $(this).serialize(), // it will serialize the form data
    dataType: 'html'
    })
    .done(function(data){
    $('#results').html(data);


    })
    .fail(function(){
    alert('Dati al momento non disponibili. Riprovare più tardi.');
    });
    });
    </script>
    ";}
    ?>

    Non viene eseguito quando carico la pagina la prima volta e basta?

    Quando premo il tasto SUBMIT in LISTR non mi funziona nulla!

    Dove sbaglio?
    Ultima modifica di manuel81pd; 20-12-2016 a 17:52

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.