Реклама на сайте Advertise with us

Нид хелп по рнр

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

1К13!

С нами с 07.05.04
Сообщения: 7721
Рейтинг: 2428

Ссылка на сообщениеДобавлено: 28/03/06 в 15:34       Ответить с цитатойцитата 

Есть файл links.txt
В нём - десять ссылок в столбик.

Мне нужно, чтобы юзер через форму писАл свой урл, и этот урл затирал последнюю (десятую) ссылку в links.txt
Т.е. чтобы links.txt всегда состоял из десяти строк, но при этом мог построчно обновляться.

например, сначала links.txt такой:

ссылка1
ссылка2
ссылка3
ссылка4
ссылка5
ссылка6
ссылка7
ссылка8
ссылка9
ссылка10

потОм юзер сабмитит свой урл, и файл становится такой:

ссылка1
ссылка2
ссылка3
ссылка4
ссылка5
ссылка6
ссылка7
ссылка8
ссылка9
ссылка-юзера1

потОм второй юзер сабмитит свой урл и файл становится такой:

ссылка1
ссылка2
ссылка3
ссылка4
ссылка5
ссылка6
ссылка7
ссылка8
ссылка-юзера1
ссылка-юзера2

Подскажите, плиз, какую функцию использовать для такой записи в файл.

Talitha kumi!

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 28/03/06 в 15:43       Ответить с цитатойцитата 

Насколько знаю такой стандартной функции нету, нада писать.
И удобнее принцип стека писать по правилу LIFO.

Т.е. твою задачу без доп. условий хрен выполнишь icon_smile.gif
Ибо, если будет больше 10 добавлений, то как быть, куда писать?

8
 

осинизатор

С нами с 10.03.03
Сообщения: 8491
Рейтинг: 819

Ссылка на сообщениеДобавлено: 28/03/06 в 16:05       Ответить с цитатойцитата 

Вот код, который это делает:

Код:

<?php
if (isset($_GET["url"])) {
   $lines = file("links.txt");
   array_shift($lines);
   array_push($lines, $_GET["url"]);
   @unlink("links.txt");
   $fp = fopen("links.txt", "w");
   foreach ($lines as $line_num => $line) {
      fwrite($fp, trim($line)."\n");
   }
   fclose($fp);
}   
?>


1) Сохраняешь его в какой-нибудь php-файл, например geturl.php и размещаешь в той же папке, где лежит links.txt
2) Делаешь chmod файлу links.txt и устанавливаешь права 777, или 666 -иначе скрипт не сможет его переписать!
3) Ну и передаешь ему введенный пользовтелем url через <form method="get" action="geturl.php">. Или напрямую:
http://твойсайт.com/geturl.php?url=http://www.nubileones.com icon_smile.gif

ушел на завод

8
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 28/03/06 в 16:12       Ответить с цитатойцитата 

cyberxxx писал:
Вот код, который это делает:
Код:

<?php
if (isset($_GET["url"])) {
   $lines = file("links.txt");
   array_shift($lines);
   array_push($lines, $_GET["url"]);
   @unlink("links.txt");
   $fp = fopen("links.txt", "w");
   foreach ($lines as $line_num => $line) {
      fwrite($fp, trim($line)."\n");
   }
   fclose($fp);
}   
?>



А массив сдвигаться будет icon_smile.gif
т.е. до
ссылка1
ссылка2
ссылка3
ссылка4
ссылка5
ссылка6
ссылка7
ссылка8
ссылка9
ссылка-юзера1

после

ссылка2
ссылка3
ссылка4
ссылка5
ссылка6
ссылка7
ссылка8
ссылка9
ссылка-юзера1
ссылка-юзера2

А я так понял, надо, чтоб ссылка1 оставалась и уходила последней...

3
 

осинизатор

С нами с 10.03.03
Сообщения: 8491
Рейтинг: 819

Ссылка на сообщениеДобавлено: 28/03/06 в 16:18       Ответить с цитатойцитата 

ibiz писал:
А массив сдвигаться будет icon_smile.gif
т.е. до
ссылка1
ссылка2
ссылка3
ссылка4
ссылка5
ссылка6
ссылка7
ссылка8
ссылка9
ссылка-юзера1
после
ссылка2
ссылка3
ссылка4
ссылка5
ссылка6
ссылка7
ссылка8
ссылка9
ссылка-юзера1
ссылка-юзера2
А я так понял, надо, чтоб ссылка1 оставалась и уходила последней...


