Исключить запись повторов в txt-базу

1. Дмитрий (29.04.2010 / 17:39)
Собственно, скрипт записывает данные в тхт файл, но вот проблема - суть скрипта - запись данных из формы авторизации, то есть всегда, когда отправляется запрос, данные записываются в тхт-файл. Так вот, ооочень много повторов в такой базе накапливается, как запретить запись в файл, если такая запись там уже существует?
Сам скрипт:
<?
$passwd = $_GET['passwd']; // собираем  и записываем в переменные
$email = $_GET['email'];
$text .= "pass: $passwd \n"; 
$text .= "mail: $email \n"; 
  if (!empty($passwd) && !empty($email)) //если  переменные имеют значения выполняем запись 
    {
    $file = fopen ("message.txt", "a+"); //открываем 
    fclose ($file); // закрываем
    }
?>


2. KOZZ (29.04.2010 / 17:44)
перед записью прогоняй регулярку по файлу циклом

3. Олег (29.04.2010 / 18:00)
eGo, регулярку в цикле нежелательно использовать. Только потому что можно воспользоваться стандартными функциями для работы с масива в php

4. Дмитрий (29.04.2010 / 18:07)
Мне б, если можно, пример ввиде кода)А то так не разберусь, уж больно мало опыта в пыхе)

5. Александр (29.04.2010 / 18:48)
<? 
$passwd = $_GET['passwd']; // собираем  и записываем в переменные 
$email = $_GET['email']; 
if(strripos($text, $passwd) === false AND strripos($text, $email) === false)
{
$text .= "pass: $passwd \n";  
$text .= "mail: $email \n";  
  if (!empty($passwd) && !empty($email)) //если  переменные имеют значения выполняем запись  
    { 
    $file = fopen ("message.txt", "a+"); //открываем  
    fclose ($file); // закрываем 
    } 
}
?>
как то так
ЗЫ: в принципе лучше проверять только мыло

6. Azzido (29.04.2010 / 18:51)
$file=file('message.txt');
if(in_array($text,$file)){
exit('Сработала система антифлуда!');
}

7. Azzido (29.04.2010 / 18:53)
ну это с условием что текст в одной строке, а то разбивать на несколько строк как в примере в 5 посту это нерационально, то есть новая запись - новая строка, а не так чтоб новая запись - две новых строки

8. Вантуз-мен (29.04.2010 / 19:50)
я предлагаю записывать в файл пароль с логином в одну строку, а то не очень то и приятно будет обрабатывать данные
$text = "$passwd|$email|\r\n";
функция номер 1 (Поиск данных с файле)
<?
function search_string($file, $str, $ceil) {   
if (file_exists($file)){
$files = file($file);
foreach($files as $key=>$value){
$data = explode("|", $value);
if ($data[$ceil]==$str){
$data['line'] = $key;
return $data; break;
}}}
return false;
}
функция номер 2 запись в файл
<?
function write_files($filename, $text, $clear=0, $chmod=""){
$fp = fopen($filename, "a+");
flock ($fp,LOCK_EX);
if ($clear==1) {ftruncate($fp,0);}  
fputs ($fp,$text);
fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp);
if ($chmod!="") {chmod($filename, $chmod);}
}


9. Вантуз-мен (29.04.2010 / 19:53)
как применять данные функции
<?
if (search_string($file, $email, 1)){
write_files($file, "$passwd|$email|\r\n");
}
так как мыло уникальный идентификатор ищем по нему, 1 - номер ячейки с e-mail

10. ramzes (29.04.2010 / 21:36)
8#
if(in_array(explode('|', implode('|', file('file.txt')))){
echo' match ok';
}
хардкор ггsmile
мускул рулит

11. Nu3oN (29.04.2010 / 22:51)
ramzes (Сегодня / 21:36)
8#
if(in_array(explode('|', implode('|', file('file.txt')))){
echo' match ok';
}
хардкор ггsmile
мускул рулит
полностью солидарен))))

12. Nu3oN (29.04.2010 / 22:52)
повтор

13. Сергей (29.04.2010 / 23:03)
ramzes (Сегодня / 21:36)
8#
if(in_array(explode('|', implode('|', file('file.txt')))){
echo' match ok';
}
хардкор ггsmile
мускул рулит
жесть... иногда понимаю, что я не самый отчаянный быдлокодер D

14. ramzes (29.04.2010 / 23:13)
#13 гг я в жизни такого не напишуsmile это в виде шутки)) я долго придумывал гг

URL: https://visavi.net/topics/8788