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

Печать RSS
159

Д
Автор
beta than alpha
0
Собственно, скрипт записывает данные в тхт файл, но вот проблема - суть скрипта - запись данных из формы авторизации, то есть всегда, когда отправляется запрос, данные записываются в тхт-файл. Так вот, ооочень много повторов в такой базе накапливается, как запретить запись в файл, если такая запись там уже существует?
Сам скрипт:
<?
$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); // закрываем
    }
?>
Изменил: Дмитрий (29.04.2010 / 17:42)
K

Транклюкаторщик
0
перед записью прогоняй регулярку по файлу циклом
О

Землянин
0
eGo, регулярку в цикле нежелательно использовать. Только потому что можно воспользоваться стандартными функциями для работы с масива в php
Д
Автор
beta than alpha
0
Мне б, если можно, пример ввиде кода)А то так не разберусь, уж больно мало опыта в пыхе)

Чатланин
0
<? 
$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); // закрываем 
    } 
}
?>
как то так
ЗЫ: в принципе лучше проверять только мыло
Изменил: Александр (29.04.2010 / 18:50)
A

Оранжевые штаны
0
$file=file('message.txt');
if(in_array($text,$file)){
exit('Сработала система антифлуда!');
}
Изменил: Azzido (29.04.2010 / 18:52)
A

Оранжевые штаны
0
ну это с условием что текст в одной строке, а то разбивать на несколько строк как в примере в 5 посту это нерационально, то есть новая запись - новая строка, а не так чтоб новая запись - две новых строки
Изменил: Azzido (29.04.2010 / 18:55)

Господин ПЖ
0
я предлагаю записывать в файл пароль с логином в одну строку, а то не очень то и приятно будет обрабатывать данные
$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);}
}

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

2000 лет д.н.э.
0
8#
if(in_array(explode('|', implode('|', file('file.txt')))){
echo' match ok';
}
хардкор ггsmile
мускул рулит
Изменил: ramzes (29.04.2010 / 21:37)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск