Problemas com `reload` • Quando um script faz modificaç˜oes na BD

Transcrição

Problemas com `reload` • Quando um script faz modificaç˜oes na BD
Problemas com ’reload’
• Quando um script faz modificações na BD,
pode haver problemas quando se faz ’reload’
ou ’refresh’.
• Ao fazer ’reload’, o script é executado novamente, o que é indesejável.
1
Servidor
Web
Browser
utilizador
insere dados
num form
e clica em
Submit
POST
200 OK
script processa pedido,
insere um tuplo na BD
e responde ’ok’
...<h1>OK</h1>...
utilizador
faz Reload
POST
200 OK
script processa pedido,
e tenta inserir o mesmo
tuplo!
...<h1>OK</h1>...
2
Solução: redireccionar para uma nova
página
• Envia-se um cabeçalho HTTP, Location:
• Ao fazer ’reload’, o problema deixa de exitir.
3
Servidor
Web
Browser
utilizador
insere dados
num form
e clica em
Submit
POST
script processa pedido,
insere um tuplo na BD
e redirecciona para
uma nova pagina.
301 Moved
K
o.php?Status=O
ltad
Location: resu
browser faz pedido
imediato para
resultado.php
GET resu
ltad
o.php?Sta
tus=OK
script responde OK.
200 OK
utilizador faz
Reload
...<h1>OK</h1>...
GET resu
lt
ado.php?
Status=O
K
200 OK
...<h1>OK</h1>...
script responde OK.
(nao existe tentativa
de nova insercao
do tuplo).
4