timer in php alla fine un'azione

  • Creatore Discussione Creatore Discussione max_400
  • Data di inizio Data di inizio

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
alla scadenza del timer (magari un 20 secondi) visualizza una scritta

PHP:
$seconds=20;
$seconds--;
...
echo "tempo scaduto - fine sessione";
session_start();
session_destroy();

domanda semplice e diretta...
come si fa? :book:


Ps: uno script breve... molto breve il più breve possibile... grazie!

Prossima discussione "click su pulsante una volta sola".
 
In PHP non è possibile impostare un timer. L'unica cosa che puoi fare è mettere in pausa lo script, ma questo comporta anche che nessun'altra operazione venga eseguita in quel lasso di tempo. Puoi fare così:
PHP:
<?php
set_time_limit(0);

$seconds = 20;
sleep($seconds);

// operazioni da eseguire alla scadenza
 
timer javascript per azionare funzione php

Grazie gighen...

la pagina tiene a caricarsi e poi alla scadenza dei secondi compare la scritta
però questo caricamento prolungato della pagina non mi piace.

esempio
http://max400scuola.altervista.org/aaa/timer-gighen.php

PHP:
<?php
if(isset($_POST['pulsante'])){

set_time_limit(0);
$seconds = 5;
sleep($seconds);

// operazioni da eseguire alla scadenza 
echo "sessione terminata";
}
?>


<form action="#" method="POST">
<input type="submit" name="pulsante" value="avvia timer">
</form>

Avevo provato con un countdown in javascript però all'interno di esso non povo mettere istruzioni php



guarda quest'esempio :book:
http://max400scuola.altervista.org/aaa/a-php/session-tutto-in-una-pagina.php

in quest'esempio sei off-line fino a quando non scrivi il tuo nome avviando la sessione
alla scadenza dei 20 secondi vai in una pagina dove c'è il comando per terminare la sessione.
In poche parole volevo riuscire a fare tutto in una pagina
ma temo non sia possibile.

qui c'è una funzione javascript per il countdown
ecco lo script
PHP:
<script>

var timer;
var seconds=21;
var b="banana";
var c="";

function da_capo(){	
	clearInterval(timer);
	seconds=11;
	b="banana";
	c="";
	document.counter.d1.value=c;
	document.counter.d2.value=seconds;
	timeoutf();
}

function display(){

if(seconds >0){
seconds--;
document.counter.d2.value=seconds;
	if(seconds ==0){
		clearInterval(timer);
		document.counter.d1.value=b;
location.href="off-max.php";
}}}


function timeoutf(){
timer=setInterval("display()",1000);
}
timeoutf();

function stop(){
clearInterval(timer);
}

</script>

<form name="counter">
<input type="text" size="10" name="d1"><br>
<input type="text" size="10" name="d2"><br>
<input type="reset" size="4" value="reset">
<input type="button" size="4" onClick="stop()" value="stop"><br>
<input type="button" size="10" onClick="timeoutf()" value="riprendi">
<input type="button" size="10" onClick="da_capo()" value="da capo">
</form> 

<table width=700><tr><td>
<iframe src="stato-max.php" width=200 height=100></iframe></td></tr></table>

<?php
session_start();

if(isset($_POST['pulsante'])){
session_start();
$ben="Benvenuto ";
$_SESSION['nome'] = htmlspecialchars($_POST['nome']);
$_SESSION['ben'] = htmlspecialchars($ben);

$var1=fopen("stato-max.php","w+");
fwrite($var1,"stato: <font color=blue>on-line</font><meta http-equiv='refresh' content='5;  url=stato-max.php'>");
fclose($var1);
}

if(isset($_POST['pulsante2'])){
$messaggio=htmlspecialchars($_POST['messaggio']);
echo "$ben <font color=blue> $nome messaggio inviato!</font>";

$var=fopen("deposito_messaggi.php","a+");
fwrite($var, "<b>Nome: </b> $nome <br> <b>Messaggio:</b> $messaggio<br> ----- <br>");
fclose($var);
}

if(isset($_POST['pulsante3'])){
session_start();
session_destroy(); 
header("Location: session-tutto-in-una-pagina.php");
}
?>

<table border=1 width=500><tr><td>
<form action="#" method="POST">
Scrivi il tuo nome una volta sola: <input type="text" name="nome"><br>
Nome:  <? echo "<font color=blue>$nome</font>"; ?><br>
<input type="submit" name="pulsante"  value="invia">
</form>
</td></tr></table>
<br>


<table border=5 width=500><tr><td>
<form action="#" method="POST">

Nome:  <? echo "<font color=blue>$nome</font>"; ?><br>
Messaggio: <textarea rows=3 cols=30 name="messaggio"></textarea><br>
<input type="submit" name="pulsante2" value="invia">
</form>
</td></tr></table>
<br>

<table border=5 width=500><tr><td align="center">
<form action="#" method="POST">
<input type="submit" name="pulsante3" value="esci">
</form>
</td></tr></table>
<br>
<div align=center>
<a href="session-tutto-in-una-pagina.php">aggiorna</a><br>
<a href="deposito_messaggi.php">deposito messaggi</a><br>
</div>


se guardi queste tre righe:
if(seconds ==0){
clearInterval(timer);
document.counter.d1.value=b;
location.href="off-max.php";


al posto di location avevo messo uno script php per terminare la sessione
ma purtroppo il php non viene letto...forse perchè si trova all'interno dei tag script /script
 
Ultima modifica:
Se alla fine del timer devi terminare la sessione puoi anche cancellare il cookie PHPSESSID dove PHP memorizza automaticamente l'ID di sessione. Senza alcun riferimento la sessione non potrà più essere letta. La cosa si può fare con Javascript senza alcun problema.
 
Cancellazione cookie a fine countdown in che modo? E qual è lo script?

bò....è proprio in javascript che non riesco a controllare il php a meno che non uso il location che va a prendere un altra pagina php la quale distrugge la sessione.

Come fa javascript a cancellare il cookie alla fine del countdown? :book:
 

Discussioni simili