| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
два вопроса - удалить строку и бан по ip
$manlix = file("$manlixfile");
$manlixrandom = rand(0, sizeof($manlix)-1); $manlixtext = $manlix[$manlixrandom]; if (empty($QUERY_STRING)) { echo $manlixtext; } else { if ($QUERY_STRING != "") { echo "<font color=\"$QUERY_STRING\">$manlixtext</font>"; } } ?> Надо чтоб не только выводил строку но и удалял эту строку из исходного файла и второе организовать бан чтоб человек не мог определённое время обновлять эту страницу. заранее спасибо, сам я полный чайник в этом - жизнь заставила - поэтому прошу как можно проще. |
|
|
# 2 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
1
Код:
<?
$manlix = file("$manlixfile");
$manlixrandom = rand(0, sizeof($manlix)-1);
$manlixtext = $manlix[$manlixrandom];
if (empty($QUERY_STRING))
{
echo $manlixtext;
}
else
{
if ($QUERY_STRING != "")
{
echo "<font color=\"$QUERY_STRING\">$manlixtext</font>";
}
}
unset($manlix[$manlixrandom]);
file_put_contents($manlixfile, implode("\n", $manlix));
?>
Дургое дело что на повторную загрузку (если определели) можно ничего не выдавать, выдвать что-то другое, посылать, банить или предпринимать еще какие-то действия...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 10.02.2008 в 03:22. |
|
|
|
|
# 3 |
|
Guest
Сообщения: n/a
|
1
Огромное спасибо, строку удаляет, но зачем то добавляет пустые строки т.е. изначальный файл 1 2 3 4 после работы скрипта 1 3 4 в следующий раз добавляет ещё стоклько же пустых строк а хотелось бы чтоб получалось так 1 3 4 по второму вопросу, да надо например перенаправлять куда либо в течении например 10 мин. Т.е. посмотрел страничку, потом 10 мин при повторной загрузке получает - зайдите позже, потом опять посмотрел и опять 10 мин зайдите позже |
|
|
# 4 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Просто поменяйте: file_put_contents($manlixfile, implode("\n", $manlix)); на file_put_contents($manlixfile, implode('', $manlix)); Блокировать надо именно по IP? А если через прокси люди сидят, все окажутся заблокированными? И наоборот, заблокирован - сменил прокси и снова все получил... Думаю гораздо проще блокировать по флагу в сессии (куки по сути) - "защищённость" та же, то есть никакая, зато реализовать в 2 строчки.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 6 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Код:
<?
/*
This is neccesary if session_autostart is off, overwise - may be safly removed.
And it MUST be first (before any output) string
*/
@session_start();
#Settings. May bi in other place: Config-file, DataBase etc...
$manlixfile = 'test.dat';
$manlix_period = 30; #In seconds
#Check acces, and save date into session
if (( $sec_diff = date('U') - @$_SESSION['manlix_last_date']) < $manlix_period){
exit('Wait more '.($manlix_period - $sec_diff).' second!');
}
else $_SESSION['manlix_last_date'] = date('U');
$manlix = file($manlixfile);
$manlixrandom = rand(0, sizeof($manlix)-1);
$manlixtext = $manlix[$manlixrandom];
if (!empty($QUERY_STRING))
echo "<font color=\"$QUERY_STRING\">$manlixtext</font>";
else echo $manlixtext;
#Save results
unset($manlix[$manlixrandom]);
file_put_contents($manlixfile, implode('', $manlix));
?>
Ну и еще, все это конечно хорошо, но есть два момента тут еще: 1. При высокой нагрузке, это даст сбой из-за состояния гонки при записи и считывания одного и того же файла одновременно из разных потоков, хорошо бы делать блокировку. Но это уже для домашней работы. 2. А что будет если файл кончится? Тоже думаю проверить как эту, таки о ошибки записи... В общем дерзайте, и все у Вас получится.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|