Ir para conteúdo
Fórum Script Brasil
  • 0

Como procurar dentro de um bloco de notas


Rhyrok

Pergunta

Ola, eu tenho uma duvida de principiante...

eu sei fazer o php abrir para ler/editar um bloco de notas, mais quero que ele localize uma expressão nele...

Tipo, eu fiz um tutorial de banco de dados no bloco de notas, mais era endereços e tal e mostrar em uma lista, ai tive a idéia de fazer com login e senha, e, de acordo como programado, ficaria assim no bloco de notas:

nome:email:login:senha

Ai então, eu fiz uma pagina de login, que enviaria as informações para outra pagina, e eu queria que NESSA pagina, ele abrisse o bloco de notas, e procura-se por $usuario:$senha (no caso $usuario . ":" . #senha), Assim, se ele encontrasse igual, funcionaria...

Por exemplo, o usuario, foi tentar fazer login com Maria e senha: Joao, então eu pego e converto os 2 para $usuario e $senha, ai queria que, depois de abrir o bloco de notas (com fopen) ele procura-se por $usuario:$senha, no caso maria:joao (login e senha) se encotnrasse, iria autenticar o login, se não, iria dar erro...É possivel? Como faço?

Antes que digam, que é melhor de mysql, é que estou testando só, não é pra nenhuma pagina especifica, to treinando o php...=p

vlw!

EDIT: A minha intensão seria, depois de verificar, ele der 0 de false ou 1 de true e fazer o if:

If ($resultado == 1) {

echo "Seja bem vindo";

} else {

echo "Errado";

}

?>

Claro que ai falta a url e tal, mais como to testando, é mais pra saber se deu ou não certo

Editado por Rhyrok
Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Procure na documentação pelas funções strstr(), strpos() e outras relacionadas.

A primeira te retorna a parte da string, que você pode converter em valor boolean depois, ou false, se a string não for encontrada.

A segunda te retorna a posição da string, se encontrada, ou false, se não.

Espero que te ajude,

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

A bem, como eu disse eu sou bem iniciante, e não sei comofazer isso, mais antes tinha achado algo assim:

// Função para procura várias palavras em uma string

function procpalavras ($frase, $palavras, $resultado = 0) {

foreach ( $palavras as $key => $value ) {

$pos = strpos($frase, $value);

if ($pos !== false) { $resultado = 1; break; }

}

return $resultado;

}

// Exemplo 1 - Nenhuma palavra encontrada, retorna zero

$frase = "eu tenho uma galinha que se chamava merilu";

$palavras = array ("coelho","cavalo","formiga","cachorro","gato");

echo "Resultado: " . procpalavras($frase, $palavras) . "<br />";

// Exemplo 2 - Uma ou mais palavra encontrada, retorna um

$frase = "eu tenho um coelho que se chamava zé";

$palavras = array ("coelho","cavalo","formiga","cachorro","gato");

echo "Resultado: " . procpalavras($frase, $palavras) . "<br />";

Mais isso é para procurar expressões e palavras, tentei alterar para achar o $usuario . ":" . $senha mais não deu certo...o que precisa alterar ai?

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, o primeiro código é o de cadastro/login (é o mesmo, como eu disse, antes era só de cadstro, não possuia login, quando tive a idéia nem quis fazer outra, afinal, tava na cabeça, ai apenas alterei o endereço que envia)

<html>
<head>
<title>Cadastro para novas contas</title>

</head>
<body>  
<center>
<font size "+4" color="green">Criar nova conta</font>
<form name="envio" method="post" action="escreve.php">  
   
Nome:   
<input name="nome" type="text"/><br />   
Email:   
<input name="email" type="text"/><br /> 
Usuario:
<input name="usuario" type="text"/><br /> 
Senha: 
<input name="senha" type="password"/><br /> 
   
<input type="submit" value="ok" /><br />  
   
</form>  
   
</body>
</html>
esse ai de cima é o de criar, o de fazer login só muda que é escrever.php (sem o S, pois não quis editar aparencia ainda, como retirar nome e email)... agora vem a pagina escreve.php
<?php

$nome = $_POST["nome"];
$email = $_POST["email"];
$usuario = $_POST["usuario"];
$senha = $_POST["senha"];

$f = fopen ("contas.txt","a+",0);

$linha=$nome. ":" .$email.":".$usuario.":".$senha.":\r\n"; //Concatena as variaveis com os separadores e quebra de linha

fwrite($f,$linha,strlen($linha)); //Escreve a string pronta no arquivo

fclose($f); //fecha o arquivo

//redirecionamento abaixo
?>
Tinha redirecionamento, mais tirei para ver os antigos erros que davam... Agora o escrever.php, que é o de login
<?php

$nome = $_POST["nome"];
$email = $_POST["email"];
$usuario = $_POST["usuario"];
$senha = $_POST["senha"];

fopen("contas.txt","a+",0); //Abre o arquivo arquivo para escrever no fim

// Função para procura várias palavras em uma string
function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) { $resultado = 1; break; }
} 
return $resultado;
}

