Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ricardo SilSan

Sistema de postagem repetindo envio ao atualizar a página

Recommended Posts

Tenho um sistema de postagem de videos que está funcionando muito bem. Ele tem apenas um problema, depois que faço o envio do link do vídeo, se eu atualizar a página ele repete o ultimo envio como se eu tivesse clicado em enviar novamente, mesmo os campos do formulário estando vazios.

 

Não sei como fazer para impedir isso. Se alguém souber de uma forma para me ajudar agradeço muito.

 

O código do sistema é esse:

 

<?php if(isset($_POST['vai']) && $_POST['vai'] == 'enviar'){
		$url = strip_tags(trim($_POST['url']));
		
		if(substr_count($url, 'youtube') == 1){
			$idVid = substr($url, 31, 11);
			$thumb = 'http://i1.ytimg.com/vi/'.$idVid.'/default.jpg';
			$titulo = $_POST['titulo'];
			$descricao = $_POST['descricao'];
		}elseif(substr_count($url, 'vimeo') == 1){
			$idVid = substr($url, 17);
			$url_img = parse_url($url);
			$titulo = $_POST['titulo'];
			$descricao = $_POST['descricao'];
	}
		
		$envia_video = mysql_query("INSERT INTO videos(titulo, thumb, descricao, embed) VALUES('$titulo','$thumb','$descricao','$idVid')");
		if($envia_video){
			echo '<script>alert("Vídeo cadastrado com sucesso PAGINA DE VIDEOS!")</script>';
		}
	}	
	?>
    	<form action="" method="post" enctype="multipart/form-data">
        	<p>
        	  <label>
        	    <span>Link do video</span>
        	    <input type="text" name="url" />
      	    </label>
        	  <label>
        	    <span><br>Titulo</span>
        	    <input type="text" name="titulo" />
      	    </label>
        	  <label>
        	    <span><br>Descricao</span>
        	    <input name="descricao" type="text" maxlength="300" style=" height:100px;" height=""/>
      	    </label>
        	  
        	  
        	  
        	  <input type="hidden" name="vai" value="enviar" />
       	  </p>
        	<p>
        	  <input type="submit" value="Cadastrar" class="btn-cad" />
      	  </p>
        </form>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é do próprio navegador, se você envia alguma informação e depois aperta F5 ele pergunta se realmente quer enviar de novo, se você confirmar ele dispara o formulário previamente enviado, não há o que fazer quanto a esta funcionalidade. O que você pode fazer para burlar isto é, após enviar o formulário, direcionar o usuário para outra página ou enviar usando ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra evitar isso, eu utilizo unique de múltiplas colunas e, assim, é lançada uma exceção caso os mesmos dados sejam enviados novamente.

 

Com o lançamento da exceção, eu apenas trato-a e exibo a mensagem para o usuário.

 

No meu caso é excelente pois não posso ter duplicação de registros. Caso você possa ter essa duplicação, você deve procurar outra alternativa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, se for uma página do seu painel admin, vc pode redirecionar pra ela msm com header.

 

if($envia_video){
header("Location:/apaginaqueestaessecodigo.php");

}

Se for uma página que tem interação com o usuário vc pode redirecionar para outra página ou usar uma página auxiliar só com o código php, essa página auxiliar vc redireciona para outra para o usuário não vê-la.

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma página.php para receber os dados do form.

coloque no "action" do seu form o endereço da pagina.php.

na pagina.php coloque o seguinte código:

<script type="text/javascript">
   window.setTimeout("location.href='ENDEREÇO_DA_PAGINA_DO_FORM'", 2000);
</script>

será feito um redirecionamento para a página de formulário novamente.

seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.