Думаю, что топикстартер попутал что-то. Скорее всего он имелл в виду именно сдвиг массива по принципу FIFO. По крайней мере, LIFO-стек тут точно не канает.

ушел на завод

3
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 28/03/06 в 16:25       Ответить с цитатойцитата 

cyberxxx писал:
Думаю, что топикстартер попутал что-то. Скорее всего он имелл в виду именно сдвиг массива по принципу FIFO. По крайней мере, LIFO-стек тут точно не канает.


Ага, чот я в них запутался icon_smile.gif
первый пришел первый ушол...

3
 

c++,php кодинг

С нами с 22.10.05
Сообщения: 1098
Рейтинг: 558

Ссылка на сообщениеДобавлено: 28/03/06 в 16:37       Ответить с цитатойцитата 

тогда сразу бы добавил:
1.проверку на пустую строку
2.проверку на то что изначально в links.txt меньше 10 строк
3.вырезать символь переноса строки из url

3
 

осинизатор

С нами с 10.03.03
Сообщения: 8491
Рейтинг: 819

Ссылка на сообщениеДобавлено: 28/03/06 в 17:03       Ответить с цитатойцитата 



1 и 2 imho глупо делать. Во-впервых, количество строк в массиве может быть другим (как я понимаю, 10 чисто для примера указано). Пустые строки искать тоже глупо, ибо при ручном формировании массива их там быть не должно, а при работе скрипта они точно не появятся. А вот пункт 3 действительно нужен и в моем коде уже реализован icon_smile.gif

Единственное что можно добавть, так это блокировку файла на время записи через flock(), т.е. так:

Код:

<?php
if (isset($_GET["url"])) {
   $lines = file("links.txt");
   array_shift($lines);
   array_push($lines, $_GET["url"]);
   @unlink("links.txt");
   $fp = fopen("links.txt", "w");
   flock($fp, 2);
   foreach ($lines as $line_num => $line) {
      fwrite($fp, trim($line)."\n");
   }
   flock($fp, 3);
   fclose($fp);
}   
?>


А всяких условно-полезных проверок можно кучу навставлять. Например, отсеивать не только пустые строки, но и строки, не содержащие реальный адрес (сделать проверку на префиксы "http://", "ftp://" и т.д.) Вообще, можно много чего придумать icon_smile.gif

ушел на завод

3
 

1К13!

С нами с 07.05.04
Сообщения: 7721
Рейтинг: 2428

Ссылка на сообщениеДобавлено: 28/03/06 в 17:57       Ответить с цитатойцитата 

cyberxxx, спасибо большое 8)
всем +8

Talitha kumi!

0
 

c++,php кодинг

С нами с 22.10.05
Сообщения: 1098
Рейтинг: 558

Ссылка на сообщениеДобавлено: 28/03/06 в 18:01       Ответить с цитатойцитата 

если бензоле сразу не добавить в файл 10 (или n например) урлов - работать не будет.
isset не есть проверка на пустую строку.
если какой то умник вставит в середине урла перенос строки, получим +1 урл размер файла

вот :p

0
 

1К13!

С нами с 07.05.04
Сообщения: 7721
Рейтинг: 2428

Ссылка на сообщениеДобавлено: 28/03/06 в 18:13       Ответить с цитатойцитата 

да я понял )
для моих целей скрипт вполне подойдёт )

Talitha kumi!

0
 

осинизатор

С нами с 10.03.03
Сообщения: 8491
Рейтинг: 819

Ссылка на сообщениеДобавлено: 28/03/06 в 20:08       Ответить с цитатойцитата 



вот версия с проверкой на пустую строку и даже на то, что строка сожержит www-ссылку (опять же чисто для выебона):

Код:

<?php
if (isset($_GET["url"]) && eregi("^http://", $_GET["url"])) {
   $lines = file("links.txt");
   array_shift($lines);
   array_push($lines, $_GET["url"]);
   @unlink("links.txt");
   $fp = fopen("links.txt", "w");
   flock($fp, 2);
   foreach ($lines as $line_num => $line) {
      fwrite($fp, trim($line)."\n");
   }
   flock($fp, 3);
   fclose($fp);
}   
?>


Наличие непустого файла links.txt в том же подкаталоге все так же обязательно icon_smile.gif

ушел на завод

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »