Visualizzazione dei risultati da 1 a 8 su 8

Discussione: CACHE CONTROL non va

  1. #1

    CACHE CONTROL non va

    Ho un problema di refresh con una pagina PHP che contiene un form di selezione atto ad estrarre un elenco immobili da MYSQL.
    Se entro nella pagina senza compiere alcuna scelta vedo tutti gli annunci e posso liberamente spostarmi ad un'altra pagina e tornare indietro senza problemi.

    Se però ho eseguito un submit e provo ad allontanarmi dalla pagina, quando torno indietro i browser mi chiedono di ricaricarla manualmente.
    So che per risolvere il problema bisogna impedire al browser di memorizzare dati nella cache, così ho inserito ad inizio pagina:
    Codice PHP:
    header('Cache-Control: no-cache');
    header('Pragma: no-cache'); 
    Così però mi risolve il problema solo su Mozzilla FF, mentre su Safari e IE non c'è alcun miglioramento.

    Avete qualche soluzione???

    Luca

  2. #2
    Up!!!
    Ma possibile che tra tutti i maghi del codice che bazzicano da queste parti non ce n'è uno che sa darmi un aiutino?

  3. #3
    onestamente non è chiaro ciò che chiedi...
    se ho capito male hai una pagina a contenuti dinamici in base a dati inviati via post...

    ma se non fai vedere un minimo di codice è impossibile risp...

  4. #4
    Mi sembrava di essere stato abbastanza chiaro, comunque provo ad esserlo maggiormente:
    la pagina ha certamente contenuti dinamici ed è suddivisa da una parte in testa che contiene il form di selezione nel database MySQL ed un elenco in cascata contenente i dati dati selezionati nel db.

    Alla prima apertura pagina faccio in modo che vengano automaticamente prelevati tutti i record del db.
    Se entro nella pagina in questione, senza effettuare alcuna scelta nel form, posso spostarmi ad altre pagine e poi tornarci indietro con freccia sx senza alcun problema, ma se eseguo un post dal form e poi esco dalla pagina l'history back non funziona più perchè viene chiesto di fare refresh pagina.
    Siccome presumo sia sufficiente impedire il caching della pagina ho inserito il codice sopra riportato, peccatpo che funziona solo con Firefox ma non con IE e nemmeno con Safari.

    Se vuoi posto il codice, però è abbastanza lungo e non vorrei intasare il form

  5. #5
    aspetta risposte più autorevoli della mia... però ti dico io cosa farei.
    Credo che per "form di selezione" intendi un form che ha esclusivamente un select-option nonchè un submit:

    io fare diversamente:
    un select che all'evento onchange ricarica la pagina stessa ma con l'invio con un dato via GET in questo caso non credo si avranno nessun tipo di problema

  6. #6
    Sto facendo come dici tu per quanto riguarda il comando onchange, solo che uso il metodo post anzichè il get, anche se in effetti non ci sono ragioni di sicurezza tali da impedirmi di usare GET...se non trovo la soluzione cambi sistema.

    Altri consigli???

  7. #7
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    ho capito pochissimo su cosa cerchi! .. e non sono l'unico.
    Forse la risposta che ti interessa è in questo 3D
    http://forum.html.it/forum/showthrea...=&pagenumber=1

    altro non so
    ciao

  8. #8
    Mi sa che faccio prima a postare tutto il codice, l'avete voluto voi :
    questo è il codice principale
    Codice PHP:
    <?php
    if(!isset($_SESSION))
    {
    session_cache_limiter('private, must-revalidate');
    session_start();


    include(
    "config.php");
    include(
    "selezione.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="-1">

    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="keywords" content="vendita, vendesi, compro, affitto, locazione, appartamento, appartamenti, commerciali, uffici, industriali, annunci immobiliari, immobiliare, milano" />
        <title>Diffusione Immobiliare - proposte</title>
        
            

        
        <link rel="stylesheet" href="css/kriframework.css" type="text/css" media="screen" />
        
        <link rel="stylesheet" href="js/prettyPhoto/css/prettyPhoto.css" type="text/css" media="screen" charset="utf-8" />    
        
        <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />    
        
        <link rel="icon" href="http://www.diffusioneimmobiliare.com/Images/favicon.ico" type="image/x-icon" />
        <link rel="shortcut icon" href="http://www.diffusioneimmobiliare.com/Images/favicon.ico" type="image/x-icon" />
        
        
        <link rel="stylesheet" href="css/style1.css" type="text/css" media="screen" />
        
        <!--
        <link rel="stylesheet" href="css/style2.css" type="text/css" media="screen" />
        <link rel="stylesheet" href="css/style3.css" type="text/css" media="screen" />
        <link rel="stylesheet" href="css/style4.css" type="text/css" media="screen" />
        -->
        
                
        <script type='text/javascript' src='js/jquery.js'></script>
        <script type='text/javascript' src='js/cufon.js'></script>
        <script type='text/javascript' src='js/geosans.js'></script>
        <script type='text/javascript' src="js/prettyPhoto/js/jquery.prettyPhoto.js"  charset="utf-8"></script>    
        <script type='text/javascript' src='js/custom.js'></script>
        

    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-20367782-1']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>

    </head>
    <body id='top' >

        <div class="wrap_fullwidth" id='head'>
        
        
        
        
        </div>
        
        
        <div class="wrap_fullwidth" id='second_header'>
        
            <div class='center'>
            
            [url="index.html"][img]images/skin1/logo_sito.jpg?<?php echo time(); ?>[/img][/url]
            
                <ul id="nav">
                    [*][url="index.html"]Home[/url]
                    
                    [*][url="chisiamo.html"]Chi siamo[/url]
                    <li class='current'>[url="immobili.php"]Proposte[/url]
                    [*][url="#"]Servizi[/url][*][url="news.html"]News[/url]
                    [*][url="contact.php"]Contatti[/url]
                [/list]
            
            </div>
        
        
        </div>
        
        
            
    <div class="wrap_fullwidth small_margin" id='main'>
            
        <div class='center'>
            <div class='info_noslide' id="seleziona">
            <form name="selezione" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"> 
            <fieldset>
            <span class="item_data" style="float:left; padding-right:30px">
            CONTRATTO

            <input type="radio" name="contratto" value="Vendita" <?php echo $vendita?>>Vendita

            <input type="radio" name="contratto" value="Locazione" <?php echo $locazione?>>Locazione

            </span>
               <span class="item_data" style="float:left; padding-right:30px">
            CATEGORIA

            <input type="radio" name="categoria" value="Residenziale" <?php echo $residenziale?>>Residenziale

            <input type="radio" name="categoria" value="Commerciale" <?php echo $commerciale?>>Commerciale

            <input type="radio" name="categoria" value="Industriale" <?php echo $industriale ?>>Industriale

            </span>
            <span class="item_data" style="float:left; padding-right:30px">
            TIPOLOGIA
       
           <select  name="tipologia" onchange="this.form.submit()" style="font-size:10px"> 
            <option selected="<?php $default_tipologia?>"><?php echo $default_tipologia?></option>
            <?php if ($default_tipologia!="OGNI") {//con PHP lavoro dinamicamente
            
    echo "<option value=\"OGNI\">OGNI</option>"; }//evito che la option OGNI venga ripetuta
            
    $query="SELECT tipologia FROM immobili GROUP BY tipologia ORDER BY tipologia"//seleziono evitando i duplicati con GROUP
            
    $risultato=mysql_query($query) or die(mysql_error()); //interrogo il db (se vuoto da errore)
                
    while($riga=mysql_fetch_array($risultato)){//esploro tutta la tabella estraendo i record uno alla volta 
                
    $tipologia=$riga['tipologia'];
                if (
    $tipologia==$default_tipologia) continue;//quando trova calori uguali a quello precedentemente selezionato salta ciclo
                
    echo "<option value=\"$tipologia\">$tipologia</option>";//per ogni riga creo una opzione di selezione
                
    }//fine del while 
            
    ?> 
            </select>
             </span>
             <span class="item_data" style="float:left; padding-right:30px">
            DOVE

              <select  name="dove" onchange="this.form.submit()" style="font-size:10px"> 
            <option selected="<?php $default_dove?>"><?php echo $default_dove?></option>
               <?php  if ($default_dove!="OGNI") {
            echo 
    "<option value=\"OGNI\">OGNI</option>"; }
            
    $query="SELECT dove FROM immobili GROUP BY dove ORDER BY dove"
            
    $risultato=mysql_query($query) or die(mysql_error()); 
                while(
    $riga=mysql_fetch_array($risultato)){
                
    $dove=$riga['dove']; 
                if (
    $dove==$default_dove) continue;
                echo 
    "<option value=\"$dove\">$dove</option>";
                }
    //fine del while 
            
    ?> 
              </select> 
            </span>
            
            <span class="item_data" style="float:left; padding-right:30px">
            ZONA

              <select  name="zona" onchange="this.form.submit()" style="font-size:10px"> 
            <?php
            
    if ((!isset($_POST['dove']) && !isset($_GET['page'])) || //al primo caricamento pagina
                
    $default_dove=="OGNI" || // oppure avevo già sottomesso il form e scelto dove=OGNI
                
    $_POST['dove']=="OGNI"//oppure ho appena selezioanto OGNI nelle option dove
                
    {echo "<option selected=\"OGNI\">OGNI</option>";}
            else {
                echo 
    "<option selected=\"$default_zona\">$default_zona</option>";
               if (
    $default_zona!="OGNI") {
            echo 
    "<option value=\"OGNI\">OGNI</option>"; }
            if (isset(
    $_POST['dove'])) {
                
    $form_dove="dove='".$_POST['dove']."' AND";} else {$form_dove="";}
            
    $query="SELECT zona FROM immobili WHERE $form_dove 1=1 GROUP BY zona ORDER BY zona"
            
    $risultato=mysql_query($query) or die(mysql_error()); 
                while(
    $riga=mysql_fetch_array($risultato)){
                
    $zona=$riga['zona']; 
                if (
    $zona==$default_zona) continue;
                echo 
    "<option value=\"$zona\">$zona</option>";
                }
    //fine del while 
            
    }//fine di else
            
    ?> 
              </select> 
            </span>
            <span class="item_data" style="float:right;  padding-right:150px">
            



            <input type="hidden" name="immobili" value="1" />
            <input align="right" width="100%" type="submit" name="Submit" value="cerca" />
               </span>
      
            </fieldset>
            </form>
            
            </div>
        
        </div>

            <div class="center">
                
               
                <?php include 'download_pag.php'?>
                
        
            

                <!--<div class="pagination">
                        <span class="current">1</span>
                        [url="#"]2[/url]
                        [url="#"]3[/url]
                        [url="#"]4[/url]
                        [url="#"]5[/url]
                        [url="#"]6[/url]
                        [url="#"]7[/url]
                </div> -->
            
            
            </div>
        
        
        </div>
        
        
        <div class="wrap_fullwidth" id='breadcrumb_wrap'>
        
            <div class='center'>
            
                <p class='breadcrumb'>
                <span class="breadcrumb_info">You are here:</span> 
                [url="index.html"]Home[/url]
                <span> » </span><span class="current_crumb">Proposte</span>
                
                </p>
                
                <ul class="social_bookmarks">
                    <li class="rss">[url="#"]RSS[/url]
                    <li class="facebook">[url="#"]Facebook[/url]
                    <li class="twitter">[url="#"]Twitter[/url]
                    <li class="flickr">[url="#"]flickr[/url]
                    <li class="skype">[url="#"]Skype[/url]
                [/list]
            
            
            </div>
        
        
        </div>
        
        
        <div class="wrap_fullwidth" id='footer'>  
        
            <div class='center'>
                <span class='copyright'>All content Copyright &copy; 2010 Diffusione Immobiliare</span>
                [url='#top']top[/url]
            
            </div>
        
        
        </div>
        
    </body>
    </html>
    mentre questo quello della pagina selezione.php che come vedrete ha lo scopo di memorizzare le scelte fatte e renderle disponibili al form come option selected. Da quando ho aggiunto i controlli di cache in questo file su Firefox non ho più avuto problemi.
    Codice PHP:
    <?php
    if(!isset($_SESSION))//apri sessione solo se non ancora aperta
    {
    session_cache_limiter('private, must-revalidate');
    session_start();
    }
    // prevent caching (php)
    header("Cache-Control: no-cache");
    header("Expires: -1");


    //condizione che si verifica alla prima apertura pagina immobili.php o alla prima di elenco.php via riservata.php
    //page esiste se premo pulsante cambio pagina, immobili se sottometto form in immobili.php e elenco arriva dal form di riservata.php
    if((empty($_POST['immobili']) && empty($_GET['page'])) || !empty($_POST['elenco'])){ 
        
    $_SESSION['default_tipologia']="OGNI";        //select option selected
        
    $_SESSION['default_dove']="OGNI";             //select option selected
        
    $_SESSION['default_zona']="OGNI";            //select option selected
        
    $_SESSION['residenziale']="checked=\"checked\"";    //radio button checked
        
    $_SESSION['commerciale']="";
        
    $_SESSION['industriale']="";
        
    $_SESSION['vendita']="checked=\"checked\"";            //radio button checked
        
    $_SESSION['locazione']="";
    }

    if (!empty(
    $_POST['immobili'])) {//se utilizzo il form di selezione

         
    $_SESSION['default_dove']=$_POST['dove'];
        
    $_SESSION['default_zona']=$_POST['zona'];
        
    $_SESSION['default_tipologia']=$_POST['tipologia'];
        
            if         (
    $_POST['contratto']=="Locazione") {//verifico il valore dei radio contratto e memorizzo l'ultima scelta
                
    $_SESSION['locazione']="checked=\"checked\"";
                
    $_SESSION['vendita']="";
                }
            elseif    (
    $_POST['contratto']=="Vendita") {
                
    $_SESSION['locazione']="";
                
    $_SESSION['vendita']="checked=\"checked\"";
                }
        
            if         (
    $_POST['categoria']=="Residenziale") {//verifico il valore dei radio categoria e memorizzo l'ultima scelta
                
    $_SESSION['residenziale']="checked=\"checked\"";
                
    $_SESSION['commerciale']="";
                
    $_SESSION['industriale']="";}
            elseif    (
    $_POST['categoria']=="Commerciale") {
                
    $_SESSION['residenziale']="";
                
    $_SESSION['commerciale']="checked=\"checked\"";
                
    $_SESSION['industriale']="";}
            elseif    (
    $_POST['categoria']=="Industriale") {
                
    $_SESSION['residenziale']="";
                
    $_SESSION['commerciale']="";
                
    $_SESSION['industriale']="checked=\"checked\"";}
    }

    $default_tipologia=$_SESSION['default_tipologia'];        //select option selected
    $default_dove=$_SESSION['default_dove'];                 //select option selected
    $default_zona=$_SESSION['default_zona'];                 //select option selected

    $residenziale=$_SESSION['residenziale'];                //radio button checked
    $commerciale=$_SESSION['commerciale'];
    $industriale=$_SESSION['industriale'];
    $vendita=$_SESSION['vendita'];                            //radio button checked
    $locazione=$_SESSION['locazione'];
    ?>
    No includo il file download_pag.php semplicemente perchè questo prende i dati inviati dal fom con il metodo POST e va a leggere nel db con SELECT WHERE, come detto tramite un controllo al primo caricamento pagina rende disponibili tutti i record del db.

    Grazie

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.