Jump to content
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

Share this post


Link to post
Share on other 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");
    }
?>

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By sudden
      Olá alguém que esteja lendo isso, tem dias que eu não consigo rodar esse algoritmo certo, não sei mais o que eu faço, nao sou nenhum desenvolvedor nem nada, tô no 1 semestre
      #include <stdio.h> #include <stdlib.h> //Inicio Structs struct telefones{ char numfixo[15]; char celular[16]; }; struct clientes{ double cpf; int codcliente; struct telefones t; char nome[30]; char sexo; }; struct produtos{ char nomeprod[20]; int codigoproduto; float valor; char modelo [10]; }; struct carrinhos{ struct clientes cliente[5]; struct produtos produto[5]; int quantidade; float subtotal; float desconto; // porcentagem float total; }; struct modelos{ char marca [20]; char modelo [20]; }; /////Fim Structs //Inicio Fun��o void cadastrarCliente(struct clientes cliente[50], int cont); void mostrarCliente(struct clientes cliente[50]); void mostraMenuPrincipal(); void mostrarProduto(struct produtos produto[50]); void cadastrarProduto(struct produtos produto[50],int contp); void efetuarCompra(struct carrinhos carrinho[50],struct clientes cliente[3],struct produtos produto[10]); void ordenarCliente(struct clientes cliente[50]); // Inicio Main void main(int argc, char *argv[]) { int resposta,contp=0,cont=0,voltar=0; //cont e o contador do cliente, contp e do produto. struct produtos produto[50]; struct clientes cliente[50]; struct carrinhos carrinho[50]; struct modelos modelo[50]; ////////////inicio declarando structs para ele ter oque mostrar//////////////////////////////////// ///////////////////Ira direcionar o usuario no menu /////////////////////// do{ mostraMenuPrincipal(); scanf("%d", &resposta); switch(resposta) { case 1: cadastrarCliente(cliente, cont); cont=cont+1; //agora a proxima vez que for cadastrar um cliente, o indice vai ser um apos o anterior. system("pause"); break; case 2: cadastrarProduto(produto,contp); contp=contp+1; system("pause"); break; case 3: mostrarCliente(cliente); system("pause"); break; case 4: mostrarProduto(produto); system("pause"); break; case 5: efetuarCompra(carrinho,cliente,produto); system("pause"); break; case 6: ordenarCliente(cliente); contp=contp+1; break; default: exit(0); } }while(1); } ////////////////////////print menu /////////////////////////////////////////// void mostraMenuPrincipal(){ system("cls"); printf("==========================================================\n"); printf("1 - CADASTRAR CLIENTE\n"); printf("2 - CADASTRAR PRODUTO\n"); printf("3 - LISTA DE CLIENTES\n"); printf("4 - LISTA DE PRODUTOS\n"); printf("5 - EFETUAR VENDA\n"); printf("0 - SAIR DO MERCADO DIGITAL\n"); printf("==========================================================\n"); printf("Digite sua opcao: "); } ////////////////////////print cadastrar cliente /////////////////////////////////////////// void cadastrarCliente(struct clientes cliente[50],int cont){ system("cls"); printf("=======================================================\n"); printf("-----------------CADASTRAR CLIENTE: %d-----------------\n", cont+1); printf("=======================================================\n\n\n"); printf("AVISO! Digite o CPF da forma original com ponto e tra�os\n\n"); printf("CPF: "); fflush(stdin); //limpa o buffer scanf("%f",&cliente[cont].cpf); printf("NUM FIXO: "); fflush(stdin); scanf("%d", &cliente[cont].t.numfixo); printf("CELULAR: "); fflush(stdin); scanf("%d", &cliente[cont].t.celular); printf("NOME: "); fflush(stdin); gets(cliente[cont].nome); printf("DATA NASCIMENTO: "); fflush(stdin); cliente[cont].codcliente=cliente[cont].cpf/100000; printf("\n==========================================================\n"); printf("O CODIGO DO CLIENTE GERADO E: %d",&cliente[cont].codcliente); printf("\n"); //Printa o cliente que foi cadastrado printf("\nCPF: %d",cliente[cont].cpf); printf("\nNUM FIXO: %d",cliente[cont].t.numfixo); printf("\nCELULAR: %d",cliente[cont].t.celular); printf("\nNOME: %s",cliente[cont].nome); printf("\n=================================================\n"); } ////////////////////////print listar cliente /////////////////////////////////////////// void mostrarCliente(struct clientes cliente[50]){ int repet=0; printf("================================================\n"); printf("----------------- LISTAR CLIENTE -----------------\n"); printf("================================================\n"); for(repet=0;repet<=2;repet++){ printf("\nCPF: %d",cliente[repet].cpf); printf("\nNUM FIXO: %d",cliente[repet].t.numfixo); printf("\nCELULAR: %d",cliente[repet].t.celular); printf("\nNOME: %s",cliente[repet].nome); printf("\nCODIGO DO CLIENTE: %d\n",cliente[repet].codcliente); } } ////////////////////////print cadastrar produto /////////////////////////////////////////// void cadastrarProduto(struct produtos produto[50],int contp){ printf("=================================================\n"); printf("-----------------CADASTRAR PRODUTO: %d-----------------\n", contp+1); printf("=================================================\n"); printf("CODIGO DO PRODUTO: \n"); scanf("%d",&produto[contp].codigoproduto); printf("\nNOME DO PRODUTO: "); fflush(stdin); gets(produto[contp].nomeprod); printf("\nMARCA: "); (stdin); printf("\nMODELO: "); fflush(stdin); printf("\nVALOR: "); fflush(stdin); scanf("%f",&produto[contp].valor); //agora printar produto printf("\nCODIGO DO PRODUTO: %d\n",produto[contp].codigoproduto); printf("\nNOME DO PRODUTO: %ss\n",produto[contp].nomeprod); printf("\nVALOR DO PRODUTO: R$ %0.2f\n",produto[contp].valor); printf("\nMODELO DO PRODUTO: %s", produto[contp].modelo); } ////////////////////////print listar produtos /////////////////////////////////////////// void mostrarProduto(struct produtos produto[50]){ int repet; printf("================================================\n"); printf("----------------- LISTAR PRODUTO -----------------\n"); printf("================================================\n"); for(repet=0;repet<=9;repet++){ printf("\n\nCODIGO DO PRODUTO: %d",produto[repet].codigoproduto); printf("\nNOME DO PRODUTO: %s",produto[repet].nomeprod);543; printf("\nVALOR DO PRODUTO: R$ %0.2f\n\n",produto[repet].valor); } } //pode ser de haja erro na compra void efetuarCompra(struct carrinhos carrinho[50],struct clientes cliente[3],struct produtos produto[10]){ int buscacliente,x; int buscaprod,buscaprod2,buscaprod3; int quantidade,quantidade2,quantidade3; float total,total2,total3; float totalum,todototal,cupom,desc; float fimtotal; mostrarCliente(cliente); printf("\n\nDigite o codigo do cliente: "); scanf("%d",&buscacliente); for(x=0;x<=50;x++){ int y; if(cliente[x].codcliente==buscacliente){ y=1; } if(y==1){ buscacliente=x; y=51; } } system("cls"); mostrarProduto(produto); printf("\ncarrinho do cliente %s",cliente[buscacliente].nome); printf("\ndigite o codigo do produto 1: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total = quantidade * produto[buscaprod].valor; //REPETICAO///////////////////// printf("\ndigite o codigo do produto 2: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total2 = quantidade * produto[buscaprod].valor; //REPETICAO///////////////////// printf("\ndigite o codigo do produto 3: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total3 = quantidade * produto[buscaprod].valor; //system("pause"); printf("digite o cupom de desconto: "); scanf("%f", &cupom); todototal = total + total2 + total3; desc = todototal * (cupom / 100); fimtotal = todototal - desc; printf("Total: R$ %0.2f\n", todototal); printf("Valor do Desconto: R$ %0.2f\n", desc); printf("Valor total e R$ %0.2f\n", fimtotal); system("pause"); } void ordenarCliente(struct clientes cliente[50]){ int i,b; int codigotemp,cpftemp,fixotemp,celulartemp,datanasctemp; char nometemp; printf("Organizando lista...\n"); for(i=0;i<=3;i++){ for(b=0;b<=3;b++){ if(cliente[b].codcliente>cliente[b+1].codcliente){ //valores para variaveis temporarias printf("transferindo valores para variaveis temporarias...\n"); codigotemp=cliente[b].codcliente; fixotemp=cliente[b].t.numfixo; celulartemp=cliente[b].t.celular; //strcpy(nometemp , cliente[b].nome); nometemp=cliente[b].nome; cpftemp=cliente[b].cpf; printf("variaveis temporarias transferidas.\n"); //fim da transferencia de valores para variaveis temporarias //fazer os valores de indice b receber o valor do indice da struct do indice seguinte printf("cliente %d recebendo valores do cliente... %d\n",b,b+1); cliente[b].codcliente=cliente[b+1].codcliente; strcpy(cliente[b].nome , cliente[b+1].nome); cliente[b].cpf=cliente[b+1].cpf; printf("cliente %d recebeu valores do cliente %d\n",b,b+1); //fim da transferencia de valores do segundo para o primeiro indice //inicio dE transferencia de valores do primeiro indice para o segundo indice printf("cliente %d recebendo valores das variaveis temporarias...\n",b+1); cliente[b+1].codcliente=codigotemp; printf("recebeu codigo do cliente.\n"); //cliente[b+1].nome=nometemp; strcpy(cliente[b+1].nome,nometemp); //sprintf(cliente[b+1].nome,nometemp); printf("recebeu nome\n"); cliente[b+1].cpf=cpftemp; printf("recebeu cpf\n"); printf("cliente %d recebeu valores das variaveis temporarias\n",b+1); printf("---- ---- ---- ---- "); } } } printf("Operacao concluida.\n"); }  
    • By DanielF
      Pessoal Eu Recentemente estava fazendo um gerador de qr-code, e preciso criar um botão que quando a pessoa clique apareça para poder baixar/fazerdownload da imagem gerada, pode me ajuda? to preso nisso faz tempo, e se puderem podem Organizar o codigo para mim? 
       
       
       
       
       
       
       
      <!DOCTYPE html>
      <html>
      <head>
          <title>QR-Code</title>
          <style type="text/css">
              #qrcode {
                  border: 1pt solid gray;
                  display: inline-block;
              }
          </style>
      </head>
      <body>
          <center>
              <input type="text" name="qrtexto" id="qrtexto" onkeypress="gerarqr();" onkeyup="gerarqr();"><br>
              <br>
              <button onclick="gerarqr();" on>Gerar</button>
              <button onclick="limpar();" on>Limpar</button>
          </center>
          <br>
          <br>
      <center>
          <div id="qrcode"></div>
      </center>
      <br>
      <center>
      <button onclick="baixar();">Baixar (Em Breve)</button>
      </center>
      <script src="qrcode.min.js"></script>
      <script>
          qrcode.innerHTML="<img src='limpo.png'>";
          function gerarqr(){
      var qrcode=document.getElementById('qrcode');
      qrcode.innerHTML=" ";
      var texto=document.getElementById("qrtexto").value;
          var qrcodee = new QRCode(qrcode, {
          text: texto,
          width: 300,
          height: 300,
          colorDark : "#000000",
          colorLight : "#ffffff",
          correctLevel : QRCode.CorrectLevel.H
      });
      }
      function limpar(){
      qrcode.innerHTML="<img src='limpo.png'>";
      }
      function baixar() {
      }
      </script><br><br><br><br><br><br><br>
      <h6 align="center">Feito por Itz_Topz</h6>
      </body>
      </html>
    • By edmin
      Olá pessoal, preciso de uma ajuda como seguinte, desde já, agradeço por qualquer ajuda...
      Pergunta: 
      Dado um arquivo 'ips.txt' com uma lista de endereços, o programa deve dar um ping para cada ip/domínio cadastrado. A linha contendo os resultados (mínimo, máximo, média)deve ser salva em arquivo 'log_data_hora.txt'.
      ips.txt
      www.claro.com.br;Servidor Claro
      www.colombo.com.br;Servidor Colombo
      www.renner.com.br;Servidor Renner
      www.gmail.com.br;Servidor Email Google
       
      tenho o seguinte código:
       
      import os from datetime import datetime def titulo(texto): print() print(texto) print('\033[7;97;40m-\033[m'*40) ###################################### def listar(): print('\033[7;97;40mListagem de IPs\033[m') print('\033[7;97;40m=\033[m'*72) arq = open('ips.txt', 'r') num = 0 linha = arq.readline() print('\033[7;97;40mNº .: IP/Dominio ...............: Cliente/Serviço ..................: \033[m') while linha != '': num = num + 1 partes = linha.split(';') print(f'\033[7;97;40m {num:3} {partes[0]:30s} {partes[1][:-1]}\033[m') linha = arq.readline() arq.close() print('\033[7;97;40m-\033[m'*72) ''' funcao que recebe um ip como parametro o tempo medio de resposta de um ping para este ip ou -1, caso erro ''' def ver_media(ip): dados = os.popen('ping '+ ip) # executa um comando no sistema operacional media = '' #find: retorna a posicao da string #(se nao encontrar retorna 0) for linha in dados: if linha.find('M‚dia') >= 0: posicao = linha.rfind('=') mediams = linha[posicao+1:] ms = mediams.rfind('ms') media = mediams[0:ms] if media == '': return -1 else: return int(media) def testar(): titulo('\033[7;97;40mTestando IPs Cadastrados\003[m') print('\033[7;97;40mIP/Domínio............ Tempo(ms)\033[m') print('\033[7;97;40m-\033[m'*40) arqLog = open('logs.txt', 'a') #salva em arquivo cada teste arq = open('ips.txt', 'r') linha = arq.readline() while linha != '': partes = linha.split(';') tempo = ver_media(partes[0]) funcao = ver_media(partes[1]) agora = datetime.now() dia = agora.strftime('%d/%m/%Y') hora = agora.strftime('%H:%M:%S') print(f'\033[7;97;40m{partes[0]:25s} {tempo}\033[m') arqLog.write(partes[0]+';'+str(tempo)+';'+dia+';'+hora+'\n') linha = arq.readline() arq.close() arqLog.close() #################################################### def logs(): titulo('\033[7;97;40m Listagem de Logs \033[m') arq = open('logs.txt', 'r') print('\033[7;97;40mNº..: IP / Dominio............: Média (ms): Dia do accesso..: Hora..:\033[m') num = 0 linha = arq.readline() while linha != '': num = num + 1 partes = linha.split(';') ip = str(partes[0]) tempo = str(partes[1]) dia = str(partes[2]) hora = str(partes[3]) print(f'\033[7;97;40m{num:3d} {ip:30s} {tempo:3s} {dia:17s} {hora} \033[m', end='') linha = arq.readline() arq.close() print('-'*43) print('\033[7;97;40m -> Se o tempo em ms, for igual a\033[m \033[1;31m-1\033[m,\033[7;97;40m\n' ' o host não está respondendo\033[m') return ######################### programa principal while True: print('\033[7;97;40m=\033[m' * 43) print('''\033[3;30;44m#### Selecione uma Opção: ####\033[m \033[7;97;40m 1. Listar Ips 2. Testar 3. Log de testes 4. Finalizar \033[m\n ''') print('\033[7;97;40m=\033[m' * 43) opcao = int(input('\033[3;30;44mDigite sua opção:\033[m ')) if opcao == 1: listar() elif opcao == 2: testar() elif opcao == 3: logs() elif opcao == 4: calcula() elif opcao == 5: print('\033[1;30mPrograma Finalizado pelo Usuário!!!\n' '==//==//==//==//==//==//==//==//==//\033[m') exit() else: print('\033[1;31mOps...\n' ' Opção Inválida!!!\033[m') break  
    • By heenrique
      Bom Dia Prezados!
       
      estou realizando o desenvolvimento de um sistema multi empresas no ao acessar ira pedir um código, ate a parte do código tudo OK, apos passar esse código vai para um tela de login onde cada meu sistema é ligado com o banco de dados do sistema (é um sistema padrão)do cliente ate aqui OK. gostaria de limitar a quantidade de acesso a esse código, ex empresa 1 contratou código com 3 acessos, empresa 2 contratou 1 acesso, alguém tem um dica ou um outro método para realizar esse controle ?
    • By ramonjba
      Olá pessoal. Estou desenvolvendo uma especie de monitoramento, estou utilizando o MATERIALIZE, desta forma, optei por não trabalhar com responsividade, pois preciso do máximo de informações possíveis na tela, seja desktop ou mobile, fazendo o ajuste de zoom se preciso. Fiquei cerca de dois anos sem programar, eu havia feito esse projeto para meu TCC, porém após finalizar, deixei parado e acabei perdendo. Com o tempo, algumas ideias em relação ao projeto também mudaram, e para apresentar a informações das `Torres de Internet`, utilizei o collapsible-header conforme imagem `projeto_monitor`, pois, ao clicar em cima do `equipamento`, ele apresenta informações relacionadas a ele. Estou tendo problemas para alinhar estes `collapsible-header ` pois preciso preencher toda a tela, sem deixar espaçamentos. Para isso, fiz uma classe CSS contendo: 
       
      .row .col.quadroTorre1 { margin-top: -10%; margin-bottom: 10%; } .row .col.quadroTorre2 { margin-top: -7.3%; margin-bottom: 10%; } .row .col.quadroTorre3 { margin-top: -30%; margin-bottom: 10%; } .row .col.quadroTorre4 { margin-top: -1.7%; margin-bottom: 10%; }  
      E fiz uma verificação no código, para ver qual o numero de equipamentos que a `Torre` que está acima tem. Porém, como podemos observar, na segunda linha funcionou preenchendo os espaços, mas pulando para a terceira linha, já possui uma lacuna em branco, onde deveria estar situado o elemento. Além disso, os elementos da segunda linha, acabam se sobrepondo, conforme imagem `projeto_sobrepor`. Como fiquei cerca de 2 anos sem programar, estou encontrando algumas dificuldades e empacando nelas. A parte de front-end é a que gera maior dificuldade. Se alguém puder me auxiliar, agradeço. 
       
      Edit: Se alguém tiver dicas de como posso melhorar o preenchimento das lacunas em branco. 
       


×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.