Ir para conteúdo
Alvaro_php

Enviar código de uma página para outra

Recommended Posts

Pessoal boa noite

Estou começando no PHP e estou com uma dúvida para poder enviar uma confirmação de uma página para outra e não quero mandar pela URL, para não ficar visível ao usuário

Tenho um captcha e nele estou fazendo uma comparação para poder jogar para uma outra página , caso o código esteja certo

<?php session_start();

    if( $_SESSION['captcha'] == $_POST['captcha']){
    header("location: emitir_titulo1.php");
    }else{
        echo "<h1>Erro - Código digitado errado</h1>";
    }

?>

Até ai tudo bem esta fazendo certinho, o que eu quero é que na minha emitir_titulo1.php eu consiga fazer uma identificação qqer, onde demonstre que o usuário passou pelo captcha e não jogou o caminho completo até a página emitir_titulo1

Tentei abri a session no emitir_titulo1 porém não deu certo, pois ela vem em branco, e quando coloco o caminho inteiro da página ele abre normalmente

Tentei usar o $_POST, más não tem como ou não sei enviar mesmo, pois estou chamando a página pelo header

 

 

Então mudei e tentei criar um arquivo txt com a palavra confirmado

<?php session_start();

    if( $_SESSION['captcha'] == $_POST['captcha']){
        $fp = fopen("seguranca.txt","a+");
        $escreve = fwrite($ft,"confirmado");
        fclose($ft);
        header ("location: emitir_titulo1.php");
    }else{
        echo "<h1>Erro - Código digitado errado</h1>";
    }

?>

 

e na página emitir_titulo1.php coloquei

<?php  
    $arquivo = "seguranca.txt";
    $ft=fopen($arquivo,"r");
    $conteudo=fread($ft,filesize($arquivo));
    fclose($ft);
    
    if ($conteudo == 'confirmado')
    {
        unlink("seguranca.txt");
    }else{
        header("location: verificacao.php");
    }
?>

 

Quando a página para executar e digito o código de verificação do captcha, aparece a mensagem abaixo

Warning: fwrite(): supplied argument is not a valid stream resource in caminhodomeuservidor\valida.php on line 5
Warning: fclose(): supplied argument is not a valid stream resource in caminhodomeuservidor\valida.php on line 6
Warning: Cannot modify header information - headers already sent by (output started at caminhodomeuservidor\valida.php:5) in caminhodomeuservidor\valida.php on line 7

 

Más quando coloco o caminho completo da minha página emitir_titulo1.php, ele continua abrindo a página normalmente, e o arquivo gerado esta em branco

 

Alguém pode me dar uma ajuda, estou o dia todo nisso, o bom é que pesquisei bastante coisa, porém não tenho muito tempo para finalizar

 

Desde já agradeço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal olhando tudo direitinho, vi que tinha erro de digitação e agora esta dando para criar o arquivo perfeitamente e esta sendo identificado na segunda página

Porém ele não esta fazendo o que preciso, pois quando se joga o caminho inteiro da página até o emitir_titulo1php, o arquivo seguranca.txt não esta criado pois pulou a parte do captcha, e ai o que tinha em mente era ele tentar abrir o arquivo( QUE NÂO EXISTE ) e com isso a variável $conteudo estar em branco e isso é diferente do confirmado, ele teria que apagar o arquivo e abrir no lugar a página verificao.php automaticamente, só que ele esta carregando a página emitir_titulo1.php normalmente

 

Esse é o comando que esta na emitir_titulo1.php

<?php  
    $arquivo = "seguranca.txt";
    $fp=fopen($arquivo,"r");
    $conteudo=fread($fp,filesize($arquivo));
    fclose($fp);
    
    if ($conteudo == "confirmado")
    {
        unlink($arquivo);
    }else{
        unlink($arquivo);
        header("location: verificacao.php");
    }
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém poderia me dar uma força, eu coloquei o endereço completo da minha página e pulando o meu captcha, e ai o que era para fazer, a página reconhecer que não tinha o arquivo de comparação e carregar a página de verificação

Só que apareceram as mensagens de erro abaixo e a página do emitir_titulo1.php carregou normalmente, ele ignorou o que esta no header

Na tentativa de carregar a página, eu coloquei toda a verificação no topo da página e ai apareceram essas mensagens

 

