Ir para conteúdo

POWERED BY:

Arquivado

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

PMPauloMaia

Leitura Txt

Recommended Posts

Por que este script mostra usuário ou senha inválidos sempre, mesmo que digito o que esta no TXT ?

 

Alguém sabe me dizer ? Os arquivos estão todos na mesma pasta !

<?

  if($_SERVER['QUERY_STRING'] == "validcookie"){
    if(isset($_COOKIE['cookie'])) {
      header("Location: Pagtest.php");
    }
    }else{
      if(empty($_POST['user'])) {
        echo "<script>window.history.back(-1);</script>";
        exit;
      }
      if(empty($_POST['pass'])) {
        echo "<script>window.history.back(-1);</script>";
        exit;
      }

      $getUserPass = explode("¬",fread(fopen("./users.txt","r"), filesize("./users.txt")));
      $numLoops = sizeof($getUserPass);

      for($q = 0; $q <= $numLoops; $q++){
        $checkUserPass = explode("¦",$getUserPass[$q]);
        if($_POST['user'] === $checkUserPass[0] && $_POST['pass'] === $checkUserPass[1]){
          $user = trim($checkUserPass[2]);
          setcookie("cookie", $_POST['user']."&".$user, time()+3600);
          break;
        }
        if($q == $numLoops){
          echo "<script>alert('Usuário e/ou Senha inválido(s)! Por favor corrija os dados e tente novamente.'); location='index.php';</script>";
        }
      }
      echo"
      <html>
      <head>
      <title>Efetuando login...</title>
      <meta http-equiv=\"refresh\" content=\"2; URL=login.php?validcookie\">
      </head>
      <body onLoad=\"window.status='Efetuando Login...';\">
      <h4><b>Efetuando Login...</b></h4>
      </body>
      </html>";
  }
?>

 

O users.txt esta assim dentro dele >>



adm¦123¬Fulano¦5510

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O jeito mais simples de analisar isto é printando os resultados para ver o que acontece a cada volta do laço, onde de fato está retornando falso, mas uma coisa que dá uma boa idéia é o ===, tem que ver se o que vem do input tem o mesmo tipo do que vem do txt, eu particularmente acredito que não, do txt sempre será string, já o que vem do input poderá ser string ou número.

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo "<script>alert('Usuário e/ou Senha inválido(s)! Por favor corrija os dados e tente novamente.'); location='index.php';</script>";

 

mesmo digitando o que esta no txt ex: >>

 

Usuario -> adm

 

Senha -> 123

 

 

Aparece esta mensagem do Script, A página localhost diz => Usuário e/ou Senha inválido(s)! Por favor corrija os dados e tente novamente.

 

Que pode ser ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que pode ser ?

 

 

Acredito que a resposta para a sua pergunta está no meu primeiro post, leia novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por Favor.
Desculpe-me, mas não compreendi e não sei que pode ser isso ?

 

se for isso =>

é o ===, tem que ver se o que vem do input tem o mesmo tipo do que vem do txt, eu particularmente acredito que não, do txt sempre será string, já o que vem do input poderá ser string ou número.

 

que me disse, como corrigir ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro comece trocando o === por ==, se isto não resolver ai vai ter que botar uns ifs para debugar o que está retornando false.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro comece trocando o === por ==, se isto não resolver ai vai ter que botar uns ifs para debugar o que está retornando false.

 

 

Fiz e não Funcionou, ou seja ainda mostra a mensagem.

 

Pode me ajudar com os if ? Mexendo no script !

 

Alguém pode me ajudar com esta alteração no script, eu não estou sabendo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

AJUDA !

Por ex, no submit de um form ;

Conhecem algum script para verificar dentro de em um arquivo.txt ( $nome ) , se um usuário com esse (nome) já existe.


Imprimir na tela um, alert => Usuário já cadastrado, tente outro Nome !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dia paulo acho um pouco inviavel trabalha com login e senha em arquivos txt.

Acho que seria mais correto trabalhar com um banco de dados e tbm pegar e criptografar a senha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Uma dia paulo acho um pouco inviavel trabalha com login e senha em arquivos txt.
Acho que seria mais correto trabalhar com um banco de dados e tbm pegar e criptografar a senha.

 

Sim, é isso ! mas não sei como comparar os dados, para não haver 2 usuários com o mesmo nome, pois tudo é armazenado em tx t.

 

 

Pode me Ajudar !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui brother esta função funciona só adpata ela ao seu código.

 

