Ответы пользователя по тегу PHP
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Непримиримая борьба с прокси продолжается? :-P

    <?php
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
    
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>
    Ответ написан
  • Почему $bd = $row[0] возвращает null, а просто $row[0] возвращает данные?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так у вас то $row[0]['data'], то $row[0]["Date"].
    Для PHP - это две совершенно разные вещи.
    Ответ написан
  • Как сделать чтобы после logina оставаться залогиненым на любых вкладках?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Во-первых, хранить в куках email для подтверждения авторизованности пользователя - глупо. Обычно там хранят какой-нибудь уникальный MD5, который ещё и в базе залогиненных пользователей хранится. А так можно взять известный email известного пользователя, засунуть его в cookie - и вуаля, я авторизован под этим пользователем.

    Во-вторых, cookie можно выставлять с самого сервера во время AJAX-запроса, и это будет правильнее. Нельзя такой функционал делегировать JS, который виден и выполняется на стороне пользователя.

    P.S. В области безопасности игнорирование устоявшихся стандартов и изобретение своих хитрозакрученных "велосипедов" может очень больно спустить на землю.
    Ответ написан
    3 комментария
  • Как после отправки данных запретить возвращение на старую?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Сделайте возврат просто бессмысленным. Например одноразовым ключём. Первое посещение странички - ключ есть, всё делается стандартно, а стирается. Повторное обращение с этим же ключём приводит к ошибке, потому что он уже стёрт.

    Всё остальное - это элегантная попытка прятаться за шваброй.
    Ответ написан
    Комментировать
  • В чем причина, что мой чекер проксей не чекает из исходного списка - socks5 прокси?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Что-то этот марафон смахивает на "Напишите мне скрипт под мои фантизии".
    Вот возьмите и внимательно перечитайте ваше условие: хотя проксей типа "http" в "финале" быть не должно, там должны быть только прокси типов: "http" и "socks5".

    Кроме того, я же уже отвечал в вашем прошлом "задании", что Google хорошо блокирует прокси, в том числе ВСЕ sock4 и sock5, ну вот воюют они с ботами. И тут опять... Думаете задание, повторённое 10000000 раз, на 10000001 повтор всё-таки получит доступ к Google через прокси?!?!
    Ответ написан
    1 комментарий
  • Почему появляется ошибка?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Это же элементарно! У скрипта нет прав доступа к исследуемому файлу. Проверьте через is_readable().
    Ответ написан
  • Как добавить к чекингу HTTPS и HTTP еще и проверку и выдачу SOCKS5 проксей?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Хых!
    <?php
    $proxies = file ("1_ne_check.txt");
    if (empty($proxies))
    {
        exit(1);
    }
    
    $mc = curl_multi_init ();
    for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
    {
        $c [$thread_no] = curl_init ();
        curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
        curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
        curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
        curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
        curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
        curl_multi_add_handle ($mc, $c [$thread_no]);
    }
     
    $proxies_out = array();
    do {
        while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
        if ($execrun != CURLM_OK) break;
        while ($done = curl_multi_info_read ($mc))
        {
            $info = curl_getinfo ($done ['handle']);
            if ($info ['http_code'] == 301) {
                echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
                $proxies_out[trim($proxies[array_search($done['handle'], $c)])] = trim($proxies[array_search($done['handle'], $c)]);
                unset($proxies[array_search ($done['handle'], $c)]);
            }
            curl_multi_remove_handle ($mc, $done ['handle']);
        }
    } while ($running);
    curl_multi_close ($mc);
    
    $mc = curl_multi_init ();
    for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
    {
        $c [$thread_no] = curl_init ();
        curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
        curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
        curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
        curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
        curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
        curl_multi_add_handle ($mc, $c [$thread_no]);
    }
     
    $proxies5_out = array();
    do {
        while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
        if ($execrun != CURLM_OK) break;
        while ($done = curl_multi_info_read ($mc))
        {
            $info = curl_getinfo ($done ['handle']);
            if ($info ['http_code'] == 301) {
                echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
                $proxies5_out[trim($proxies[array_search($done['handle'], $c)])] = trim($proxies[array_search($done['handle'], $c)]);
            }
            curl_multi_remove_handle ($mc, $done ['handle']);
        }
    } while ($running);
    curl_multi_close ($mc);
    
    file_put_contents("2_results.txt", implode("\r\n", $proxies_out)."\r\n\r\n".implode("\r\n", $proxies5_out));
    ?>
    Ответ написан
  • Что не так с кодом?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Мдааааа...
    <?php
    
    session_start();
    require('connect.php');
    $fsmsg = "";
    
    if (!empty($_POST['username']) AND !empty($_POST['password'])) {
        $username = mysqli_real_escape_string($connection, $_POST['username']);
        $password = $_POST['password'];
    
        $query = "SELECT * FROM users WHERE username='{$username}'";
        $result = mysqli_query($connection, $query) or die(mysqli_error($connection));
        $row = mysqli_fetch_assoc($result);
    
        if (isset($row['ban']) AND $row['ban'] == 1){
            $fsmsg = "Пользователь заблокирован";
        }
        else if (isset($row['password']) AND $row['password'] == $password) {
            $_SESSION['username'] = $username;
            $fsmsg = "Вы вошли под пользователем";
            if (isset($row['role']) AND $row['role'] == "admin") {
                $fsmsg = "Вы вошли под админом";
            }
        } else {
            $fsmsg = "Ошибка";
        }
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
              integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
        <link rel="stylesheet" href="style.css">
        <title>Авторизация</title>
    </head>
    <body>
    
    <div class="container">
    <?php
    if (isset($_SESSION['username'])) {
        $username = $_SESSION['username'];
        echo("Hello," . $username . ".<br>\n");
        if(!empty($fsmsg)) echo("<h2>{$fsmsg}</h2><br>\n");
        echo("<a href='logout.php' class='btn btn-lg btn-primary'>Выйти</a>");
    }
    else
    {
    ?>
        <form class="form-signin" method="POST">
            <?php if(!empty($fsmsg)) echo("<h2>{$fsmsg}</h2><br>\n"); ?>
            <h2>Авторизация</h2>
            <input type="text" name="username" class="form-control" placeholder="Username" required>
            <input type="password" name="password" class="form-control" placeholder="Password" required>
            <button class="btn btn-lg btn-primary btn-block" type="submit">Авторизоваться</button>
            <a href="index.php" class="btn btn-lg btn-primary btn-block">Зарегистрироваться</a>
        </form>
    </div>
    <?php
    }
    ?>
    </body>
    </html>


    P.S. Хотя... Учи вас, не учи - всё в пустую, "да это всё локально, да мне только показать, да я потом переучусь, правда-правда"... Ага, ага, верим-верим. Только один оскорбительный вопрос: вы на быдлокодера учитесь?
    Ответ написан
    Комментировать
  • Как не выполнять PHP скрипт, при условии что обрабатываемый TXT файл пустой?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну это вы уже совсеееем.... обленились!
    <?php
    $proxies = file ("gotovo_vse_sellery_bezdybley.txt");
    if (empty($proxies))
    {
        exit(1);
    }
    $proxies_out = array();
    //...........
    Ответ написан
    1 комментарий
  • Как задать кодировку curl?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну добавьте в код
    curl_setopt(CURLOPT_HTTPHEADER, array("Accept-Charset: WINDOWS-1251"));
    , вдруг поможет...
    Ответ написан
    Комментировать
  • Как в PHP (curl_multi ) прокси чекере сделать вывод результатов в txt файл?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Хм, вроде простейшее изменение... Сами не в силах?
    <?php
    $proxies = file ("gotovo_vse_sellery_bezdybley.txt");
    $proxies_out = array();
    $mc = curl_multi_init ();
    for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
    {
    $c [$thread_no] = curl_init ();
    curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
    curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
    curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
    curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
    curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, 0);
    curl_multi_add_handle ($mc, $c [$thread_no]);
    }
     
    do {
    while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
    if ($execrun != CURLM_OK) break;
    while ($done = curl_multi_info_read ($mc))
    {
    $info = curl_getinfo ($done ['handle']);
    if ($info ['http_code'] == 301) {
    echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
    $proxies_out[trim($proxies[array_search($done['handle'], $c)])] = trim($proxies[array_search($done['handle'], $c)]);
    }
    curl_multi_remove_handle ($mc, $done ['handle']);
    }
    } while ($running);
    curl_multi_close ($mc);
    file_put_contents("proxyuniq.txt", implode("\r\n", $proxies_out));
    ?>
    Ответ написан
  • Как составить регулярку?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Внутри квадратных скобок можете прописать свои наборы символов...
    if (preg_match("/^([a-z]+(\([0-9]+\))?)/", $str, $r))
    {
        $str = $r[1];
    }
    Ответ написан
    Комментировать
  • Почему str_ireplace странно работает?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Вам ПРИЙДЁТСЯ использовать регистрозависимый str_replace.
    Смиритесь и думайте над автоматической генерацией массивов $from и $to.
    Ответ написан
  • Ошибка php mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Сделайте так:
    while( ($cat = mysqli_fetch_assoc($result)) )
    {
        if ($articles_count = mysqli_query($conection, "SELECT * FROM `articles` WHERE `categories_id`='".mysqli_real_escape_string($connection, $cat['id'])."'"))
        {
            echo '<li>' . $cat['name'] . ' ('. mysqli_num_rows($articles_count).') </li>';
        }
    }

    После того, как налюбуетесь на работающий без ошибки скрипт, марш-марш вперёд читать про SQL injection и защиту от него (в том числе через mysqli_real_escape_string()).
    Ответ написан
    3 комментария
  • Как настроить зеркало?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Сделать ЗЕРКАЛО сайта с возможностью ЛОГИНА в него? Это шутка такая?

    Это всё равно что "Мне нужно из пластилина сделать копию танка, и что бы он выглядел как танк, весил как танк, ездил как танк, и был с непробиваемой бронёй как танк. Но из пластилина, это обязательное условие!"
    Ответ написан
  • Форматирование строк?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Держите:
    $text = "Мама $мыла раму";
    if (preg_match_all("/(\$[а-яё]+)/iu", $text, $regs, PREG_SET_ORDER))
    {
        foreach ($regs[1] as $s)
        {
            echo($s."\n");
        }
    }
    Ответ написан
    Комментировать
  • Как записать несколько массивов через pdo?

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

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Самый простой вариант - хранить шаблоны в базе данных (SQL), а в URL указывать порядковый номер шаблона (site.ru/show.php?shablon=12345), который должен быть показан пользователю. Тогда понадобится один .PHP файл, который будет показывать все шаблоны.
    Ответ написан
    Комментировать
  • Как не учитывать табуляцию?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Как-то занимательно странно выглядит текст на скриншоте. Иконки прямо в тексте? Серьёзно? Вы что-то не договариваете...

    P.S. Или это UTF-8 с его набором всего и всякого в шрифтах?
    Ответ написан
  • Почему Microsoft Edge не определяет кодировку?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ответ на подвопрос - 1:
    Потому что json_decode() вернул null, а mb_detect_encoding(null) даст ASCII. И ещё, лучше делать json_decode($_COOKIE['suggestion'], true) потому что внутри - ассоциативный массив!
    Ответ написан
    Комментировать