Warning: fopen(seguranca.txt) [function.fopen]: failed to open stream: No such file or directory in caminhodaminhapaginanoservidor\emitir_titulo1.php on line 3

Warning: filesize() [function.filesize]: stat failed for seguranca.txt in caminhodaminhapaginanoservidor\emitir_titulo1.php on line 4

Warning: fread(): supplied argument is not a valid stream resource in caminhodaminhapaginanoservidor\emitir_titulo1.php on line 4

Warning: fclose(): supplied argument is not a valid stream resource in caminhodaminhapaginanoservidor\emitir_titulo1.php on line 5
não confirmado      <- essa é uma verificação que coloquei, para saber se ele estava identificando que não existia nada, e identificou normalmente
Warning: unlink(seguranca.txt) [function.unlink]: No such file or directory in caminhodaminhapaginanoservidor\emitir_titulo1.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at caminhodaminhapaginanoservidor\emitir_titulo1.php:3) in caminhodaminhapaginanoservidor\emitir_titulo1.php on line 14

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alvaro_php você pode fazer de forma muito mais simples.

 

Recomendo você usar variáveis de Sessão, pois evita problemas em ficar gerando arquivos, lendo e apagando.

E caso exista um acesso simultâneo pode ser que de problema já que o arquivo vai existir para uma pessoa e para a outra que pode tentar burlar também vai existir o arquivo.

 

Você tem essa validação:

<?php
session_start();

if( $_SESSION['captcha'] == $_POST['captcha']){
    header("location: emitir_titulo1.php");
    exit();
}else{
    echo "<h1>Erro - Código digitado errado</h1>";
}
?>

Acredito que esse seja o seu "redirecionador", certo?

Se a pessoa digitar o CAPTCHA que você recebe via POST, juntamente com o CAPTCHA gerado e armazenado no SESSION forem iguais, quer dizer que a pessoa digitou o CAPTCHA corretamente e você vai redirecionar para a página emitir_titulo1.php, certo?

 

Então, caso a pessoa digite e é o código correto, você pode criar uma outra variável de SESSÃO e armazenas um valor qualquer, tipo $_SESSION['checkCaptch'] = "TRUE"; ficando com o código abaixo:

<?php
session_start();

if( $_SESSION['captcha'] == $_POST['captcha']){
    $_SESSION['checkCaptcha'] = "TRUE";
    header("location: emitir_titulo1.php");
    exit();
}else{
    echo "<h1>Erro - Código digitado errado</h1>";
}
?>

Então dentro da página EMITIR_TITULO1.PHP você verifica essa variável.

<?php
IF ($_SESSION['checkCaptcha'] == "TRUE") {
    $_SESSION['checkCaptcha'] = "";
} ELSE {
    header("Location: index.php");
    exit();
};
?>

Como o usuário não consegue ver no navegador o conteudo de uma variável de Sessão, o código fica "seguro" sem a chance de um manuseio direto.

 

Desta forma você não precisa ficar gerando arquivo, lendo, verificando conteudo, validando e tudo mais.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Felipe boa tarde

 

Agradeço o retorno e a idéia, e assim realmente é mais fácil

 

Existe uma página verificacao.php que é onde se digita o código que é gerado,e ao apertar o botão envia vai para o captcha.php que faz a verificação que mencionou

Então coloquei os comandos exatamente como você sugeriu, alias dei um ctrl+c e ctrl+v , só que antes lógico entendi o que você quiz dizer, e sei que se alguém descobrir o caminho direto para a página e tentar colocar, a session estará em branco e ai irá força a abertura da página de verificação.

 

Fazendo o teste aqui, entrei na página de verificação e digitei corretamente o código, porém quando dei o enter apareceu a seguinte mensagem ou mesmo colocando o endereço direto da página emitir_titulo1.php

 

Warning: Cannot modify header information - headers already sent by (output started at caminhodomeuservidor\emitir_titulo1.php:2) in caminhodomeuservidor\emitir_titulo1.php on line 6

 

Que é o comando que esta no topo da página do emitir_titulo1.php

 

Achei que fosse algum problema porque não iniciei a session no emitir_titulo1, porém coloquei e deu uma mensagem de erro que não poderia abrir novamente uma session, deu a mensagem

: Cannot send session cache limiter

 

Será que você pode me dar mais essa força?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alvaro_php

 

