Ответы пользователя по тегу PHP
  • Как парсить названия ссылок на php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $html = file_get_contents("http://site.org/path/index.php");
    if (preg_match_all("#<a href=\"[^\"]+\">(.+?)</a>#", $html, $regs, PREG_PATTERN_ORDER))
    {
        foreach($regs[1] as $v) echo("{$v}\n");
    }

    Но если вы даже этого не знаете - далеко от этого кода и не уйдёте... Наймите специалиста.
    Ответ написан
    Комментировать
  • Не работает функция file_put_contents() в парсере, что делать?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    А поменяйте-ка путь для картинок на "C:\\Vlad\\OSPanel\\domains\\test\\example\\images\\".
    Есть предположение, что вот с таким путём - сработает.
    Ответ написан
    Комментировать
  • Почему не работает рег. выражение?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Скорее уж тогда так:
    preg_match_all("@(https?:(?://|\\\\/\\\\/)[0-9A-z.\\\\/_-]+?\.(?:jp(?:e?g|e|2)|gif|png|tiff?|bmp|css|js|EOT|TTF|OTF|CFF|AFM|LWFN|FFIL|FON|PFM|PFB|WOFF|SVG|STD|PRO|XSF))@i", $text, $arr);
    Ответ написан
    1 комментарий
  • Как разрешить загрузку страницы только один раз?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну допустим unset() вы сделали, а как же сообщить PHP, что нужно сохранить состояние сессии?
    В чистом PHP для этого есть session_write_close(), а вариант для opencart - ищите сами.
    P.S. Кроме того простой unset() на данные внутри класса может и не сработать, это ведь класс...
    Ответ написан
    1 комментарий
  • Необходимо осуществить выход с профиля именно сессией как мне это осуществить?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Как правило переход "назад" в браузере заставляет браузер показать предыдущую страницу из кеша браузера. В результате страница не перезапрашивается с сервера. А следовательно она остаётся такой-же, без авторизации пользователя. Потом нажимаете "вперёд" в браузере, и опять данные из кеша браузера, и оп-па, пользователь авторизован.

    Но есть нюансы... (c) анекдот.
    Ответ написан
    Комментировать
  • Как сократить GET запрос до нужных параметров?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Вот так:
    <?php
    
    $url = "http://pagination.loc/getData.php?draw=2&columns%5B0%5D%5Bdata%5D=0&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true".
            "&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false".
            "&columns%5B1%5D%5Bdata%5D=1&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true".
            "&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=2&columns%5B2%5D%5Bname%5D=".
            "&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false".
            "&columns%5B3%5D%5Bdata%5D=3&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=".
            "&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=4&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=true&columns%5B4%5D%5Borderable%5D=true".
            "&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=5&columns%5B5%5D%5Bname%5D=".
            "&columns%5B5%5D%5Bsearchable%5D=true&columns%5B5%5D%5Borderable%5D=true&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false".
            "&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=25&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1582036792375";
    $url = urldecode($url);
    parse_str(parse_url($url, PHP_URL_QUERY), $arr);
    $url = str_replace(parse_url($url, PHP_URL_QUERY), http_build_query(array_intersect_key($arr, array_flip(array("_","draw","start","length")))), $url);
    echo($url);
    Ответ написан
  • Почему не работают прокси curl?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Скорее уж тогда так:
    global $proxy;
        $proxyRand = rand(0, count($proxy) - 1);
        $proxySplit = preg_split("~:~", $proxy[$proxyRand]);
        $proxyCheck = curl_init('https://yandex.ru');
        curl_setopt($proxyCheck, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($proxyCheck, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($proxyCheck, CURLOPT_HEADER, false);
        curl_setopt($proxyCheck, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($proxyCheck, CURLOPT_PROXY, $proxySplit[0]);
        curl_setopt($proxyCheck, CURLOPT_PROXYPORT, $proxySplit[1]);
        if (!empty($proxySplit[2]) AND !empty($proxySplit[3])) {
            curl_setopt($proxyCheck, CURLOPT_PROXYUSERPWD, $proxySplit[2].':'.$proxySplit[3]);
        }
        if (!$proxyCheckExec = curl_exec($proxyCheck)) {
            curl_close($proxyCheck);
            print("valid");
            die("Stopped");
            if (!empty($proxySplit[2]) AND !empty($proxySplit[3])) {
                return ['ip_port' => $proxySplit[0].':'.$proxySplit[1], 'user_pass' => $proxySplit[2].":".$proxySplit[3]];
            } else {
                return ['ip_port' => $proxySplit[0].':'.$proxySplit[1]];
            }
        }
        else {
            die(curl_error($proxyCheck));
        }
    Ответ написан
    Комментировать
  • Php Curl — как узнать Content Lenth отправляемого запроса?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Посмотрите функцию curl_getinfo().
    Скорее всего пригодится CURLINFO_HEADER_OUT, ну или CURLINFO_REQUEST_SIZE.
    Ответ написан
  • Почему не получается обработать $_GET запрос?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Проверяйте логи. По умолчанию web-север не пишет в свой лог-файл параметры HTTP-запросов.
    Там указывается только имя запущенного скрипта, но не GET/POST параметры.

    Самое простое: в скрипте первой строкой прописать: error_log(print_r($_GET, true));
    и смотреть в errorlog-е web-сервера сообщение с прилетевшими GET-параметрами.
    Видимо там чего-то вдруг не найдётся...
    Ответ написан
  • Обфускация php проекта?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    3 комментария
  • Почему данные не выводятся?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так можно же показывать сообщения и об остальных ошибках MySQL:
    <?php
    
      // Соединиться с сервером БД
      mysql_connect("localhost", "admin", "pass") or die (mysql_error());
    
      // Выбрать БД
      mysql_select_db("db") or die(mysql_error());
      mysql_query("SET NAMES 'utf8'") or die (mysql_error());
    
      // SQL-запрос
      $strSQL = "SELECT * FROM sell";
    
      // Выполнить запрос (набор данных $rs содержит результат)
      $rs = mysql_query($strSQL) or die (mysql_error ());
    
      // Цикл по recordset $rs
      // Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array
      while($row = mysql_fetch_array($rs)) {
    
    
    
         echo '<div><div class="popular-box"><div class="title">' . $row["name"] . '<span>' . $row["description"] . '</span></div>';
         echo '<img src=">' . $row['img'] . '"';
         echo '<div class="price"' . $row['price'] . '</div>';
         echo '<a href="#modal-order" data-toggle="modal"><span class="pe-7s-cart"></span></a>';
      }
    
      // Закрыть соединение с БД
      mysql_close();
      ?>
    Ответ написан
    Комментировать
  • Почему полученые после SELECT строки, ведут себя так?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Прочитайте документацию. Перечитайте документацию. Поймите написанное в документации. Или вот:
    $arrayQuery = mysqli_fetch_all($query1, MYSQLI_ASSOC);
    var_dump($arrayQuery);
    Ответ написан
    Комментировать
  • Деобфускация php кода. Возможно ли?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Не можете декодировать HEX-строки в файле?
    <?php   file_put_contents(pathinfo($argv[1], PATHINFO_FILENAME).".out", preg_replace_callback("/\\\\x([0-9a-f]{2})/i", function ($a){return pack("H*" , $a[1]);}, file_get_contents($argv[1])));   ?>

    Сохранить в файл dehex.php, и запускать командой php -f dehex.php file_with_hex.txt.
    На что нужно заменить строку file_with_hex.txt - догадаетесь?
    А догадаетесь, что же теперь находится в появившемся файле file_with_hex.out?
    Ответ написан
    Комментировать
  • Функция PHP сохранила значение?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    <?php
    function test(){
        if (empty($GLOBALS['my_special_test_value'])) $GLOBALS['my_special_test_value'] = rand(1, 5);
        return $GLOBALS['my_special_test_value'];
    }
    ?>
    Ответ написан
    1 комментарий
  • Почему unlink не удаляет файл?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Самый тупой прямолинейный затратный по ресурсам способ, для проверки:
    echo(shell_exec("rm -f ".escapeshellcmd(__DIR__."/cookie_".$num["Id"].".txt")." 2>&1"));
    Ответ написан
    Комментировать
  • Не работает авторизация на php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    В браузере в Web Developer Tools посмотри на вкладке Network, что же именно передаётся из формы логина на сервер, и что прилетает с сервера в ответ. Видимо там прилетает совсем _НЕ_ 'ok' в формате JSON.
    Ответ написан
    Комментировать
  • Почему в БД крокозябры?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ой подозреваю, в PHP-скриптах после создания коннекта к базе данных прописано mysql_query("SET NAMES 'CP1251'");.
    Или другой вариант: mysqli_set_charset($db_connect, 'cp1251');.
    Вот ей-ей прописано...
    Ответ написан
  • Переадресация на заданную страницу с формы обратной связи. Как реализовать?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ни на что, потому что это только текст типа "Спасибо большое!" внутри элемента <div> (который изначально скрыт).

    После удачной отправки данных из формы на сервер некий JavaScript, который выполнил отправку, делает этот элемент видимым, соответственно сообщение "появляется" в модальной форме.

    Вам нужно найти и поменять JavaScript, который отправляет, а затем меняет видимость. Прописать туда необходимый переход. Но чуствуется, сделать это вы не сможете, нужен опыт.
    Ответ написан
  • Как выполнить shell_exec, чтобы PHP не дожидался окончания системной команды?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    А попробуйте так:
    <?php
    $output = shell_exec('C:\Windows\system32\cmd.exe /c start Watch.bat '  . htmlspecialchars($_GET["name"]));
    ?>
    Ответ написан
  • Почему при запросе SQL через тело функции PHP получаю ошибку соединения?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Про область видимости переменных уже подсказали, внимательно изучайте.
    А что-бы было на чём осознать написанное в документации, вот ваш код (с простейшей защитой от SQL-иньекций, тоже стоит изучить):
    function sql_query($user_id) {
        global $connection;
        $query = "SELECT * FROM users WHERE id='".mysqli_real_escape_string($connection, $user_id)."'";
        if(!$query_result = mysqli_query($connection, $query)) {
                die('Query failed: '.mysqli_error($connection));
        } else {
                echo ('Complete');
        }
        return $query_result;
    }
    Ответ написан
    Комментировать