Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как сделать ссылку не активной после перехода? (https://javascript.ru/forum/events/77925-kak-sdelat-ssylku-ne-aktivnojj-posle-perekhoda.html)

Chesterfield25 03.07.2019 11:14

Как сделать ссылку не активной после перехода?
 
Подскажите как сделать ссылку не активной после перехода одного человека?
Скажем у меня на странице есть список ссылок, мне нужно сделать что по одной ссылке могли перейти только один раз, после чего она стала не активной для всех остальных. То есть если я перейду по одной из ссылок, то все кто посетит эту страницу после меня не смогут переходить по этой ссылке!

Вот на одном из сайтов нашел информацию https://webgyry.info/disable-link-href-jquery

Где можно заблокировать ссылку
<a href="http://xmonitoring.ru/" class="link">Ссылка не активная</a>
<script type="text/javascript"> $(document).ready ( function(){ $(".link").click(function() { return false; }); }); </script>


Где написано: если перед тем, как сделать ссылку не активной, нужно выполнить какие-либо действия, перед командой return false, вы можете добавить свой код. Подскажите как правильно перед командой return false указать что бы ссылка открывалась в новой вкладке, и будит это работать?

Chesterfield25 03.07.2019 11:44

Если можете подскажите как это сделать с помощью php, только что бы ссылки не из базы данных выводить и удалять а из txt файла?

laimas 03.07.2019 12:44

$link = 'xxxxx'; //ссылка по которой перешли, как и кем это у вас определяется неизвестно
//удаление из файла
$f = implode(PHP_EOL, array_filter(file('filename.txt', FILE_IGNORE_NEW_LINES), function($v) use($link) {
     return $v !== $link;
}));
//сохранение файла
file_put_contents('filename.txt', $f);


PS. Только разумнее не удалять, а добавлять.

Chesterfield25 03.07.2019 12:58

Посмотрите что выдаёт на странице http://b99437dx.beget.tech/

laimas 03.07.2019 13:09

Ничего не выдает.

Chesterfield25 03.07.2019 13:11

Из текстового файла нужно показать на странице список ссылок в количестве 10 штук. Если по какой то из ссылок перешли то она удаляется из файла и на странице больше не показывается!

laimas 03.07.2019 13:21

Вы сперва с логикой разберитесь, а уже затем конкретно. Кто обрабатывает ссылки? Что за страницы?

Если все запросы через индексный файл, значит обработчик один в нем, иначе ...
Если страницы динамические, то да, ссылки можно хранить в файле/базе. Но если это статические страницы, то не нужно хранения, достаточно удалить сам файл страницы.

Если речь только о 10 фиксированных страницах и они умирают до конца веков человечества, то да, удаляем, иначе лучше добавлять.

А логика такова:

$request = $_SERVER['REQUEST_URI']; - это запрашиваемая страница, а что вы держите в качестве URL только вам и богу известно.

Далее проверяется, в случае фиксированных десяти и ...:

if($link = file('link.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) AND in_array($request, $link)) {

здесь удаление из файла как показано выше, и вывод страницы

} иначе нет вывода

Так что описать надо что к чему, если хотите получить конкретный ответ.

Chesterfield25 03.07.2019 13:38

Этот скрипт мне нужен для продвижения своего сайта, более подробно:
У меня есть список форумов на которых можно разместить обратную ссылку на свой сайт, который будет хранится в текстовом файле! Список этих форумов нужно показать на одной странице, да бы направлять людей с биржы заданий на эту страницу что бы они размещали ссылку на мой сайт на этих форумах. Что бы только один человек мог перейти на один форум и разместить там одну ссылку, а не так что я просто в html выведу список форумов, несколько человек перейдёт на один и тот же форум. Мне нужно вывести 150 форумов привести на страницу 150 человек, и получить 150 обратных ссылок!

laimas 03.07.2019 13:43

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

И просьба была рассказать о логике работы сайта, а не для чего это нужно.

Malleys 03.07.2019 13:47

Chesterfield25, так? https://bulkygoldkey--malleys.repl.co/
Если да, то можете посмотреть код https://repl.it/@Malleys/BulkyGoldKey

Три нажатии на ссылку она зачёркивается, чтобы было видно, что больше посещать не надо, а при обновлении страницы она исчезает! Остальные не могут посетить уже посещенную ссылку. (Я так понимаю нужен сокет, чтобы можно было присылать всем остальным посещённые ссылки, чтобы они у них зачёркивались!)

laimas,
Цитата:

Сообщение от laimas
И просьба была рассказать о логике работы сайта

уже три часа назад было, удивительно!

Chesterfield25 03.07.2019 13:56

На страницу по адресу site.ru/sulki пришли два человека, скажем ты и я. Оба мы увидели список из 10 кликабельных ссылок. Я нажал по первой она открылась в новой вкладке, у тебя и у меня она пропала со страницы. Ты нажал по второй ссылке она открылась в новой вкладке, у тебя и у меня она пропала со страницы. Следующий кто зайдёт на страницу увидет уже 8 из 10 ссылок, ну вообщем и так далее. Если кликабельными ссылки из текстового фала нельзя вытащить то с помощью базы данных

Malleys 03.07.2019 13:59

Chesterfield25, оно именно так и работает (только у меня не пропала со страницы поскольку для этого нужен сокет) например я нажал xmonitoring ru и оно уже не перешло!

Chesterfield25 03.07.2019 14:00

Хух. Именно то что нужно. Только осталось сделать обновление страницы без перезагрузки. Спасибо!

Chesterfield25 03.07.2019 14:01

Что такое сокет?

Malleys 03.07.2019 14:01

Цитата:

Сообщение от Chesterfield25
Только осталось сделать обновление страницы без перезагрузки.

Бред какой-то! значит вам и не нужно обновление страницы! Вам нужно только удалить ссылку из списка!

Я так понимаю, для этого нужен сокет, чтобы можно было присылать всем остальным посещённые ссылки, чтобы они у них зачёркивались или удалялись!

Chesterfield25 03.07.2019 14:10

В мозиле перешел по первой ссылке https://ibb.co/jk2j7Z9
Вернулся в хром без перезагрузки страницы нажал по той же ссылке https://ibb.co/cr1Rpd0

Malleys 03.07.2019 14:18

Цитата:

Сообщение от Chesterfield25
Вернулся в хром без перезагрузки страницы нажал по той же ссылке

Перехода не произошло ведь? Я просто не знаю как на PHP соорудить сокет (d примерах показывают while(true){ но это же плохо! или как?), чтобы можно было в реальном времени у всех изменять ссылки! А laimas гуру PHP что-то молчит!

Chesterfield25 03.07.2019 14:23

Знаю что на jquery есть такая возможность

laimas 03.07.2019 14:41

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

Malleys 03.07.2019 14:47

laimas, Что? PHP функции $handle = fopen("links.json") и fclose($handle) этого не делают? А зачем тогда этот fclose($handle) нужен?

laimas 03.07.2019 14:52

Читайте документацию.

Chesterfield25 04.07.2019 14:40

Добрый день. я очень благодарен вам за помощь но подскажите возможно ли в том скрипте кроме ссылок вывести текст, над каждой ссылкой?

Malleys 04.07.2019 15:25

Цитата:

Сообщение от Chesterfield25
возможно ли в том скрипте кроме ссылок вывести текст, над каждой ссылкой?

Что за текст, откуда он берётся?

UPD
Вообще вы можете менять разметку генерируемой ссылки в app.js. Вот для примера добавил заголовок над каждой ссылкой.

Пример: https://bulkygoldkey--malleys.repl.co/
Код: https://repl.it/@Malleys/BulkyGoldKey

Chesterfield25 04.07.2019 19:16

Мне нужно добавить заголовок как в примере, описание и bb код подписи для форума:
[url='http://xmonitoring.ru']мониторинг инвест проектов[/url]
Именно код который можно скопировать, в принципе как и текст.

Chesterfield25 05.07.2019 00:15

Текст я сам пишу, для каждой ссылки своё название описание и код

Chesterfield25 05.07.2019 13:00

Единственный простой вариант решения который для меня доступен это изначально направлять не на внешний ресурс а на внутреннею страницу на которой уже будет текст, описание и ссылка на внешний ресурс

Chesterfield25 06.07.2019 22:13

Добрый вечер. Подскажите, можно как то в предоставленном примере, запретить нажатие более чем по одной ссылке раз в 24 часа ну или другое время?


Часовой пояс GMT +3, время: 12:11.