[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление строки.
juk88
Здравствуйте.
Я только что начал изучать ПХП (Минут пять назад), так что в этом деле пока полный 0.

У меня есть скрипт, который в случайном порядке, загружает ссылку из текстового документа.
Скрипт работает отлично,но мне необходимо, чтоб после выбора случайной ссылки, он удалял её из базы текстового файла, так, чтоб она больше никогда не могла быть выбранна.
Помогите пожалуйста, вот код самого скрипта:

<?php
// En: Begin PHP Code / Fr: Debut code PHP
// Necessary Variables:


$RANDOM_URL_FILE = "list_url.txt";
// En: Absolute path and name to file contain URL location.
// Fr: Chemin absolu (complet) et Nom du fichier contenat les URL.

// End Necessary Variables section

/******************************************************************************/

srand((double)microtime()*1000000);

if (file_exists($RANDOM_URL_FILE)) {
$arry = file($RANDOM_URL_FILE);
// En: load file.
// Fr: charge le fichier.


for($i = 0; $i < sizeof($arry) ; $i++) {
if (preg_match("/http:/", $arry[$i]))
$good_arry[$j++] = chop($arry[$i]);
# PHP 4.0 arry_push ($good_arry, $arry[$i]);
}
if ($good_arry) {
header("Location: ".$good_arry[rand(0, sizeof($good_arry) -1)]);
} else {
echo "error no good URL";
}
}
else {
echo "error: can't open $RANDOM_URL_FILE file";
}

// En: End PHP Code
// Fr: Fin code PHP

?>




Спустя 4 часа, 49 минут, 57 секунд (31.03.2011 - 08:55) Trianon написал(а):
для пяти минут изучения что-то дофига инструментов применяется,
и задачка решается какая-то чересчур меркантильная...

Спустя 12 минут, 31 секунда (31.03.2011 - 09:08) juk88 написал(а):
Это ведь не мой скрипт, я готовый использую, просто мне нужно немного его изменить, а как это сделать не знаю.
А почему меркантильная?

Спустя 7 минут, 36 секунд (31.03.2011 - 09:16) Trianon написал(а):
Почему Вы решили, что изменить нужно лишь немного?

Код, как я заметил, не только случайным образом строки выбирает, но еще и выполняет некоторую фильтрацию среди них.
А значит задача вовсе не такая простая, как Вы описываете.
Не говоря уже о том, что перезапись большого файла при каждом обращении к источнику данных - само по себе процедура малоприятная.


Меркантильная - для изучения языка - я имел в виду.
Просто обычно, когда что-то выбирается случайным образом, естественную цель сайта это не преследует.

Вы взяли готовый скрипт?
Хорошо.
Теперь изучите примененные в нем функции, чтобы понять, как он работает.
Тогда Вы сможете его изменять при необходимости.

А пока что его использование Вам, в плане изучения языка, не дало ничего.

Спустя 3 минуты, 58 секунд (31.03.2011 - 09:20) juk88 написал(а):
Я просто не знаю, много или нет. Просматривая другие аналогичные коды, я лиш сделал вывод, что раз текста по сравнению с ними немного, то и изменить нужно тоже немного.
А вообще, именно с этим скриптом такое сделать возможно?

Спустя 7 минут, 30 секунд (31.03.2011 - 09:27) Trianon написал(а):
ели бы фильтрации не было, можно было бы написать что-то вроде
<?php
$list = file('file.txt'); // получили список строк
$idx = rand(0, count($list) -1); // случайный индекс
$target = rtrim($list[$idx]); // выбрали строку, убрали "\r\n"
unset($list[$idx]); // удалили из списка
file_put_contents('file.txt', implode('', $list)); // записали остаток в файл
header("Location: ". $target); // перешли по выбранному URL
exit();


Как, по Вашему, похоже это на исходный скрипт?

Спустя 6 минут, 18 секунд (31.03.2011 - 09:33) juk88 написал(а):
А для чего нужна фильтрация?
Может её можно убрать?

Спустя 16 минут, 41 секунда (31.03.2011 - 09:50) juk88 написал(а):
Trianon
А скрипт который Вы написали, помоему делает именно то что мне нужно?
Будет ли он работать вместо того что я выложил?

Спустя 4 минуты, 33 секунды (31.03.2011 - 09:55) Trianon написал(а):
juk88
Нужна ли фильтрация, можно ли её убрать - знаете только Вы и автор скрипта.
Автор знает зачем она там, а Вы - потому что Вы этот скрипт выбрали.

Делает ли мой скрипт то что Вам нужно, знаете только Вы. Потому что только Вы занете, что Вам реально необходимо.
Будет ли он работать, тоже знаете только Вы. Только Вы владеете тем окружением, где это можно проверить.

Я бы его использовать не посоветовал по причинам, уже озвученным.
Вносить изменения в большой файл на каждом запросе - крайне неудачная идея.

"работать вместо" - этого оборота я не понимаю совсем.

Спустя 7 минут, 20 секунд (31.03.2011 - 10:02) juk88 написал(а):
Просто мне без разници какой скрипт и как он работает, я в этом всё равно ничего не понимаю.
Мне нужно лиш, чтоб при переходе по ссылке на скрипт, пользователю открывалась любая ссылка из текстового файла, выбранная случайным образом. И чтоб та ссылка которая была выбранна, удалялась из файла, чтоб второй раз уже по ней невозможно было перейти.
Незнаю, понятно ли я обьяснил?

Спустя 14 часов, 26 минут, 6 секунд (1.04.2011 - 00:28) KonstantinK написал(а):
juk88
Чудно получается что через какое-то время ссылок в файле то не останется и другим пользователям переходить будет некуда, вы эту цель преследуете?

Спустя 2 часа, 36 минут, 1 секунда (1.04.2011 - 03:04) juk88 написал(а):
KonstantinK
Да эту. Ссылок в файле более 1000, а пользователей неочень много и за ссылками я слежу, чтоб они не заканчивались. Тем более, что я к этому скрипту прикрутил ещё один:
PHP IP blocker w/ time limit
Описание:
Простой скрипт, который запоминает IP адрес посетителя web страницы и затем не пускает его снова на эту страницу в течение указанного времени.

Так что более одного раза в сутки пользователь всё равно не сможет перейти по ссылке и они не очень быстро закончатся. Еслиб я конечно в ПХП понимал, то сделал бы проверку, когда остаётся одна ссылка, чтоб она не удалялась, это на случай, если я всёже не успею обновить список ссылок.

Спустя 23 дня, 19 часов, 22 минуты, 7 секунд (24.04.2011 - 22:26) juk88 написал(а):
Никто не поможет мне с написанием этого скрипта?
Мне нужно, чтоб из текстового файла у меня на сайте, бралась любая случайно выбранная ссылка, после чего, осуществлялся переход по ней и удаление её из текстового файла, чтоб больше по ней никто не мог перейти. Вобщем исключить повторный переход по ссылке. Может кто знает, где взять готовый скрипт?

Спустя 10 минут, 49 секунд (24.04.2011 - 22:37) kirik написал(а):
Цитата (juk88 @ 24.04.2011 - 15:26)
Мне нужно, чтоб из текстового файла у меня на сайте, бралась любая случайно выбранная ссылка, после чего, осуществлялся переход по ней и удаление её из текстового файла, чтоб больше по ней никто не мог перейти. Вобщем исключить повторный переход по ссылке. Может кто знает, где взять готовый скрипт?

Тебе же Trianon написал его уже.

Спустя 6 минут, 8 секунд (24.04.2011 - 22:43) juk88 написал(а):
Да, что-то не работает. Записывает в файл какието кракозябры.
У меня ссылки на файлообменник летитбит, для скачивания архивов.

Спустя 9 минут, 12 секунд (24.04.2011 - 22:52) juk88 написал(а):
ОЙ! Извиняюсь! Всё работает! Это у меня в опере режим турбо включён был.
Забадал он уже, как бы его совсем отключить?

Спустя 28 дней, 21 час, 22 минуты, 28 секунд (23.05.2011 - 20:15) juk88 написал(а):
Подскажите пожалуйста, этот код, отлично работает:

<?php
$list = file('list_url.txt'); // получили список строк
$idx = rand(0, count($list) -1); // случайный индекс
$target = rtrim($list[$idx]); // выбрали строку, убрали "\r\n"
unset($list[$idx]); // удалили из списка
file_put_contents('list_url.txt', implode('', $list)); // записали остаток в файл
header("Location: ". $target); // перешли по выбранному URL
exit();
?>


Но мне нужно, чтоб вместо: перешли по выбранному URL, ссылка вставлялясь в любую созданную мной страницу и пользователь уже естественным образом переходил нажав по ней.
А то, например депозит, не засчитывает скачивания если они осуществленны приведённым выше способом.
Можно ли такое сделать?

Спустя 12 часов, 45 минут, 22 секунды (24.05.2011 - 09:00) juk88 написал(а):
Всё, сам догадался как сделать.
print "Ссылка на скачивание: <a href =
\"$target\">СКАЧАТЬ</a>.";

Спустя 1 час, 24 минуты, 59 секунд (24.05.2011 - 10:25) Snus написал(а):
Цитата (Trianon @ 31.03.2011 - 06:27)
file_put_contents('file.txt', implode('', $list));

А разве не
implode("\n", $list);
?

Спустя 42 минуты, 3 секунды (24.05.2011 - 11:07) juk88 написал(а):
Но, у меня мой вариант тоже работает.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.