Исключить запись повторов в 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';
}
хардкор гг
мускул рулит
11.
Nu3oN (29.04.2010 / 22:51)
ramzes (Сегодня / 21:36)
8#
if(in_array(explode('|', implode('|', file('file.txt')))){
echo' match ok';
}
хардкор гг
мускул рулит
полностью солидарен))))
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';
}
хардкор гг
мускул рулит
жесть... иногда понимаю, что я не самый отчаянный быдлокодер
14.
ramzes (29.04.2010 / 23:13)
#13 гг я в жизни такого не напишу
это в виде шутки)) я долго придумывал гг
URL:
https://visavi.net/topics/8788