Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema con history.back()

    Una breve introduzione: ho un'applicazione PHP che serve a controlli interni della mia azienda, questa è inglobata in un portale web tramite un frame (lo so è deprecabile come scelta, ma è un portale che gira da una decina di anni e non ci sono intenzioni di rimpiazzarlo).

    Ora, questa applicazione compilato un form da parte dell'utente, interroga un database e restituisce una tabella con i risultati richiesti. Questi risultati vengono mostrati nella stessa pagina in quanto è una pagina che si ricarca con 'PHP_SELF'.
    I risultati mostrati in tabella hanno un link ognuno per i dettagli del singolo record visualizzato, cliccandolo, vengo portato in una nuova pagina "dettagli.php" alla quale ho inserito un link history.back() per poter tornare indietro alla pagina deli risultati.

    Ed ecco dove sorge il problema: la prima volta che clicco su "dettagli.php" e poi torno indietro, non mi viene caricata la pagina perchè mi dice che non sono presenti i dati inseriti in precedenza nel form, però ricaricando la pagina (F5 oppure cliccando il reload del browser) torno alla mia bella pagina con la tabella dei risultati correttamente.

    Un'altra cosa strana è che se ad esempio vado a pagina 2 dei risultati che mi ritrovo dalla ricerca effettuata (ho fatto una paginazione per i risultati), poi torno a pagina 1, clicco su un link dettagli (anche sullo stesso che ho cliccato in precedenza), dalla pagina "dettagli.php" di nuovo torno indietro con il mio link di history.back(), la mia bella tabella viene caricata correttamente senza nessun tipo di avviso da parte del browser.

    Questo tipo di errore capita con IE, FF, Chrome e Opera quindi non dipende dalla versione del browser nè dal tipo...

    Spero di essere stato sufficientemente chiaro riguardo al problema che mi si presenta.
    Qualche idea?

    EDIT: preciso che uso già le sessioni per la paginazione e quindi il problema non dovrebbe dipendere da ciò.
    Ho provato anche ad usare history.go(-1) ma nulla, la pagina è scade sempre anche se poi con il refresh mi visualizza tutto correttamente...

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    La spiegazione non è un granché credo che se non metti un link alla pagina diventerà molto difficile fare ipotesi
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Non posso mettere link perchè sono link interni dell'azienda non visibili all'esterno senza VPN.

    Dunque provo a spiegare meglio: ho la mia applicazione PHP che si ricarica una volta ultimata la ricerca.
    I risultati sono mostrati in una tabella che è paginata correttamente utilizzando le sessioni.
    Ogni record ha un campo all'interno della tabella che contiene un link ai suoi dettagli che si caricano tramite la pagina "dettagli.php".

    Nella pagina "dettagli.php" ho inserito un link history.back() per permettere all'utente di tornare indietro che però, una volta premuto, fa scadere la sessione (e la stessa cosa capita anche cliccando il tasto indietro del browser).
    La cosa strana è che se io dalla pagina di sessione scaduta del browser, faccio il refresh (aggiorno la pagina con F5 oppure anche con il tasto apposito del browser) torno effettivamente alla pagina con i risultati iniziali.

    E' più chiaro? In pratica scade la sessione se faccio back, ma se la aggiorno, la sessione ritorna a funzionare correttamente.

    In più se, anzichè cliccare subito subito su un dettaglio, vado prima a pagina 2 della paginazione, torno indietro a pagina 1 e clicco su un dettaglio, vengo quindi portato correttamente alla pagina "dettagli.php" di quello specifico record e se da qui clicco sul link history.back() ecco che allora non mi dà problemi e torno correttamente alla pagina dei risultati iniziali.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Prova cosi invece che mettere history.back() metti il link alla pagina precedente (come se la dovessi caricare ex-novo) onclick="location.href='nomepaginaprecedente.php'" (puoi anche usare un href) se non dovesse funzionare attendi altri consigli
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Non posso usare il link alla pagina precedente perchè a questo stesso batch vi si può accedere da diverse parti e io non so a prescindere l'utente da dove arrivi e non so a prescindere nemmeno da che pagina della paginazione.

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Quanto da te descritto accade perche' il form che richiama la pagina alla quale vuoi tornare ha method=post, se puoi sopportare di vedere i parametri nella barra degli indirizzi usa method=get

    Oppure puoi gestire piu' laboriosamente lato server... con un uso ragionato delle session, ma il javascript in tutto questo non puo' esserti utile.
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Ho risolto con un uso oculato delle session alla fine non era niente di complesso.

    Bastava solo dargli in pasto il link della pagina controllando da quale veniva con un ciclo if in modo da gestire il ritorno indietro al primo o al secondo form di ricerca e facendo gestire il tutto dal caso in cui nella pagina sia presente la paginazione dato che tutti i parametri necessari sono memorizzati nell'array di sessione.

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.