<?php 

$login = $_POST['user'];//aqui recebe o login
$senha = $_POST['pass'];//aqui recebe a senha 

$file = fopen('senha.txt','r');//abre o arquivo no modo de escrita

//le as linhas do arquivo 
$linha = '';//declara a varia que recebe as linhas
while(!feof($file)){
	$linha .= fgets($file, 4096);//concatena todas as linhas do arqvuio
}

$usuarios = explode(';',$linha);//criar uma array contendo os usuarios e senha

//validar se o usuario existe
if(in_array($login.'|'.$senha,$usuarios) == 1){
	echo 'USUARIO OK.';
}else{
	echo 'USUARIO INVALIDO.';
}


?>

No arqvuio senha.txt coloca assim:

adm|123;Fulano|5510

 

mais assim não te aconselho a fazer isso com arquivo txt te aconselho a estuda um banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.
Ricardo Saraiva,

Eu coloquei assim num arquivo verifica.php no submit do form >>

 

<?php 
$nome         = $_POST["nome"]; //aqui recebe o login
$senha        = $_POST["senha"]; //aqui recebe a senha 

$file = fopen('Teste.txt','r');//abre o arquivo no modo de escrita

//le as linhas do arquivo 
$linha = '';//declara a varia que recebe as linhas
while(!feof($file)){
	$linha .= fgets($file, 4096);//concatena todas as linhas do arqvuio
}

$usuarios = explode('\n',$linha);//criar uma array contendo os usuarios e senha

//validar se o usuario existe
if(in_array($nome.','.$senha,$usuarios) == 1){
	echo 'USUARIO OK.';
}else{
	echo 'USUARIO INVALIDO.';
}
?>

 

 

Pois esta manipulado assim para a autorização de entrada aceita no login >>

$arq = file_get_contents("Teste.txt");
$arr = explode("\n",$arq);
foreach($arr as $chave => $line){
$arr2 = explode(",",$line);
if($arr2[0] == $nome){
$ch = $chave;
break;
}}

 

e
Dentro do arquivo txt >>

Teste1,1025
Fulano1,2222
Fulano2,22Rh
Fulano3,52kj

etc...............


-----------------------------------------------------------------------------------------------------------------------------------

Mas só retorna a mensagem USUARIO INVALIDO , Sempre isso não muda !

-----------------------------------------------------------------------------------------------------------------------------------

Pode me Ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

Ricardo Saraiva,

 

Eu coloquei assim num arquivo verifica.php no submit do form >>

 

<?php 
$nome         = $_POST["nome"]; //aqui recebe o login
$senha        = $_POST["senha"]; //aqui recebe a senha 

$file = fopen('Teste.txt','r');//abre o arquivo no modo de escrita

//le as linhas do arquivo 
$linha = '';//declara a varia que recebe as linhas
while(!feof($file)){
	$linha .= fgets($file, 4096);//concatena todas as linhas do arqvuio
}

$usuarios = explode('\n',$linha);//criar uma array contendo os usuarios e senha

//validar se o usuario existe
if(in_array($nome.','.$senha,$usuarios) == 1){
	echo 'USUARIO OK.';
}else{
	echo 'USUARIO INVALIDO.';
}
?>

 

 

Pois esta manipulado assim para a autorização de entrada aceita no login >>

$arq = file_get_contents("Teste.txt");
$arr = explode("\n",$arq);
foreach($arr as $chave => $line){
$arr2 = explode(",",$line);
if($arr2[0] == $nome){
$ch = $chave;
break;
}}

 

e

Dentro do arquivo txt >>

 

Teste1,1025

Fulano1,2222

Fulano2,22Rh

Fulano3,52kj

 

etc...............

 

-----------------------------------------------------------------------------------------------------------------------------------

 

Mas só retorna a mensagem USUARIO INVALIDO , Sempre isso não muda !

 

-----------------------------------------------------------------------------------------------------------------------------------

 

Pode me Ajudar ?

 

 

mudei poucas linhas e testei aqui e esta funcionando perfeitamente

 

<?php 
$nome   = 'Teste1'; //aqui recebe o login
$senha  = '1025'; //aqui recebe a senha 

$file = fopen('senha.txt','r');//abre o arquivo no modo de escrita

//le as linhas do arquivo 
$linha = '';//declara a varia que recebe as linhas
while(!feof($file)){
  $linha .= fgets($file, 4096);//concatena todas as linhas do arqvuio
}

