Newsgroup: it.comp.www.php
Titolo: inconveniente sul reload

Salve a tutti.
Sul client ho una sorta di pannello di controllo che invia comandi al
server remoto, il cui meccanismo è estremamente semplice: URL+querystring
costituita da 
- password   pippo
- variabile  azione=faiQualcosa
Nel file.php:
if (esiste $pippo && esiste $azione) {
   if ($azione=="FaiQualcosa") {
   FaiQualcosa($a,$b); // una function fra le numerose presenti
   echo "ho fatto questo e ho fatto quello";
 
Funziona perfettamente.
I guai sorgono nel momento in cui effettuo un reload di pagina: in pratica
è come ripetere la stessa chiamata al server con identica querystring;
ripetendo la chiamata ribadisco il comando, un comando che non voglio certo
ottenere per mezzo di reload.
Ora, se il pannello lo usassi solo io terrei in mente di non dover mai
premere il tasto reload (fine dei problemi); il fatto è che devo affidarne
l'uso a una seconda/terza persona, alla quale gradirei offrire totale
libertà di movimento. 
Mi date una dritta per ovviare all'inconveniente? 
Per ora sono fermo all'idea di scrivere un cookie a comando eseguito e
subordinare l'azione script a cookie !esistente.
Non è che mi soddisfi quel granché, se ne avete una migliore sono
tutt'orecchie.
TIA
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 I guai sorgono nel momento in cui effettuo un reload di pagina: 
Come posso evitare che un utente faccia un Refresh?
http://php.dopoil.com/faq.php?AvoidRefresh
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

 
http://php.dopoil.com/faq.php?AvoidRefresh
Sono andato a rileggermi la faq (le ho lette per intero tempo addietro),
ebbene, AFAIK l'impiego di sessioni non può prescindere dall'avere
abilitata l'accettazione dei cookie. Siamo d'accapo, preferisco non
rischiare.
Se a qualcuno non viene un'idea alternativa (anche *a monte*,
rivoluzionando il criterio di partenza) credo che opterò per un
laborioso quanto faticoso:
- pannello->pag.php che lavora senza produrre output né entrare in cache
- redirect su nuovaPag.php?altraquery= cosa ho fatto e com'è andata
- mex "l'operazione tale dei tali è andata a buon fine | fallita"
Grazie comunque.


 l'accettazione dei cookie. 
Non e' vero, le sessioni possono essere propagate anche senza
l'utilizzo dei cookie.


 - mex "l'operazione tale dei tali è andata a buon fine | fallita"
Questa è la soluzione più indolore. La pagina che "esegue" l'azione mostra
un messaggio di esito ed un rapido redirect alla pagina referente.
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribù Digitale Blackmambo: 
www.blackmambo.it
)

 l'utilizzo dei cookie.
Vuoi forse dire che copiando di sana pianta l'esempio della faq otterrei
quel che desidero indipendentemente dall'accettazione cookie?
O vuoi dire che l'affermazione (in origine preceduta da "As Far As I
Know" che le toglie il tono perentorio assunto nel tuo quoting) č:
1) non sempre vera, il tema č da approfondire
2) assolutamente falsa, sessioni e cookie non dipendono in alcun modo le
une dagli altri
3) [aggiungere ad libitum]


 un messaggio di esito ed un rapido redirect alla pagina referente.
Thanks per il parere ^__- 
P.S. [OT] Gicché ti becco, qualche giorno fa su iclj ho proposto un
incontro (indicativamente) per settembre, stagione buona se piove o se
c'è il sole. Facci un pensierino, siamo abbondantemente in tempo per
organizzarci, apriamo magari un thread dedicato.


 3) [aggiungere ad libitum]
E' sufficiente la riscrittura dell'URL per poter propagare il session
ID tra una richiesta e l'altra per cui i cookie non sono obbligatori.
Inoltre PHP e' in grado di farlo automaticamente senza alcun intervento
se viene configurato per farlo (vedi session.use_trans_sid). Questo e'
un dato di fatto ...


 organizzarci, apriamo magari un thread dedicato.
Okay! In questi tempi non "bazzico" da quelle parti visto che sto lavorando
su progetti di diverso tipo. Per Settembre okay! Anche se sarò molto
impegnato visto che prendo in mano un'azienda... :-))


 Se configuri PHP correttamente si.
