Ответы пользователя по тегу PHP
  • Авторизация на php в чем ошибка?

    @DanKud
    Потому что вы передаете name="nick" а обработать пытаетесь $nick = $_POST['nicknames'];
    Поменяйте значение либо в форме, либо в скрипте.
    Ответ написан
  • Почему не хочется парсить кинопоиск?

    @DanKud
    Во-первых конечно проверьте какой ответ приходит от запроса к странице Кинопоиска на тех итерациях цикла когда получаете ошибку. Там скорей всего капча появляется.

    Во-вторых используйте для подключения страницы не примитивный file_get_contents, а полноценные библиотеки. Тот же дефолтный CURL например. Передавайте полностью HTTP-заголовки, имитируя обычный пользовательский браузер. Учитывая специфику Кинопоиска и то, что его пытаются парсить все кому не лень, такие банальные блокировки юзера как запросы с пустыми заголовками там стоят 100%.

    Ну и уже соответственно если думать дальше и капча все-равно будет появляться, то уже писать скрипт обхода капчи с помощью соответствующих сервисов.

    Плюс один дополнительный момент парсинга с помощью библиотеки Symfony\DomCrawler на будущее. Подгружайте исходники для парсинга не напрямую через вызов класса new Crawler(), а уже после вызова методом ->addHtmlContent(), чтобы избежать проблем с кодировкой:

    $newUrl = new Crawler();
    $newUrl->addHtmlContent(file_get_contents('https://www.kinopoisk.ru/film/' . $value['kinopoisk_id']));
    Ответ написан
  • Получить почту с js json как?

    @DanKud
    $html = file_get_contents('https://xn--80aaaag4cofadj5cxk.su/'); /* парсим код страницы */
    preg_match_all('/<script type="application\/ld\+json">(.*?)<\/script>/is', $html, $result); /* регулярным выражением делаем выборку в массив содержимого тэгов script */
    $json = json_decode($result[1][1], true); /* декодируем json строку второго вхождения в массив, где находится нужный е-мейл */
    $email = $json['email'];
    print_r($email);
    Ответ написан
  • Как узнать процент оставшего времени?

    @DanKud
    $start_time = 1538388000; /* стартовое время отсчтеа 01-10-2018 */
    $time = time(); /* текущее время */
    $end_time = 1540892639; /* время окончания 30-10-2018 */
    
    $diff_time = ($end_time-$start_time); /* разница времени между 01-10-2018 и 30-10-2018 */
    $left_time = ($end_time-$time); /* осталось время до 30-10-2018 */
    
    $left_procent = round((($left_time/$diff_time)*100), 0); /* осталось времени в % между интервалом 01-10-2018 и 30-10-2018 */
    echo $left_procent.'%';

    Конечно если у вас $start_time будет текущее время, то и результат всегда будет 100%
    Ответ написан
    Комментировать
  • Как можно с сайта извлечь текст?

    @DanKud
    $html = file_get_contents('http://randome.pro/sovet.php'); /* получем код страницы в переменную $html */
    preg_match('/<span style="font-size: 40px;">(.*?)<\/span>/is', $html, $result); /* получаем содержимое тэга span в массив $result с помощью регулярного выражения */
    $str = trim($result[1]); /* присваиваем нужный нам текст переменной $str убирая лишние пробелы функцией trim */
    print_r($str); /* выводим наш текст */
    Ответ написан
    Комментировать
  • Нужно простое решение. Как мониторить почту, и в зависимости от сообщения, выполнять какие то действия?

    @DanKud
    Для мониторинга входящей почты через IMAP можно использовать ddeboer/imap. Там же есть встроенный поиск по телу сообщения. Либо можете просто принимать почту и самостоятельно искать нужное вхождение в тексте письма с помощью function.preg_match
    Ответ написан
    Комментировать
  • Как занести в массив полученные данные?

    @DanKud
    function.explode
    $str = "test@mail.ru|15";
    $arr = explode("|", $str)
    $mail = $arr[0];
    $value = $arr[1];
    Ответ написан
    Комментировать
  • В каком часовом поясе будет отосланное время из Москвы в формате UTC в Нью-Йорке?

    @DanKud
    Пояс UTC является стандартом на основе которого и вычисляется отклонение часового пояса текущего пользователя. На PHP вы напрямую не определите временную зону клиента, потому что нужно опрашивать сам клиент. Это можно сделать на JavaScript функцией getTimezoneOffset, которая показывает отклонения в минутах от UTC. Так же можно по геолокации через PHP пробовать определять. Сначала получаем данные пользователя по IP функцией geoip_record_by_name, затем определяем временную зону через geoip_time_zone_by_country_and_region и в итоге с помощью DateTime::getOffset получаем отклонение временной зоны клиента в секундах. Но сразу стоит иметь ввиду, что ни один из способов не даст 100% гарантии достоверности временного пояса клиента.
    Ответ написан
    Комментировать
  • Как работает HTTP_USER_AGENT и какой от него толк?

    @DanKud
    Переменная, как вы и поняли, нужна для определения браузера и операционной системы пользователя. Для каких целей обрабатывать эти данные в дальнейшем каждый уже решает сам. В первую очередь конечно используется для определения мобильного или стационарного устройства, чтобы вывести соответствующую страницу мобильной или основной версии сайта. Так же в разных браузерах есть некоторые нюансы отображения страницы, которые можно пофиксить если определить браузер пользователя. При определенных знаниях можно самому обработать строку и вывести значения, но существует масса пользовательских библиотек, которые без проблем обработают ее за вас и покажут нужную информацию.
    Например https://github.com/ornicar/php-user-agent или https://github.com/zsxsoft/php-useragent
    Ответ написан
    Комментировать
  • Безопасен ли такой метод реализации пользователей?

    @DanKud
    Авторизация пользователей через Steam API де-факто никакого вреда принести не может. Сам функционал API не позволяет делать что-то серьезное с аккаунтом, кроме получения информации о пользователе, которая в целом и так общедоступна. Касаясь того может ли другой пользователь подключаться к чужой сессии, то конечно может, если будет знать cookie. Но откуда он их узнает?
    Ответ написан
    Комментировать
  • Как правильно разобрать строку как массив php?

    @DanKud
    Это данные в JSON-формате. Из этих данных можно получить ассоциативный массив функцией json_decode

    $json = 'ваши данные из примера';
    $arr = json_decode($json, true);
    print_r($arr['numer1']['2017-10-04']['price']); /* выведет 939 */
    Ответ написан
    Комментировать
  • Почему алгоритм выдает ошибку?

    @DanKud
    Во-первых вызвали класс, а потом использовали процедурную функцию, которая понятия не имеет куда записывать данные. Во-вторых одинарные кавычки это неправильный синтаксис для MySQL, нужно использовать двойные. Плюс желательно вызвать переменные именно в среде PHP, а не внутри MySQL синтаксиса.

    ...
    $result = $connection->query('INSERT INTO apps (appleid, password) VALUES ("'.$appleid.'", "'.$password.'")');
    ...
    Ответ написан
    Комментировать