$usuarios = explode('|',$linha);//criar uma array contendo os usuarios e senha


//validar se o usuario existe
if(in_array($nome.','.$senha,$usuarios) == 1){
  echo 'USUARIO OK.';
}else{
  echo 'USUARIO INVALIDO.';
}
?>

 

dentro do arquivo teste.txt coloque assim sem pular linhas:

Teste1,1025|Fulano1,2222|Fulano2,22Rh|Fulano3,52kj

 

 

Só lembranbo não te aconselho a usar destar forma um sistema de login pois é EXTREMAMENTE INSIGURO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia

Ricardo Saraiva,

 

Minha passagem de aceite para acessar a pag. restrita através de outro form. tem essa leitura no txt.

 

Teste1,1025
Fulano1,2222
Fulano2,22Rh
Fulano3,52kj

---------------------------------------------------------------------------------------------------------------------------------------------

Agora como esta => Teste1,1025|Fulano1,2222|Fulano2,22Rh|Fulano3,52kj = A verificação que me passou funciona porem não entro na pagina pelo meu form. de aceite de entrada na pagina restrita, pois meu script de leitura varre pulando linha,

Assim =>

<?
$nome = $_POST['txt_nome']; //recebe do form de entrada na pag. restrita

$senha = $_POST['txt_senha'];//recebe do form de entrada na pag. restrita


$arq = file_get_contents("Teste.txt");
$arr = explode("\n",$arq);
foreach($arr as $chave => $line){
$arr2 = explode(",",$line);
if($arr2[0] == $nome){
$ch = $chave;
break;
}}


$dados = explode(",",$arr[$ch]);
if(trim($dados[1]) == $senha)

{ Aqui entra na Pagina restrita ; }
			
else { Quando Login e Senha dão errado ;

    exit; }	
 
?>

 

Perguntas ->

 

O script de verificação que você me passou dá para mudar para analizar pulando linha ?

Ou este de aceite de login que tenho dá para fazer verificar em linha - sem pular linha - ?

Entende para uma coisa bater com a outra !

 

>> Para sua compreensão - Tenho um Form. de Cadastro de novos usuários e outro de entrada na pagina restrita e os dois usam o mesmo tx t .

 

Sabe como fazer ?


Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele roda sim com quebra de linha no arquivo txt desde que você coloque assim.

 

Teste1,1025|

Fulano1,2222|

Fulano2,22Rh|

Fulano3,52kj|

 

E o código que você posto ta acontecendo o seguinte

 

$arq = file_get_contents("Teste.txt");//Lê o arqvuivo inteiro
$arr = explode("\n",$arq);//Ela não funcionara pelo fato de não achar \n então não irra gerar array com cada quebra de linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

Ricardo Saraiva,

 

Enquanto isso eu adaptei esse script ::::::::::

<?
$nome         = $_POST["nome"]; //aqui recebe o login do Form 
$senha        = $_POST["senha"]; //aqui recebe a senha do Form 

$arq = file_get_contents("Teste.txt"); //Lê o arqvuivo inteiro
//$arr = explode("\n",$arq); // não tem valor
foreach($arr as $chave => $line){
$arr2 = explode(",",$line);
if($arr2[0] == $nome){
$ch = $chave;
break;
}}

$dados = explode(",",$arr[$ch]);
if(trim($dados[1]) == $senha)
{echo 'USUÁRIO E SENHA JÁ EXISTEM !'; } 			
	 else{
  echo 'USUÁRIO OK - NOVO - , PODE PROSSEGUIR.'; } 
?>

 

ok, funciona também .......

Porem, o que eu mudo nesse script para ele verificar somente se o USUÁRIO se é repetido ou seja não posso ter 2 nomes de usuários iguais , mas posso ter duas senhas iguais "se isso acontecer" ? ?

O usuário - login nunca pode repetir, mas a senha "se acontecer" pode sim ser repetida !

 


Muda onde nesse script que postei, para isso dar certo desse modo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara até tem sim esta possibilidade.

 

Mais assim migra para uma banco de dados é melhor.

Os beneficios são varios:

 

*Mais facil de trabalhar.

*Mais seguro.

*Mais facil de dar manuteção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, mas como ? Eu não tenho conhecimento de uso de db .

Atá quero pelo fato de criptografar as informações, mas precisa instalar o mysql ?

 


Mas, referente o que esta em andamento,
O que muda nesse script que postei e que você disse que dá sim, para verificar só o campo $nome ?

?

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.