Cara, parabéns, de verdade, você faz parte de um grupo de pessoas que não só faz um CONTROL+C e CONTROL+V e espera que funcione, realmente você entendeu a lógica, infelizmente existem erros que acontecem devido a falta do código completo, mas esse erro não está tão difícil de se identificar.

 

Na verdade eu já tive uns problemas deste tipo e consegui resolver tranquilamente, vou tentar explicar e você tenta resolver e se não conseguir chama aqui de novo.

 

Então o erro apontado como você colou é esse:

 

Warning: Cannot modify header information - headers already sent by (output started at caminhodomeuservidor\emitir_titulo1.php:2) in caminhodomeuservidor\emitir_titulo1.php on line 6

 

Esse erro não está onde você comentou "Que é o comando que esta no topo da página do emitir_titulo1.php", o erro está exatamente no comando HEADER como a mensagem de erro apresenta HEADER ALREADY SENT BY, e a linha 6 da página EMITIR_TITULO1.PHP deve bater com a linha em questão, veja o código abaixo:

<?php
session_start();

if( $_SESSION['captcha'] == $_POST['captcha']){
    $_SESSION['checkCaptcha'] = "TRUE";
    header("location: emitir_titulo1.php"); <-- ESTA É A LINHA 6 DO CÓDIGO.
    exit();
}else{
    echo "<h1>Erro - Código digitado errado</h1>";
}
?>

No meu caso esse Warning foi apresentado porque eu tinha vários HEADER na minha página e apenas 1 deles tinha o código EXIT(); após o HEADER, o que isso faz? Simples, o HEADER é um cabeçalho de redirecionamento e se ele não é seguido do comando EXIT(); ele continua a processar todo o conteudo da página e se por ventura ele encontrar outro HEADER no meio do caminho ou outro comando que emita uma "SYSOUT" saida de informação para a tela ele pode gerar esse erro.

 

Entra nesse LINK que da uns detalhes e uma breve explicação, talvéz você entenda o problema.

 

O que você vai precisar ver ai no seu código a inicio é se existe algum outro HEADER e quando eu falo no seu código, eu digo na página completa que você está montando, se você está em VERIFICA.PHP e dentro desse VERIFICA.PHP você tem UM ou VÁRIOS INCLUDES de outros arquivos PHP você vai ter que olhar dentro de todos os arquivos INCLUDES e também no CHAMADOR que neste exemplo acima é o VERIFICA.PHP.

 

Só para que você entenda, no meu caso eu simplesmente coloquei EXIT(); logo após TODOS OS HEADER que estavam na minha "página", na página apresentada e dentro de todos os arquivos Incluidos para compor a minha página.

 

Veja ai se você não tem algo parecido, se você tiver o código que eu coloquei abaixo em um arquivo separado, experimente abrir ele sozinho direto no seu navegador e veja se ele apresenta o mesmo erro de HEADER ALREADY SENT BY acredito que se você rodar apenas esse código no seu navegador, o erro não deve ser apresentado, mostrando que existe sim algo no seu código que gere esse problema que é gerar saida para a tela antes do HEADER.

<?php
session_start();

if( $_SESSION['captcha'] == $_POST['captcha']){
    $_SESSION['checkCaptcha'] = "TRUE";
    header("location: emitir_titulo1.php");
    exit();
}else{
    echo "<h1>Erro - Código digitado errado</h1>";
}
?>

 