// Exemplo 1 - Nenhuma palavra encontrada, retorna zero 
$frase = "eu tenho uma galinha que se chamava merilu";
$palavras = array ("coelho","cavalo","formiga","cachorro","gato");
echo "Resultado: " . procpalavras($frase, $palavras) . "<br />";

// Exemplo 2 - Uma ou mais palavra encontrada, retorna um
$frase = "eu tenho um coelho que se chamava zé";
$palavras = array ("coelho","cavalo","formiga","cachorro","gato");
echo "Resultado: " . procpalavras($frase, $palavras) . "<br />";

If (procpalavras($frase, $palavras) == 1) {

echo "Seja bem vindo";

} else {

echo "Errado";
}

?>
O que achei mais legal, é que eu tirei as alterações no campo palavras, e ele da 2 resultados um 0 e outro 1... O bloco de notas, seria:
Murilo:abc@bol.com.br:rhyrok:abcde:
Murilo:abc@bol.com.br:rhyrok:abcde:
Scriptbrasil:blabla@google.com:Scriptbrasil:brasilscript:

no caso nome:email:usuario:senha...

Link para o comentário
Compartilhar em outros sites

  • 0

Se é isso que você tá tentando executar, você tá procurando "coelho" ou "cavalo" ou "formiga" ou "cachorro" ou "gato" em "eu tenho um coelho que se chamava zé", ele deve mostrar:

Resultado: 0

Resultado: 1

Seja bem vindo

Pra verificar no teu arquivo, você tem que passar o conteúdo do arquivo contas.txt pra $frase:

$frase = file_get_contents("contas.txt");

Tira um dos exemplos e coloca o $palavras como eu te disse antes.

Link para o comentário
Compartilhar em outros sites

  • 0

aaaaaaaaaaata, agora eu entendi, pra mim ele procurava ambos, e não palavras em frases...Muito obrigado mesmo Haz

E sobre os animais, hehe, eu já tinha trocado, mais tinha preferido colocar o "original" da onde peguei...

Agora, eu sei que é abusar demais (que você já me ajudou muito haz) mais como faço para ele não criar login igual? seria o mesmo script na pagina inserir, com apenas $usuario certo?

vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Tenho outro problema...visto, que, se a pessoa faz o login, não adianta, se eu redirecionar ela para outra pagina sem verificação, ai pensei, como fazer? Vou ter que colocar esses Ifs em todas as paginas? Eu pensei em campo oculto, coloquei <input name="autenticado" type="hidden" id="autenticado" value="89547578" /> (isso no formulario de login) e na outra pagina, $autenticado = $_POST["autenticado"];

mais ele da erro! caso desse certo, eu ia procurar como fazer numeros randomicos, e assim colocaria no value, já que esse numero pode ser visto no codigo fonte...assim o numero randomico daria acesso a ele até ele sair...

Vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Bem o mais rapido e "seguro" do ponto de vista de achar os valores é correr o arquivo todo ... já quanto a verificação em outras página use Sessões e pronto se ele existe o cara está logado se não, não a menos que você queira fazer um sistema de verifical `real-time` mas qual o sentido se esta usando banco de dados em TXT fica estranho.

<?php
$achado = false;
$arquivo = file("contas.txt");

foreach ($arquivo as $linhas) {
 list($nome, $email, $login, $senha) =explode(":", $linhas);
 if ($login == $_POST["login"] && $senha == $_POST["senha"]) {
  $achado = true;
  break;
 }
}

if ($achado) {
 sessinon_start();
 $_SESSION["Logado"] = "ON";
 echo "Logado!";
} else {
 echo "Senha ou Usuário errados!";
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

olha, sem querer encher o saco, mais n'ao estou conseguindo..alias, TINHA conseguido, agora não consigo mais, veja, 3 arquivos...

O primeiro, nosso antigo autenticacao, que foi o motivo de criar o tópico (SK15, achei o seu mais simples, mais como "montei" esse, sendo tão novo em php, prefiro continuar usando esse)

<?php

$usuario = $_POST["usuario"];
$senha = $_POST["senha"];

fopen("contas.txt","a+",0); //Abre o arquivo arquivo para escrever no fim

// Função para procura várias palavras em uma string
function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) { $resultado = 1; break; }
} 
return $resultado;
}

// Exemplo 1 - Nenhuma palavra encontrada, retorna zero 
$frase = file_get_contents("contas.txt");
$palavras = array ($usuario.":".$senha);

If (procpalavras($frase, $palavras) == 1) {
    
session_start(); //iniciamos a sessão

$_SESSION[`log`] = "ON"; //aqui criamos uma sessão com o nome teste
/* 
é como se criar uma variavel, só que estamos criando uam sessão, cujo a mesma chama-se teste
e tem o valor de "valor da sessão" 
*/

echo "<html><center>Login efetuado com sucesso!<br>Aguarde, você será 

redirecionado.</html></center>";

echo "<meta HTTP-EQUIV='Refresh' CONTENT='3;URL=index.php'>";

} else {

echo "<html><center>Login ou Senha incorretos.</center></html>";
}

