Back Forward e refresh

Monumentale

Utente Attivo
14 Nov 2009
79
0
0
Ciao a tutti eccomi di nuovo.
L'anno scorso grazie al vostro impeccabile contributo sono riuscito a realizzare il mio sito www.diffusioneimmobiliare.com di cui vado abbastanza fiero perché frutto della testardaggine più che di conoscenze personali.

Il probelma che oggi devo assolutamente risolvere riguarda, come si evince nel titolo, il fatto che non sono riuscito a far si che dopo aver interrogato il db MYSQL, se seleziono un record ed apro i relativi dettagli, premendo il tasto back mi compare il popup per il refresh di pagina.

Al momento ho risolto aprendo il record in una nuova pagina, però questo non potrà più andare bene perché ho deciso di utilizzare questo sito anche con una vetrina interattiva con navigazione touch.

Vi ringrazio anticipatamente e fattio i miei complimenti per il forum
 
Ciao Alessandro, intendo il classico messaggio di FF, ma comunque con explorer è lo stesso, che ti chiede di ricaricare la pagina quando premi il tasto back.
 
In pratica ricevi una finestra di notifica dal programma (non un popup) in cui il browser ti avverte che i dati verranno ricaricati?
 
Esatto, se vuoi posso postare il codice php, il resto lo vedi con FF, però se ti posso aiutare sappi che finchè non eseguo una ricerca nel db, ma mostro semplicemente tutti i record, posso selezionarne 1 e poi tornare indietro senza problemi.
Solo quando eseguo la query di ricerca il problema si presenta.

In php ho diviso il codice i 2 blocchi, il primo alla prima apertura pagina con una SELECT che preleva tutto e fa il paging, se poi utilizzi il form per scremare vado ad utilizzare il secondo blocco che esegue la SELECT con i dati prelevati dal form.

Stasera ti metto il codice php del file che fa questo.
 
Ecco il codice php che uso per selezionare tutti o solo alcuni record del db MYSQL, come vedrete ho già inserito un controllo della cache, e ne ho provati veramente tanti trovati nei vari forum internazionali, ma senza reale risultato.

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'];
?>
 
Up

Vabbè non posso credere che non siate in grado di aiutarmi, dunque per incentivarvi prometto una "lauta" ricompensa per colui che troverà la soluzione.:book::hammer:
 
ciao, io ho trovato un js su internet che fa quello che voi solo che funziona solo per ie invece su firefox non funziona c'è da vedere se c'è la possibilità.
Io non sono un grande esperto di js.. ma non ci capisco ancora nulla di javascript.
ti allego il codice:
PHP:
<script>
window.history.forward(1);
document.attachEvent("onkeydown", my_onkeydown_handler);
function my_onkeydown_handler()
{
switch (event.keyCode)
{

case 116 : // 'F5'
event.returnValue = false;
event.keyCode = 0;
window.status = "We have disabled F5";
break;
}
}
</script><?php

if (isset($_POST['submit'])) {

		$nome = $_POST["_nome"];
    	echo $nome;
		
		$msg =  "inserito";
    // esegui le normali operazioni
}

?>
<?php
 if(isset($error)){ echo $error;}
if(isset($msg)){ echo $msg;} else {
?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	<input type="text" name="_nome"  />
    <input type="submit" name="submit" value="Invia" />
</form>
<?php } ?>

prova con internet explorer

il codice php e mio ma il javascript lo trovato nei siti americani.

ciao.
 
Ultima modifica:
Ho bisogno di alcune spieghe circa il significato del codice JS e dell'ultima parte del PHP quando verifichi la variabile $error.

Mi confermi anche come inerire il codice?

Grazie
Luca
 
Ho bisogno di alcune spieghe circa il significato del codice JS e dell'ultima parte del PHP quando verifichi la variabile $error.

Mi confermi anche come inerire il codice?

Grazie
Luca
allora la variabile $error viene richiamata come $msg , però la error rimane anche il form..e stampa l'errore , invece la variabile $msg fa scomparire il form e fa apparire il messaggio che voi .

per il js guarda su internet con questa frase "disable f5 javascript" su google .. solo che io so poco l'inglese e copio solo il codice.

vedi se te forse ne sai più di me di inglese.

ciao.
 
Quelle righe di Javascript servono per disabilitare il tasto F5, ma non è una soluzione per niente professionale e nemmeno efficace, in quanto c'è un altro milione di modi per aggiornare la pagina.

si è cosi....
però può fare sempre un controllo del tempo che non si deve postare per 120 secondi etc..

può essere?

ciao.
 

Discussioni simili