F_Jr 0 Denunciar post Postado Agosto 8, 2012 Bom galera, a minha dúvida é o seguinte: Tenho um formulário de cadastro de bairros e neste formulário digito o nome do bairro e salvo ele. Após ter salvado ele rediresiona para a listagem de bairros. Assim quero saber uma forma de como impedir que o usuário volte a página anterior, ou seja, o formulário de cadastro de bairro através dos botões de navegação do browser. Consegui resolver o problema do F5 que é o reenvio de informação. Em baixo tenho três exemplos de como impedir o reenvio de informação. header("Location:index.php?result=bairro&acao=listarbai"); header("refresh:0; index.php?result=bairro&acao=listarbai"); print "<script>window.location.href='index.php?result=bairro&acao=listarbai'</script>"; Se alguém puder sugerir de como fazer isto ou algum material falando a respeito disto ficarei grato. Compartilhar este post Link para o post Compartilhar em outros sites
Dian Carlos 29 Denunciar post Postado Agosto 8, 2012 F_Jr como que está o código desse formulário? você está submetendo ele no próprio formulário ou em um documento php separado? Compartilhar este post Link para o post Compartilhar em outros sites
F_Jr 0 Denunciar post Postado Agosto 9, 2012 Estou submetendo em um documento php separado. Compartilhar este post Link para o post Compartilhar em outros sites
Dian Carlos 29 Denunciar post Postado Agosto 9, 2012 Estou submetendo em um documento php separado. Cara, os formulários que faço tbm são submetidos em um documento php separado. Ai eu uso o if, se todas as informações foram adicionadas com sucesso eu redireciono com um header ('Location: pagina.php?id=xxx'), quando você tenta voltar com a navegação do browser, voltar para a página do formulário, e a unica maneira de mandar os dados de novo é so se a pessoa preencher o formulário todo outra vez. Compartilhar este post Link para o post Compartilhar em outros sites
F_Jr 0 Denunciar post Postado Agosto 13, 2012 Em Dian Carlos, assim eu fiz deste jeito que você falou. Mas o que eu quero realmente é que após inserir ou atualizar um registro, ele não volte para a página anterior, ou seja, o formulário de cadastro de bairro. Se ele quiser inserir ou alterar o registro ele tem que estar na listagem de bairros, e partir daí ele pode fazer a inserção ou alteração de um registro. Estava pesquisando sobre isso, eu encontrei aqui no fórum do imasters um exemplo do colega Tonga, só que a minha dúvida é como implementar este código na minha aplicação, para que quando o usuário inserir um novo bairro e cadastrá-lo e ele tentar voltar a página anterior que dê um erro. Dá uma olhada neste link do colega Tonga no final da página. http://forum.imasters.com.br/topic/436039-refresh/ E faça o teste com o código que ele postou é isto que eu estou querendo. Quero saber como implementá-lo dentro da minha aplicação. Bom pessoal, tinha falado no meu post de como impedir que o usuário volte a página anterior, na verdade não é isto o que eu quero. O que eu estou querendo é que se o usuário inseriu ou alterou dados no formulário e apertou o botão de cadastrar ou atualizar, ele irá para uma página de listagem por exemplo de bairros, mas se o usuário aperta o botão do teclado o backspace ou voltar nos botões de navegação do browser apareça uma mensagem de erro padrão. Eu quero que este erro seja mostrado após ter dado um submit no formulário e se o usuário tentou voltar para a página anterior. Pesquisei sobre isto e até agora não encontrei nada. Assim já entrei em alguns sites em php onde se cadastra o usuário através de formulário e após preencher todos os dados e clicar no botão cadastrar, o usuário era direcionado para outra página. Mas se ele tentasse voltar a página anterior após ter dado um submit nesse formulário aperecia uma mensagem de erro padrão para este usuário, é como se não existisse o formulário de cadastro e esta linha de racícionio que estou querendo. Se alguém souber como fazer isto ficarei grato, porque até agora não encontrei nada em relação a isto. Compartilhar este post Link para o post Compartilhar em outros sites
Dian Carlos 29 Denunciar post Postado Agosto 13, 2012 Bom pessoal, tinha falado no meu post de como impedir que o usuário volte a página anterior, na verdade não é isto o que eu quero. O que eu estou querendo é que se o usuário inseriu ou alterou dados no formulário e apertou o botão de cadastrar ou atualizar, ele irá para uma página de listagem por exemplo de bairros, mas se o usuário aperta o botão do teclado o backspace ou voltar nos botões de navegação do browser apareça uma mensagem de erro padrão. Eu quero que este erro seja mostrado após ter dado um submit no formulário e se o usuário tentou voltar para a página anterior. Pesquisei sobre isto e até agora não encontrei nada. Assim já entrei em alguns sites em php onde se cadastra o usuário através de formulário e após preencher todos os dados e clicar no botão cadastrar, o usuário era direcionado para outra página. Mas se ele tentasse voltar a página anterior após ter dado um submit nesse formulário aperecia uma mensagem de erro padrão para este usuário, é como se não existisse o formulário de cadastro e esta linha de racícionio que estou querendo. Se alguém souber como fazer isto ficarei grato, porque até agora não encontrei nada em relação a isto. F_Jr, achei uma solução simples que não é dificil. Quando o usuário apertar 'cadastrar' ou 'atualizar' o formulário é submetido para a página que vai fazer o tratamento dos dados. Nessa página você cria uma sessão (POR EXEMPLO: $_SESSION['formulario'] = 'cadastrar';. Pode ser dos 2 tipos, uma sessão se o cara cadastrou ou se atualizou) ai na página do formulário você poe o seguinte código php no começo do documento: session_start(); // Inicia a session if ($_SESSION['teste'] == 'cadastrar'){ header ("Location: paginadeerro.php"); exit(); } ?> isso é simples, mas tipo.. assim o cara vai poder cadastrar o bairro somente 1 vez, se ele quizer cadastrar um novo você tem criar uma página para destruir a sessão ou ele tem que fechar o navegador.. testa ai e ve se atende a sua necessidade.. Compartilhar este post Link para o post Compartilhar em outros sites
F_Jr 0 Denunciar post Postado Agosto 13, 2012 E aí Dian Carlos beleza? Em cara a minha dificuldade é o seguinte é onde posicionar o código, eu achei o teu exemplo muito bom, mas o código que eu estava tentando implementar num projeto é este aqui: <?php session_start(); if($_SERVER['REQUEST_METHOD'] == 'POST') { $request = md5(implode($_POST)); if(isset($_SESSION['last_request'])) { print 'refresh<br />'; } else { $_SESSION['last_request'] = $request; print 'post<br />'; } } ?> <form action="teste.php" method="post"> <input type="text" name="teste" value="teste" /> <input type="submit" name="enviar" value="enviar" /> </form> Quando você rodar este código acima digitar um nome no campo texto ou deixando o nome 'teste' e clicar no botão enviar e voltando para a página anterior com backspace ou os botões de navegação do browser, irá dar um erro na página 'Documento fora de validade', é mais ou menos isso que eu quero após ter cadastrado ou atualizado um registro no meu formulário e se o usuário tentar voltar irá dar o erro. Só que não estou conseguindo implementar, eu vi este exemplo com o Willian Bruno explicando para o Tonga como fazer, eu particularmente não consegui implementar isto aqui já mexi várias vezes no meu código aqui mais sem sucesso. O Código abaixo é o meu formulário de bairro, form_bairro.php. <!--CONTEÚDOS--> <?php session_start(); if($_SERVER['REQUEST_METHOD'] == 'post') { $request = md5(implode($_POST)); if(isset($_SESSION['last_request']) && ($_SESSION['last_request'] == $request)) { print 'refresh'; } else { $_SESSION['last_request'] = $request; print 'post'; } } ?> <div id="form"> <fieldset> <form action="index.php" name="form_bairro" method="post" onsubmit="return validarBanco();"> <input type="hidden" name="result" value="bairro" /> <?php if($acao == 'inserirbai'){ $texto = ""; ?> <input type="hidden" name="acao" value="salvarbai" /> <?php } elseif($acao == 'alterarbai') { $texto = $manutencao->_reg->bai_nome; ?> <input type="hidden" name="acao" value="atualizarbai" /> <input type="hidden" name="codigo" value="<?php print $manutencao->_reg->bai_codigo; ?>" /> <?php } ?> <!--*************************************************************************************--> <div id="a1"> <label for="bairro">Bairro.:</label> <div class="div_texbox"> <input type="text" id="bairro" name="bairro" placeholder="Digite o nome do bairro!" title="Digite o nome do bairro!" size="42" value="<?php print $texto; ?>" /> </div> </div> <!--*************************************************************************************--> <div class="button_div"> <?php if($acao == 'inserirbai'){ ?> <input type="submit" id="cadastrar" name="cadastrar" value="cadastrar" class="buttons" /> <?php } elseif($acao == 'alterarbai') { ?> <input type="submit" id="atualizar" name="atualizar" value="atualizar" class="buttons" /> <?php } ?> <input type="reset" id="limpar" name="limpar" value="limpar" class="buttons" /> <input type="button" id="voltar" name="Voltar" value="voltar!" class="buttons" onclick="javascript:history.back()" /> </div> </form> </fieldset> </div> E o código abaixo é do meu arquivo acao_bairro.php. <?php require('manutencao/ManutencaoBairro.class.php'); $manutencao = new ManutencaoBairro(); $acao = isset($_REQUEST['acao']) ? $_REQUEST['acao'] : ""; if($acao == 'listarbai') { $filtro = isset($_REQUEST['filtro']) ? $_REQUEST['filtro'] : ""; print "A Pesquisa é.: ".$filtro; $manutencao->listarBairro(); require('lista/lista_bairro.php'); } if($acao == 'inserirbai') { require('form/form_bairro.php'); } if($acao == 'salvarbai') { if(empty($_POST['bairro'])) { alerta("Favor preencha o campo bairro ou clique no botão voltar!"); header("Location:index.php?result=bairro&acao=inserirbai"); } else { $manutencao->inserirBairro(); $manutencao->listarBairro(); require('lista/lista_bairro.php'); header("refresh:0; index.php?result=bairro&acao=listarbai"); exit(0); } } ?> Em Dian Carlos como eu faria para estar implementando a primeira parte do código acima na minha aplicação. Este é um problema que estou lutando para solucionar e não estou conseguindo, me desculpe por qualquer incômodo porque não conseguindo solucionar este problema. Compartilhar este post Link para o post Compartilhar em outros sites