* PRECISO DE AJUDA - Vejá meu problema aqui Problemas com SELECT

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ment0r
      Boa tarde à todos.
      Pessoal, estou com o seguinte problema: preciso imprimir uma ficha mensal de trabalho, mas quando vou imprimir, a página para impressão sai "cortada".
       

       
      A imagem acima representa a ficha que preciso imprimir, está tudo ok com essa (tirei o cabeçalho, pois não vinha ao caso)
       

       
      Vejam como fica na impressão: com aproximadamente 2/3 da largura.
       
      <style> body { width: 100%; height: 100%; margin: 0; padding: 0; background-color: #FAFAFA; } * { box-sizing: border-box; -moz-box-sizing: border-box; } .page { width: 210mm; min-height: 297mm; padding: 4mm; margin: 1mm auto; border: 1px #D3D3D3 solid; border-radius: 5px; background: white; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); } /*.subpage { padding: 0.5cm; border: 0px red solid; height: 257mm; outline: 2cm #FFEAEA solid; }*/ .cliente { margin-top: 30px; font-size: 20px; } th {font-size: 14px; } td {font-size: 12px; } .logo {height: 64px; margin: 20px 0px 0px 20px;} .font-cabecalho {font-size: 12px; margin-left: 20px; text-align: center; margin: 20px 0px 0px 20px;} @page { width: 100%; height: 100%; margin: 0; padding: 0; } @media print { html, body { width: 210mm; height: 297mm; } .page { margin: 0; border: initial; border-radius: initial; width: initial; min-height: initial; box-shadow: initial; background: initial; page-break-after: always; } } </style> Código CSS da página.
       
      O que pode ser? Como faço pra deixar a página de impressão igual à página PHP? Obrigado desde já à todos.

      Um abraço.
       
    • Por TkCode
      Estou tentando desenvolver um código para calcular o valor final de custas de imoveis.
      Exemplo: Entro com um valor de R$50.000,00. Tem o ITBI que é 2% sob os R$50.000,00 + o valor de custas que é o valor de uma tabela (essa tabela tem valores que de R$0,01 até R$17.800,90 é uma valor, e assim sucessivamente)
       
      Então teria que calcular os 2% (do valor informado) + o valor da tabela, dando um resultado final com o valor total (2%+ValorTabela).
       
      Alguem teria como me dar uma dica de como resolver isso?
      Desde já agradeço!
    • Por Roberto S. Santos
      Bom dia.
      Eu gostaria de postar uma foto do meu computador no facebok usando VB.NET com login automático.
      Teria como fazer em VB.net ou HTML ?
      Obrigado.
    • Por Quencyjones79
      Olá boa tarde, sou iniciante na linguagem PHP, embora tenha umas noções básicas do código e estou com algumas dificuldades dúvidas no código que está a cor de laranja, se alguém que perceba de código PHP se me puder ajudar, agradecia imenso a ajuda.
       
       
      <?php 
      include "..\ligacao.php";
      ?>
               
      <?php
      $idFunc=$_POST['idFunc'];
      $NomeAlterado=$_POST['NomeAlterado'];
      $idLoja=$_POST['idLoja'];
      $permissao=$_POST['permissao'];
      if($idLoja=="Selecione..."){
          $idLoja=$_POST['idLojaAtual'];
      }
      if($permissao==NULL){
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc); 
       }else{    
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."', ativo_func='".$permissao."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc);
       }
      if($connfunc==1){
           print"<script> alert('Funcionário alterado com sucesso!');
                       location.href='../inserirfuncionario.php';</script>";
          exit;
      }else{
      print"<script> alert('Não foi possível alterar o Funcionário!');
          location.href='../inserirfuncionario.php';</script>";
      exit;
      }    
      ?>
       
      Atentamente,
       
      José Moreira
       
    • Por Quencyjones79
      Olá boa tarde, sou iniciante na linguagem PHP, embora tenha umas noções básicas do código e estou com algumas dificuldades dúvidas no código que está a cor de laranja, se alguém que perceba de código PHP se me puder ajudar, agradecia imenso a ajuda.
       
       
      <?php 
      include "..\ligacao.php";
      ?>
               
      <?php
      $idFunc=$_POST['idFunc'];
      $NomeAlterado=$_POST['NomeAlterado'];
      $idLoja=$_POST['idLoja'];
      $permissao=$_POST['permissao'];
      if($idLoja=="Selecione..."){
          $idLoja=$_POST['idLojaAtual'];
      }
      if($permissao==NULL){
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc); 
       }else{    
          $qfunc="UPDATE funcionario SET nome_func='".$NomeAlterado."',id_loja='".$idLoja."', ativo_func='".$permissao."' WHERE id_func='".$idFunc."'";
          $connfunc=mysqli_query($ligax,$qfunc);
       }
      if($connfunc==1){
           print"<script> alert('Funcionário alterado com sucesso!');
                       location.href='../inserirfuncionario.php';</script>";
          exit;
      }else{
      print"<script> alert('Não foi possível alterar o Funcionário!');
          location.href='../inserirfuncionario.php';</script>";
      exit;
      }    
      ?>
       
      Atentamente,
       
      José Moreira
       
×

Informação importante

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