Ricapitolando: su un server di cui sono amministratore - una volta
configurato PHP ad hoc - potrei risolvere con lo script che mi hai
indicato; su un server che non mi appartiene no, cioè ni, dipende dalle
impostazioni che trovo, da quel che passa il convento. 
Sfortunatamente il server definitivo è ancora un'incognita, e oltretutto
potrebbe esser soggetto a trasferimenti causa traffico utenza
(operazioni che in futuro non mi riguarderanno, e desidero che
continuino a non riguardarmi).
La conclusione è che il codice della faq, per quanto interessante, non
fa al caso mio. 
Thanks anyway. 


 fa al caso mio. 
La conclusione e' che non leggi quello che ti viene scritto e non
conosci il funzionamento delle sessioni.
Questo e' il codice delle FAQ con due piccole modifiche atte a
risolvere il tuo problema e che funziona su qualsiasi server che
supporti le sessioni e con i client con i cookie disabilitati.
<?php 
session_start(); 
if (!isset($_REQUEST['a'])) $_REQUEST['a']=1; 
if (!isset($_SESSION['a'])) $_SESSION['a']=1; 
$op='normal'; // 
if ($_REQUEST['a']=='reset') 
    $op='reset'; 
else if ($_REQUEST['a']!=$_SESSION['a'])  
    $op='error'; 
switch($op) { 
    case 'normal': 
        echo "<B><FONT color=green>Tutto ok</FONT></B>\n"; 
        break; 
    case 'reset': 
        echo "<B><FONT color=orange>Reset invoked</FONT></B> \n"; 
        $_REQUEST['a']=$_SESSION['a']=1; 
        break; 
    case 'error': 
        echo "<B><FONT color=red>this shouldn't be</FONT></B><BR>"; 
        echo "<BR>Click to <A href=test2.php?a=reset>Reset</A>"; 
        exit; 
} 
$_SESSION['a']++; 
echo "<BR>Test link: <A href=test2.php?a=$_SESSION[a]&" . SID . ">go
2</A><BR><BR>Test form: ";
echo "<FORM method=POST action=test2.php?a=$_SESSION[a]&" . SID . ">"; 
echo "<INPUT type=text name=sendThis
value=\"".@$_REQUEST['sendThis']."\"><BR>";
echo "<INPUT type=submit></FORM><BR>"; 
echo "History back: <A href=\"javascript:history.back(-1)\">"; 
echo "(generates error or Page has Expired)</A><BR><BR>"; 
echo "Data present:<BR><PRE>"; 
echo "\$_SESSION=>"; 
print_r($_SESSION); 
echo "\$_REQUEST=>"; 
print_r($_REQUEST); 
?> 


 risolvere il tuo problema
Molto gradito, lo proverò.


 viene scritto levatelo dalla testa, gentile Astronomy.
[mi quoto]
E' sufficiente la riscrittura dell'URL per poter propagare il session
ID tra una richiesta e l'altra per cui i cookie non sono obbligatori.
[/mi quoto]
[ti quoto]
Ricapitolando: su un server di cui sono amministratore - una volta
configurato PHP ad hoc - potrei risolvere con lo script che mi hai
indicato
[cut]
[/ti quoto]
Se tu avessi veramente letto quanto precedentemente scritto non avresti
concluso con
[ti quoto]
La conclusione è che il codice della faq, per quanto interessante, non
fa al caso mio. 
[/ti quoto]


 La conclusione e' che non leggi quello che ti viene scritto
perché non risponde a verità ed è gratuitamente offensiva. E' facile
essere offensivi; figurati che riesce anche a me, malgrado in
informatica sia una schiappa.


 perché non risponde a verità 
[mi quoto]
E' sufficiente la riscrittura dell'URL per poter propagare il session
ID tra una richiesta e l'altra per cui i cookie non sono obbligatori.
[/mi quoto]
Non mi sembra fosse difficile da capire, cio' nonostante hai continuato
imperterrito a dire che l'esempio delle FAQ non faceva al caso tuo ...
Ora che hai letto quanto ho quotato continui ad esserne convinto?


 Ora che hai letto quanto ho quotato continui ad esserne convinto?
Sono convinto d'altro: se invece di sparare a zero tu avessi avuto un
minimo di riguardo, adesso saremmo a parlare di php, e forse potrei
capire e convincermi di qualcosa, invece non ho capito una sega. Ti
sembrerà strano, ma ero venuto proprio per capire e dialogare
civilmente, non per far fronte alla smargiassata del giorno.
Ora di' la tua, fai la bella figura che devi fare, e smettiamola di
imbrattare il ng.
