Ir para conteúdo

Arquivado

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

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

  • 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.