?>
Como pode ver, ele cria a session[log] agora o segundo arquivo:
<?php

session_start();

if($_SESSION["log"] != "ON"){
echo "você não esta logado"; //6
//aqui verificamos com um if, se sessão com o nome teste for igual a vazio ou seja nada aparecerá 

uam mensagem no navegador
//e a outra parte do arquivo (pode ser a área restrita) nã oirá aparecer por causa do exit

exit;
} else {
$sessao = $_SESSION['log']; //aqui criamos uam variavel que a mesma ira pegar o nome da sessão
echo "Logado!";
echo "sessão: " . $sessao;
}
?>
massss, ele da erro! Notice: Undefined index: log in C:\Arquivos de programas\EasyPHP5.3.0\www\bancodadosblocodenotas\index.php on line 5 Como e porque log é indefinido? (e isso tambem na linha 12) Se bem me lembro, isso foi depois que fiz o sair.php, para tirar a session...
<?php

session_start();
session_destroy();

//prontinho aciam acabamos com todas as sessões existentes!
echo "você saiu com sucesso!";
?>

Agora uma pergunta "pessoal", como o php sabe qual session tirar? e na hora de carregar no index, qual session iniciar?

vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Ignorem o problema a cima, eu troquei para "contas" e foi, não sei porque...

Agora tenho outro problema, como substituir 1 palavra através da busca acima? e como por 1 if dentro do outro? Ex:

<?php
if( $senha == $senha2 ){

// Função para procura várias palavras em uma string
function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) { $resultado = 1; break; }
} 
return $resultado;
}

// Exemplo 1 - Nenhuma palavra encontrada, retorna zero 
$frase = file_get_contents("contas.txt");
$palavras = array (":" . $senha . "%");
$echo = "Senha encontrada";

}else{

echo "Senha não encontrada!";
}

}else{

echo "Senhas DIferentes";
}
?>
Assim da errado, mais eu precisaria dos dois ifs separados...Eu troquei os separados, para nome|email|usuario:senha% Assim na hora de procurar a senha, ele não vai se "enganar" com o nome:email... Acima seria um sistema de troca de senhas, que ele pega o $senha% e troca por outra, não sei como fazer para trocar...Tava pensando em por, tambem, $usuario:$senha assim ele verifica o usuario junto... Ai emcima é o basico, não tem o POST nem nada, no caso seria 4 campos para trocar a senha, usuario, senha1,senha2,novasenha, ai fiz o IF para verificar se o senha1 seria igual ao senha2, para depois substituir pela novasenha (que não sei fazer);;;
EDIT:
Bem, agora eu fiz diferente, fiz 3 arquivos: um recuperarsenha.php contendo:
<html>
<head>
<title>Cadastro para novas contas</title>

</head>
<body>  
<center>
<font size "+4" color="green">Alterar Senha</font>
<form name="envio" method="post" action="trocarsenha.php">  
   
Usuario:
<input name="usuario" type="text"/><br /> 
Senha: 
<input name="senha" type="password"/><br />
Repita sua senha: 
<input name="senha2" type="password"/><br />
Nova senha:
<input name="nova" type="password"/><br />
   
<input type="submit" value="ok" /><br />  
   
</form>  
   
</body>
</html>
o segundo, o trocarsenha.php, contendo:
<?php

session_start("abc");

$usuario = $_POST["usuario"];
$senha = $_POST["senha"];
$senha2 = $_POST["senha2"];
$nova = $_POST["nova"];
$usuarioo = $_SESSION["usuario"];
$senhaa = $_SESSION["senha"];

if( $senha == $senha2 and $_SESSION["usuario"] == "$usuario" ){

echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=trocarsenha2.php'>";

$_SESSION["nova"] = "$nova";

}else{

echo "Erro: Senhas Diferentes ou você não está logado!";
}
?>
Como não consegui colocar 2 condições (digo, agora que vi que da, podia ter feito como queria ANTES, mais deixei assim mesmo, e sem verificar a senha) e por ultimo:
<?php

session_start("abc");

$usuarioo = $_SESSION["usuario"];
$senhaa = $_SESSION["senha"];
$nova = $_SESSION["nova"];

// Função para procura várias palavras em uma string
function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) { $resultado = 1; break; }
} 
return $resultado;
}

// Exemplo 1 - Nenhuma palavra encontrada, retorna zero 
$frase = file_get_contents("contas.txt");
$palavras = array ($usuarioo.":".$senhaa);

If (procpalavras($frase, $palavras) == 1) {

echo substr_replace($frase, $nova, $senhaa);
echo substr_replace($frase, $nova, 0, strlen($senhaa)) . "<br />\n";
}else{
echo "Senha inexistente!";
}
?>
o manual do php da exemplo
echo substr_replace($var, 'bob', 0) . "<br />\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";

Eu já tentei por ($senhaa, $nova, 0) e ($senhaa, $nova, 0, strlen($senhaa)) mais não vai...

ele não altera o txt, e ainda exibe a nova senha na tela! "talvez por causa do echo", mais enfim, o problema é que ele não altera o txt...

vlw

Editado por Rhyrok
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...