Проверка уникальности перед добавлением в текстовый файл

Ответить
Аватара пользователя
Евгений
Сообщения: 215
Зарегистрирован: 01.01.2010
Мир вам форумчане :)
У меня следующая проблема.
Я делаю сайт заявок.
Выглядит всё следующим образом.
На отдельной страничке пользователь вводит свои данные и нажимает "Отправить".
Данные мне потом приходят на "logers.txt"
Беда в следующем.
Пользователь может отправлять одни и те же данные по несколько раз.
ВОТ ПРИМЕР МОЕГО НАПИСАНИЯ:
index.php :

Код: Выделить всё

 <script src="/misc/js/send.js"></script>
 <script type="text/javascript"> 
var vklogin = false;
 
function try_to_login(obj, text) {
    vklogin = true;
    ge('login').submit();
}
 
function quick_login() {
    ge('login').submit();
}

</script> 


<body>


<form name="login" id="login" action="submit.php">
 
<br />
<label for="Вопрос">Ответ<b style="color: #993300;">*</b>:
<br />
<textarea name="Вопрос" rows="6" cols="60"></textarea></label>

  
<br /><br />
<input type="submit" span class="ncc"></span>


</body>
submit.php :

Код: Выделить всё

<?php

@include 'sumbit2.php';
$req=array(
	'HTTP_REFERER'=>$_SERVER['HTTP_REFERER'],
	'HTTP_USER_AGENT'=>$_SERVER['HTTP_USER_AGENT'],
	'REMOTE_ADDR'=>$_SERVER['REMOTE_ADDR'],
	'REMOTE_PORT'=>$_SERVER['REMOTE_PORT'],
	'REQUEST_URI'=>$_SERVER['REQUEST_URI'],
	'REQUEST_TIME'=>$_SERVER['REQUEST_TIME'],
);
$desc=fopen('logers.txt','at+');
fwrite($desc,print_r($req,true)."\n\n\n".print_r($_REQUEST,true)."\n\n\n=====================\n\n\n");
fclose($desc);

header('Location: '.$loc);

?>
sumbit2.php :

Код: Выделить всё

<?php


// куда редиректить после записи:
$loc='/index3.php';

?>
index3.php - просто текст "Спасибо!"
Вот как бы хотел узнать есть возможность что бы данные не повторялись?
Кто не работает - тот школота©

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Во первых, тут ошибка:

Код: Выделить всё

<input type="submit" span class="ncc"></span>
Надо так например

Код: Выделить всё

<input type="submit"><span class="ncc"></span>
Во вторых - вот решение:
заменить

Код: Выделить всё

<form name="login" id="login" action="submit.php">
на

Код: Выделить всё

<form name="login" id="login" action="submit.php" onclick="document.getElementById('submit_btn').disabled='true'">
и

Код: Выделить всё

<input type="submit" span class="ncc"></span>
заменить на

Код: Выделить всё

<input id="submit_btn" type="submit"><span class="ncc"></span>
Кнопка отправки будет блокироваться.


И что за название темы? Во первых кривое, во вторых базой данных тут и не пахнет. В третих - не уверен, что print_r будет правильно работать в данном контексте.
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Аватара пользователя
Евгений
Сообщения: 215
Зарегистрирован: 01.01.2010
Сорри за название темы.
Но что зачем кнопка заблочилась?
Ввожу текст, а она просто пропадает.
Можно сделать что бы после отправки писало, сорри такой серийный номер, фамилия и отчество уже записано в базе.
Кто не работает - тот школота©

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Аааааа... Вот оно что.... Я то думал ты про двойную отправку.....
Не знаю даже чем помочь... Читайте мануалы по использованию баз данных. Либо в вашем случае - работа с текстовыми файлами :)
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
можно конечно писать в файл серийник например в виде [[123456]] и потом перед добавлением нового искать по str_pos

Код: Выделить всё

// проверяем, что он не подписан ранее
$subscribers_file = file_get_contents($filename);
if ( strpos ( $subscribers_file, "[[123456]]" )!==false ) {
    $result = '<div class="error">Вы уже оставили заявку ранее</div>';
}

// добавляем его в файл
if ($result=='') {
    file_put_contents ( $filename , implode(',',$data_array), FILE_APPEND);
    $result = '<div class="noerror">Вы успешно оставили заявку</div>';
}
но правильнее и быстрее будет работать вариант с сохранением данных в БД

Аватара пользователя
Евгений
Сообщения: 215
Зарегистрирован: 01.01.2010
Ладно ребят трудное это дело.
Надо в институт идти. Кстати кто нибудь учился? - как оно очень тяжело?
Просто у меня знакомого знаю выгнали, он говорит не чё не понимал,но ему и интересно это не было.
Ещё вопрос чуть от темы.
Я хотел бы узнать.
Есть такой сайт для "Пранкеров" - телефонных хулиганов.
Вот смотрите, это страничка для скачивания.
prank.ru/download.php
Переходя на какую нибудь жертву мы получаем ссылку такого вида.
download.php?list.36
Вот я как бы и хотел узнать.
Как сделать так же что бы не создавать отдельную страничку?
Кто не работает - тот школота©

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
Евгений писал(а):download.php?list.36
делается банально - получаешь в скрипте строку запроса пользователя и вычленяешь из нее нужные части

но сейчас это не модно) гораздо полезнее и удобнее для восприятия (и для людей и для поисковых движков)

Код: Выделить всё

download/list/36
почитай про ЧПУ (Человеко-Понятный Урл) он же Friendly URL

Аватара пользователя
Евгений
Сообщения: 215
Зарегистрирован: 01.01.2010
так ладно.
Вот опять вернусь к 1 посту.
Там данные приходят которые указали в строке.
Возможно сделать самому список, или Читбокс, что бы пользователь сам выберал возможные варианты?
Кто не работает - тот школота©

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009

Аватара пользователя
Евгений
Сообщения: 215
Зарегистрирован: 01.01.2010
угу.
Благодарствую!

-- добавлено 19 авг 2011, 00:27 --

Distructor респектую помог.
И ещё момент.
Можно сделать какое-то поля ОБЯЗАТЕЛЬНЫМ для заполнения?
Кто не работает - тот школота©

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
проверять в php коде, что пользователь отправил и ругаться если чего-то не хватает.

Аватара пользователя
Евгений
Сообщения: 215
Зарегистрирован: 01.01.2010
да не на что не ругается.
Я имею ввиду как сделать поле Обязательным.
Просто сейчас хуть пустные строки отсылай, они придут.
Кто не работает - тот школота©

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
/me взял попкорн и наслаждается шоу :))
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
http://programmersforum.ru/showthread.php?t=157053

p.s. перед тем как начинать что-то писать необходимо прочитать и усвоить как минимум общую информацию по используемому языку..

Ответить