Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, galera.. estou tentando fazer uma consulta no txt para verificar se o e-mail já existe no txt, porem eu consigo cadastrar mais não estou conseguindo fazer a consulta e verificar se existe.. então ele grava o mesmo e-mail. alguém poderia me dar uma ajuda...
<form action="" method="post">
<div class="box box-small">
<label>
<input class="main_input_name" name="fName" value="" placeholder="Seu Nome" type="text">
</label>
</div>
<div class="box box-large">
<label>
<input class="main_input_email" name="fEmail" value="" placeholder="Seu Endereço de Email Aqui" type="text">
</label>
</div>
<div class="box box-small main_btn">
<label>
<input type="submit" name="enviar" class="btn-form" value="Manter Me Informado" >
</label>
</div>
</form>
<?php
if (isset($_POST)) :
// FUNÇÃO VALIDA EMAIL
function EmailValidade($Email) {
if (filter_var($Email, FILTER_VALIDATE_EMAIL)) :
return true;
else :
return false;
endif;
}
if (isset($_POST['enviar'])) :
$Nome = $_POST['fName'];
$Email = $_POST['fEmail'];
$EmailReservado = "contato@ineedcoffee.com.br";
$BaseDir = getcwd();
$File = "{$BaseDir}/lead.txt";
$FileCheck = file($File);
//ABRE O ARQUIVO
$ponteiro = fopen($File, "r");
//LÊ
$conteudo = fread($ponteiro, filesize($File));
//FECHA O ARQUIVO
fclose($ponteiro);
if (empty($Nome) || empty($Email)) :
echo "<span class='trigger trigger-infor'>Informe um Nome e um Email!</span>";
elseif (!EmailValidade($Email)) :
echo "<span class='trigger trigger-error'>Email Invalido!</span>";
elseif ($Email === $EmailReservado) :
echo "<span class='trigger trigger-alert'>Este Email é reservado!</span>";
elseif ($Email == $conteudo):
echo "<span class='trigger trigger-alert'>Este Email ja Foi Usado!</span>";
else:
$File = fopen("{$BaseDir}/lead.txt", 'a');
$Lead = "\r\n{$Nome}\r\n{$Email}\r\n";
fwrite($File, $Lead);
fclose($File);
echo "<span class='trigger trigger-accept'>Parabéns {$Nome} seu email é {$Email} e você foi cadastrado com êxito!</span>";
unset($Nome);
unset($Email);
endif;
endif;
endif;
?>Eu tinha utilizado o $FileCheck mais esta cadastrando do mesmo jeito...
Eu tinha utilizado o $FileCheck mais esta cadastrando do mesmo jeito...
Mostre como fez. Deve ter feito algo errado
Quanto ao seu código atual, o problema é aqui:
elseif ($Email == $conteudo):
$conteudo tem o conteúdo inteiro do arquivo. Nunca vai dar true.
Você tem que pesquisar $Email dentro de $conteudo. Pode fazer isso com strstr(), por exemplo, ou substr_count()
Consegui resolver... obrigado pela ajuda e esclarecimento em algumas coisas...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post">
<div class="box box-small">
<label>
<input class="main_input_name" name="fName" value="" placeholder="Seu Nome" type="text">
</label>
</div>
<div class="box box-large">
<label>
<input class="main_input_email" name="fEmail" value="" placeholder="Seu Endereço de Email Aqui" type="text" >
</label>
</div>
<div class="box box-small main_btn">
<label>
<input type="submit" name="enviar" class="btn-form" value="Enviar" >
</label>
</div>
</form>
<?php
if (isset($_POST['enviar'])) {
$Nome = trim($_POST['fName']);
$Email = trim($_POST['fEmail']);
$EmailReservado = "contato@ineedcoffee.com.br";
$BaseDir = getcwd();
$File = "{$BaseDir}/lead.txt";
$FileCheck = file($File);
$FileCheck = array_map('trim', $FileCheck);
// exit(var_dump($FileCheck));
function EmailValidade($Email)
{
if (filter_var($Email, FILTER_VALIDATE_EMAIL)) {
return true;
} else {
return false;
}
}
if (empty($Nome) || empty($Email)) {
echo "<span class='trigger trigger-infor'>Informe um Nome e um Email!</span>";
} elseif (!EmailValidade($Email)) {
echo "<span class='trigger trigger-error'>Email Invalido!</span>";
} elseif ($Email == $EmailReservado) {
echo "<span class='trigger trigger-alert'>Este Email é reservado!</span>";
} elseif (in_array($Email, $FileCheck)) {
echo "<span class='trigger trigger-alert'>Este Email ja Foi Usado!</span>";
} else {
$File = fopen("{$BaseDir}/lead.txt", 'a+');
$Lead = "{$Nome}\r\n{$Email}\r\n";
fwrite($File, $Lead);
fclose($File);
echo "<span class='trigger trigger-accept'>Parabéns {$Nome} seu email é {$Email} e você foi cadastrado com êxito!</span>";
unset($Nome);
unset($Email);
}
}
?>
</body></html>
Você cria $FileCheck e não usa pra nada.
Já olhou pra que serve a função file()?
Ela coloca cada linha do arquivo em um índice de array. Dessa forma, bastaria usar in_array() para verificar se o email consta no arquivo.
Apenas tome cuidado com o tamanho do arquivo. Mapear um arquivo inteiro em memória pode consumir muitos recursos. Se o arquivo for muito grande, é melhor ler linha por linha. Ou ainda melhor, usar um banco de dados, mesmo que seja um simples SQLite