11. Zerh - 28 Февраля, 2008 - 11:50:18 - перейти к сообщению
Блин дорогой Furax выручай!!! Юзеры постоянно обновляют страничку и в базе твориться беспредел!!! Как решить вопрос? И еще можно ли поставить ограничение, типа один раз денюху ввел и досвидание(при следующей попытке скажит извини ты уже в базе регестрировался!). +для полного счастья кнопочка "база", где можно будет просмотреть денюхи всех зарегеных юзеров. Извини за надоедлевость но я сам уже 3 дня пытаюся освоить php, но увы это не реально, а скрипт нужен уже сейчас, так что все надежда только на этот форум!
12. Furax - 28 Февраля, 2008 - 21:09:30 - перейти к сообщению
После
По второму вопросу - это уже надо наворачивать скрипт регистрации, хотя, если устроит простой вариант (с cookie-файлами), то можно сделать так:
База делается просто:
CODE:
добавляем:if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
$dates[$month][$day] = array();
CODE:
if (array_search($_POST['nick'], $dates[$month][$day[) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}
{
echo 'День рождения уже есть в базе!';
return;
}
По второму вопросу - это уже надо наворачивать скрипт регистрации, хотя, если устроит простой вариант (с cookie-файлами), то можно сделать так:
CODE:
В конце функции addRecord() (после строчки "fclose($file);" добавляем:if (isSet($_COOKIE['added']))
{
setCookie('added', 'true', time()+365*24*60*60);
?>Вы не можете добавить больше, чем один день рождения!<?php
}
else
{
?> Тут код формы добавления и сама функция добавления <?php
}
{
setCookie('added', 'true', time()+365*24*60*60);
?>Вы не можете добавить больше, чем один день рождения!<?php
}
else
{
?> Тут код формы добавления и сама функция добавления <?php
}
CODE:
setCookie('added', 'true', time()+365*24*60*60);
База делается просто:
CODE:
$dates = unserialize(file_get_contents('birthdays.txt'));
foreach ($dates as $month => $monthContent)
foreach ($monthContent as $date => $dateContent)
print "<b>$date.$month:</b> " . implode(', ', $dateContent) . '<br>';
foreach ($dates as $month => $monthContent)
foreach ($monthContent as $date => $dateContent)
print "<b>$date.$month:</b> " . implode(', ', $dateContent) . '<br>';
13. Zerh - 29 Февраля, 2008 - 08:56:17 - перейти к сообщению
Furax пишет:
После
CODE:
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
добавляем:
CODE:
if (array_search($_POST['nick'], $dates[$month][$day[) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}
CODE:
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
добавляем:
CODE:
if (array_search($_POST['nick'], $dates[$month][$day[) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}
после этого скрипт перестает работать
Furax пишет:
Это не обновление. Ты, видимо, внёс именинника, а потом давил "Обновить". Вот браузер каждый раз и передавал POST-поля для добавления именинника, а скрипт добавлял. Попробуй закрыть браузер, а потом снова зайти на страницу - и обновляй сколько хочешь!
Если боишься этого эффекта в будущем - просто раздели страницы добавления и отображения.
Это не обновление. Ты, видимо, внёс именинника, а потом давил "Обновить". Вот браузер каждый раз и передавал POST-поля для добавления именинника, а скрипт добавлял. Попробуй закрыть браузер, а потом снова зайти на страницу - и обновляй сколько хочешь!
Если боишься этого эффекта в будущем - просто раздели страницы добавления и отображения.
Как разделить страницы добавления и отображения. Пользователи все время повторяют эту ошибку: вводят свои данные а потом по 10 раз жмут обновить страничку!
14. Furax - 29 Февраля, 2008 - 09:10:22 - перейти к сообщению
Zerh
CODE:
if (array_search($_POST['nick'], $dates[$month][$day]) !== FALSE)
15. Zerh - 29 Февраля, 2008 - 09:40:07 - перейти к сообщению
я вставил эту строчку после
теперь добавляеть число и месяц, а ник не добавляеться(как-будто при заполнении формы это поле оставили пустым)
CODE:
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
теперь добавляеть число и месяц, а ник не добавляеться(как-будто при заполнении формы это поле оставили пустым)
16. Furax - 29 Февраля, 2008 - 10:57:45 - перейти к сообщению
Полный код должен быть таким:
CODE:
<form action="/" method="post">
День: <input name="day" size="2" maxlength="2"><br>
Месяц: <input name="month" size="2" maxlength="2"><br>
Ник: <input name="nick"><br>
<input type="submit" value="OK">
</form>
<?php
function addRecord()
{
if (! (isSet($_POST['day']) && isSet($_POST['month']) && isSet($_POST['nick'])))
return;
if (($_POST['day'] != (string)(int)$_POST['day']) || ($_POST['month'] != (string)(int)$_POST['month']))
{
echo 'Неверно введена дата рождения!';
return;
}
$day=(int)$_POST['day'];
$month=(int)$_POST['month'];
$monthSizes = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if (! (isSet($monthSizes[$month]) && ($day >= 1) && ($day <= $monthSizes[$month])))
{
echo 'Неверная дата!';
return;
}
if (!preg_match('/\w{1,100}/', $_POST['nick']))
{
echo 'Недопустимый ник!';
return;
}
$dates = unserialize(file_get_contents('birthdays.txt'));
if (!isSet($dates[$month]))
$dates[$month] = array();
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
if (array_search($_POST['nick'], $dates[$month][$day]) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}
$dates[$month][$day][] = $_POST['nick'];
$file = fopen('birthdays.txt', 'w');
fwrite($file, serialize($dates));
fclose($file);
}
addRecord();
?>
День: <input name="day" size="2" maxlength="2"><br>
Месяц: <input name="month" size="2" maxlength="2"><br>
Ник: <input name="nick"><br>
<input type="submit" value="OK">
</form>
<?php
function addRecord()
{
if (! (isSet($_POST['day']) && isSet($_POST['month']) && isSet($_POST['nick'])))
return;
if (($_POST['day'] != (string)(int)$_POST['day']) || ($_POST['month'] != (string)(int)$_POST['month']))
{
echo 'Неверно введена дата рождения!';
return;
}
$day=(int)$_POST['day'];
$month=(int)$_POST['month'];
$monthSizes = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if (! (isSet($monthSizes[$month]) && ($day >= 1) && ($day <= $monthSizes[$month])))
{
echo 'Неверная дата!';
return;
}
if (!preg_match('/\w{1,100}/', $_POST['nick']))
{
echo 'Недопустимый ник!';
return;
}
$dates = unserialize(file_get_contents('birthdays.txt'));
if (!isSet($dates[$month]))
$dates[$month] = array();
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
if (array_search($_POST['nick'], $dates[$month][$day]) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}
$dates[$month][$day][] = $_POST['nick'];
$file = fopen('birthdays.txt', 'w');
fwrite($file, serialize($dates));
fclose($file);
}
addRecord();
?>
17. Zerh - 29 Февраля, 2008 - 12:19:35 - перейти к сообщению
так и есть, но все равно именниники добавляються через запятую. Слушай а может можно сделать так чтоб при нажатии на кнопку ок, пользователь возвращялся на главную страничку, а ссылка " добавить мой день рождения" стала для него невидимой?
а он видел только сегодня именниники: вася петя и я!
а он видел только сегодня именниники: вася петя и я!
18. Furax - 29 Февраля, 2008 - 23:02:58 - перейти к сообщению
Zerh
Можно всё... Я только не понимаю, почему у тебя именинники добавляются через запятую при обновлении страницы, когда у меня всё пучком.
Редирект делается так: в нужном месте вставь
Можно всё... Я только не понимаю, почему у тебя именинники добавляются через запятую при обновлении страницы, когда у меня всё пучком.
Редирект делается так: в нужном месте вставь
CODE:
header('location: index.php');
19. admroot - 03 Мая, 2010 - 02:46:01 - перейти к сообщению
почему то у меня не работает... Значит я создал таблицу в базе birthday в таблице 3 поля name (varchar255), day (int2), month (int2). Да то что поле name я просто поменял nick (в скрипте тоже попраил). При попытке добавить новую запись в бд - пишет неверная дата... помогите плиз
вот линк premier-produkt.ru
вот линк premier-produkt.ru
20. Леголегс - 03 Мая, 2010 - 15:40:21 - перейти к сообщению
admroot пишет:
таблицу в базе
Т.е. ты используешь вариант скрита с первой страницы, который с sql?
admroot пишет:
Оно так пишет, если ты пытаешься добавить 35ое марта или 30ое февраля.При попытке добавить новую запись в бд - пишет неверная дата
admroot пишет:
Не работает. 500ая ошибка.
вот линк