Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 11.03.2020, 23:08
Интересующийся
Отправить личное сообщение для drmodjo Посмотреть профиль Найти все сообщения от drmodjo
 
Регистрация: 12.12.2014
Сообщений: 26

Благодарю за помощь.
Ответить с цитированием
  #22 (permalink)  
Старый 11.03.2020, 23:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

drmodjo, например, на РНР чтобы узнать "живой/нет" совсем не нужно делать так, как это делаете вы - получаете содержимое, а затем проверяете статус. Наоборот, сначала get_headers(), проверяем статус, и затем, если нужно file_get_contents. Кстати, "собачка" тут совсем не нужна.

А на клиенте то ведь DOM, все иначе, и кто вам может ответить конкретно куда вам что-то вставить, имея только общее представление чего нужно? То есть, описывайте конкретно, конкретный и код будет. Только лишь всего.
Ответить с цитированием
  #23 (permalink)  
Старый 11.03.2020, 23:43
Интересующийся
Отправить личное сообщение для drmodjo Посмотреть профиль Найти все сообщения от drmodjo
 
Регистрация: 12.12.2014
Сообщений: 26

Ладно. Задайте конкретный вопрос и я дам конкретный ответ. Может что и выйдет. Что нужно вам знать?
Ответить с цитированием
  #24 (permalink)  
Старый 11.03.2020, 23:55
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Сообщение от drmodjo Посмотреть сообщение
На сайте А нужен скрипт, который проверит ссылку на сайте В и если ссылка существует, то выдаст указанный заранее текст. В случае если ссылка не существует, то выдаст другой текст красного цвета.
Конкретнее просто некуда.
Если вы управляете сайтом A и не управляете сайтом B то напрямую это сделать невозможно из соображений безопасности.

Вам нужен будет серверный прокси, который запросит ссылку и вернёт ответ - жива или не жива, точно также как это сделано у вас сейчас.

Пример: условно так
// links - массив ссылок, 
// success - колбэк получающий ссылку в случае удачи
// error - колбэк получающий ссылку в случае неудачи
async function tryFetchList(links, success, error) {
  for(let link of links) {
    const result = await fetch('/check-link-api.php?url=' + encodeURIComponent(link.href))
    if(result === 'ok') 
      success(link)
    else
      error(link)
  }
}
// или скопом, смотря как у вас сервер работать будет 
async function tryFetchList(links, success, error) {
  links = Array.prototype.slice.call(links);

  const results = await fetch('/check-links-api.php', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(
      links.map(({href}) => href)
    )
  }).then(res => res.json());

  results.forEach((result, i) => {
    if(result === 'ok') 
      success(links[i])
    else
      error(links[i])
  }
}
__________________
29375, 35
Ответить с цитированием
  #25 (permalink)  
Старый 12.03.2020, 00:00
Интересующийся
Отправить личное сообщение для drmodjo Посмотреть профиль Найти все сообщения от drmodjo
 
Регистрация: 12.12.2014
Сообщений: 26

Тогда может подскажете как поступить? Ибо когда на одной странице много запросов на проверку, то она весьма долго загружается и это проблема. Может как-то можно реализовать это иначе?
<?PHP
$content = @file_get_contents("ССЫЛКА НА РЕСУРС");
if (strpos($http_response_header[0], "200")) {
echo "<h5>ЕСЛИ СУЩЕСТВУЕТ</h5>";
} else {
echo "<font color=red><h5>ЕСЛИ НЕ СУЩЕСТВУЕТ</h5></font>";
}
?>
Ответить с цитированием
  #26 (permalink)  
Старый 12.03.2020, 00:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Замените file_get_contents на get_headers, как посоветовал laimas - уже будет быстрей.

А дальше надо сделать таки отдельным файлом проверку. Я иду спать, так что не сегодня.
М.б. дальше laimas и поможет, ведь теперь ясно что:
а) Есть сервер с php.
б) Ссылки появляются из php и изначально там доступны.
с) Проблема лишь в долгой загрузке.

=)
__________________
29375, 35
Ответить с цитированием
  #27 (permalink)  
Старый 12.03.2020, 00:19
Интересующийся
Отправить личное сообщение для drmodjo Посмотреть профиль Найти все сообщения от drmodjo
 
Регистрация: 12.12.2014
Сообщений: 26

То есть вот так?
<?PHP
$content = @file_get_headers("ССЫЛКА НА РЕСУРС");
if (strpos($http_response_header[0], "200")) {
echo "<h5>ЕСЛИ СУЩЕСТВУЕТ</h5>";
} else {
echo "<font color=red><h5>ЕСЛИ НЕ СУЩЕСТВУЕТ</h5></font>";
}
?>

Все равно долго.
Ответить с цитированием
  #28 (permalink)  
Старый 12.03.2020, 01:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от drmodjo
То есть вот так?
То есть совсем не так. file_get_headers, это получение содержимого, а оно вам нужно?

function isValid($url) {

    if(!filter_var($url, FILTER_VALIDATE_URL)) return false;
    
    $curl = curl_init($url);
    curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10);
    curl_setopt($curl,CURLOPT_HEADER,true);
    curl_setopt($curl,CURLOPT_NOBODY,true);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

    $resp = curl_exec($curl);
    curl_close($curl);

    return $resp ? true : false;
}


echo isValid('https://javascript.ru/forum/jquery/79699-proverka-ssylki-na-aktivnost-3.html') ? 'Yes' : 'No';
Ответить с цитированием
  #29 (permalink)  
Старый 12.03.2020, 01:55
Интересующийся
Отправить личное сообщение для drmodjo Посмотреть профиль Найти все сообщения от drmodjo
 
Регистрация: 12.12.2014
Сообщений: 26

Вставил ваш код на сайт. Заменил ссылку на нужную, живую. И отображается текст Yes. Меняю ссылку на несуществующую, не живую и отображается тоже самое. Что не так делаю?
Ответить с цитированием
  #30 (permalink)  
Старый 12.03.2020, 02:05
Интересующийся
Отправить личное сообщение для drmodjo Посмотреть профиль Найти все сообщения от drmodjo
 
Регистрация: 12.12.2014
Сообщений: 26

Сейчас заметил такую вещь.
Живая ссылка: https://site.ru/public/1024
Если меняю последние символы ссылки, то скрипт не работает.
Если в начале, где site.ru, то меняет на No.
В чем может быть проблема?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклическая проверка ссылки biryukovm AJAX и COMET 3 25.03.2019 11:52
JS и неработающие ссылки Sovka22 Javascript под браузер 1 13.01.2018 15:37
Проверка ссылки на актуальность spinastr Ваши сайты и скрипты 1 08.04.2017 12:16
Внутри разворачивающегося по клику DIVа не работают ссылки JavaScriptNoob Элементы интерфейса 2 17.11.2015 00:01
Проверка на наличии ссылки в поле, и ее обрезание RazZzeR Элементы интерфейса 17 09.08.2012 03:15