Ответы пользователя по тегу PHP
  • Как исправить 503-299 ошибку, при загрузки файла?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Решение ошибки заключается в поиске и исправлении ошибки. Код 503 говорит только о том, что что-то не удалось. Что именно не удалось - вам ни кто здесь не скажет. Смотрите сами, хотя бы в логах HTTP-сервера, по логике вещей - там всё должно быть сообщено...
    Ответ написан
    Комментировать
  • Как сделать цепочку запросов cURL в php, если во второй ссылке должны использоваться данные из первой?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Это называется persistent connection, и curl_multi() только помешает. Просто создаёте подключение $conn = curl_init();, быстренько пользуетесь им $result = curl_exec($conn); сколько влезет, а потом curl_close($conn);, и всё.
    Ответ написан
  • Почему не работает OR в условии?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    С двумя этими OR у вас всегда будет выполняться код $query = "404";.
    Потому что сработает или одно неравенство (когда $query==403), или другое неравенство (когда $query==404), или оба неравенства (когда $query==401).

    P.S. Только непонятно, а что именно не работает-то? Код без ошибок, рабочий, в чём проблема-то?
    Ответ написан
  • Нужна ли очистка, если есть валидация?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    В принципе - лишний, потому что что он будет, что он не будет, в любом случае FILTER_VALIDATE_EMAIL проверит строку на валидность.
    Если строка валидна (а значит там нет символов, вычищаемых через FILTER_SANITIZE_EMAIL) - работа продолжится. Если строка не валидна - будет ошибка.
    Ответ написан
    1 комментарий
  • Как создать ф-цию запроса в БД?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Возможно несколько вариантов. Можно сделать несколько запросов, и в зависимости от входных аргументов выбирать один из них. Это наиболее правильный вариант.

    Можно, но способ плох, модифицировать запрос в сторону универсальности. Например:
    ... WHERE (B.Country=:country OR :country='') AND ...
    .

    Или совсем "грязный" вариант, менять операцию в зависимости от аргумента:
    ... WHERE B.Country ".(!empty($country) ? "=" : "<>").":country AND ...
    Ответ написан
    Комментировать
  • Как сделать запрос PHP на добавление массива в MySQL?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Потому что массивы $_POST['tovar'] и $_POST['many'] существуют (они передаются из формы), а вот массив $_POST['tovar']['many'] не существует, совсем.

    Должно быть:
    $link = mysqli_connect($db_host, $db_user, $db_password, $db_database) or die("Ошибка:" . mysqli_error($link));
    
    foreach ($_POST['tovar'] as $i => $tovar) {
      if (!empty($tovar) AND !empty($_POST['many'][$i])) {
        $many = $_POST['many'][$i];
        mysqli_query($link,"INSERT INTO tovar(products_id,tovar,many)
                VALUES(
                                '".mysqli_real_escape_string($link, $id)."',
                  '".mysqli_real_escape_string($link, $tovar)."',
                  '".mysqli_real_escape_string($link, $many)."'
                )") or die("Ошибка: ".mysqli_error($link));
      } else {
        $_SESSION['answer'] = "Ошибка";
      }
    }


    И ещё, $id появляется из ниоткуда, да?
    Ответ написан
  • Почему при парсинге слетает кодировка буквы 'Р'?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Вы не дали ссылку на исходную страницу, не привели PHP-шный код разбора данных из текста страницы. Привели только скрипт запуска curl() для загрузки страницы, который к самой проблеме никак... А откуда появилось вот это 7 => string "..." и т.д.? Где этот PHP-код? Не, ну... Ну... Ну это как "у меня авто не едет, а нём все окна помыты и все фары/фонари тряпкой протёрты, помогите-люди-добрые", ей-богу!

    А по поводу порчи русской Р (HEX-код которой 0x04 0x20) - известная проблема. В preg_match/preg_replace надо использовать модификатор u: preg_match("/\S+/su", $str);
    Ответ написан
    Комментировать
  • Почему in_array() не работает в цикле?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    if ($key = array_search("976654", $session['data'])) {
      $result['id'] = $key;
    }


    Но при этом у вас $result не возвращается из функции через return $result;, и не является глобальной переменной, определённой вне функции check(). А значит вне функции check() вы его изменение и не увидите...
    Ответ написан
    2 комментария
  • Превышения объема памяти php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    В ошибке говорится, что скрипты PHP уже загребли для работы 128 мегабайт (число 134217728, делённое на 1024 - получатся килобайты, и ещё раз делённое на 1024 - будут мегабайты) оперативной памяти. А в php.ini (а может в каком-то другом месте) стоит лимит оперативной памяти (и 128Mb - это значение по умолчанию) на один PHP-процесс в виде строки: memory_limit=128M.
    Вот PHP и пишет "лимит памяти превышен, прекращаю работу".
    Или повышайте лимит, или ищите причину расхода памяти в скриптах.

    P.S. Кстати, большие массивы ненужных данных можно вычищать из памяти командой unset($arr);, где $arr - имя массива с ненужными данными.
    Ответ написан
    Комментировать
  • Как получить chat_id для поиска по базе?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Удостоверьтесь, что в $result["message"]["chat"]["id"] вообще хоть что-то есть. А потом - что это число chat_id, конечно.
    Ответ написан
  • Не работает регистрация, в чем может быть причина?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Копать в сторону ini_set('display_errors', 0); error_reporting(E_ALL); и последующего разгребания ошибок в error.log HTTP-сервера (куда, как правило, складываются ошибки PHP, но бывают варианты...).

    P.S. Потому что и MySQL бывает глючит, и HTTP-сервер повисает, и под нагрузкой оперативная память кончается.
    Ответ написан
    Комментировать
  • Взламывают, как защитить сайт?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну тогда хотя-бы так:
    function rights($rights){
    global $http, $user;
    if(!isset($user['rights']) OR empty($rights) OR $user['rights'] < $rights) {
    header('Location: '.$http.$_SERVER['SERVER_NAME']); exit;
    }
    }
    
    $user_id = isset($_COOKIE['uid']) ? fl($_COOKIE['uid']) : '';
    $password = isset($_COOKIE['password']) ? fl($_COOKIE['password']) : '';
    
    if(!empty($user_id) && !empty($password)) {
    $user = $base->query('SELECT * FROM `users` WHERE `id` = "'.mysql_real_escape_string($user_id).'" AND `password` = "'.mysql_real_escape_string($password).'"')->fetch_assoc();
    } else {$user = false;}


    P.S. Но явно дыра где-то в другом месте.
    Ответ написан
    Комментировать
  • Почему 2 http запроса к PHP выполняются по очереди, а не одновременно?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Действительно, однозначная поочерёдность.
    Но если сделать URL уникальным (через index.php?_=random()) - поочерёдности уже нет.
    Ответ написан
  • Почему не работает правильно регулярное выражение?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Исключаем O, o и 0 из списка разрешенных символов - получается вот:
    \b^[135][a-np-zA-NP-Z1-9]{3,10}\b
    Ответ написан
  • Как привести в порядок лог?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Код:
    foreach($arr as $key => $value) {
      $txt .= "<b>".$key."</b> ".$value."%0A";
    };

    замените на:
    foreach(explode(" ", $cookie) as $value) {
      $txt .= "document.cookie = \"{$value}\";\n";
    }
    $txt = urlencode($txt);
    Ответ написан
    3 комментария
  • Как через php запустить js скрипт или изменить стиль?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Вы пишите внутрь тега <script>...</script> какой-то JS скрипт, и он после загрузки страницы будет выполнен.
    Напишите туда <script>alert(1234);</script> - и после загрузки страницы на экране выскочит окошко с текстом "1234" и кнопочкой "OK".
    Что напишите - то и выполнится, всё в ваших руках...

    А вот то, что вы хотите увидеть в результате выполнения скрипта, вместо активации этого выбивает аллерт вместе с этой надписью.... Блин, вообще непонятно, чего вы от скрипта хотите.
    Ответ написан
    2 комментария
  • Как разделить сессии на разных вкладках браузера(альтернативы сессиям)?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Каждой вкладке присвоить свой уникальный $TAB=uniqid(), и при каждом переходе/загрузке страницы/сабмите формы использовать его во всех URL (site.org/index.php?TAB=$TAB) и во всех формах (<input type=hidden name=TAB value='$TAB'>). Так и дифференцировать.
    Ответ написан
    Комментировать
  • Как разбить полученные данные скриптом php на соответсвующие массивы для insert в mysql?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    После кода:
    $json_data = json_decode(iconv("CP1251", "UTF8", $json));

    получится массив данных в $json_data:
    Array
    (
        [data] => Array
            (
                [0] => Array
                    (
                        [sku] => 100008
                        [name] => Тетрадь ЗЕЛЁНАЯ обложка 12 листов "Архбум", офсет, клетка с полями, AZ02
                        [category_list] => Array
                            (
                                [0] => 26551
                                [1] => 216228
                                [2] => 216560
                            )
    
                        [manufacturer] => Россия
                        [vendor_code] => AZ02
                        [barcode] => 4607106500012
                        [brand] => АРХБУМ
                        [description] => Школьная тетрадь с классической зеленой обложкой формата А5.
                        [description_ext] => 
                        [weight] => 0.035
                        [volume] => 0.0001
                        [characteristic_list] => Array
                            (
                                [0] => Линовка блока: клетка
                                [1] => Количество листов: 12
                                [2] => Обложка: "зеленая"
                                [3] => Формат: А5
                                [4] => Наличие полей: да
                                [5] => Тип скрепления: скрепка
                                [6] => Внутренний блок: офсет
                                [7] => Плотность внутреннего блока: 60 г/м2
                                [8] => Однотонный дизайн обложки: да
                                [9] => Количество дизайнов в упаковке: 1
                                [10] => Длина: 205 мм
                                [11] => Ширина: 165 мм
                            )
    
                        [facet_list] => Array
                            (
                                [0] => Array
                                    (
                                        [name] => Количество листов
                                        [value] => 12
                                    )
    ...........

    Разумеется исходную кодировку (строка "CP1251" в iconv()) подкорректируйте в соответствии со своей кодировкой данных. Если не перекодироовать русский текст в UTF-8 - то json_decode() не справится с этими данными.
    Ответ написан
    1 комментарий
  • Почему разные данные?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ваш SOCK5 прокси вообще не принимает подключение. Разбирайтесь почему.
    Или адрес proxy-сервера неправильный, или порт, на котором он должен отвечать
    Или он вообще не существует? Ищите...
    Ответ написан
  • Как добавить номер строки при выводе информации?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну сделайте так:
    if (isset($iskomoe[0])){
        echo htmlspecialchars($doubles[str_replace($_POST['search'], "", $source_data[$i])]." => ".$i." ".str_replace($_POST['search'], "", $source_data[$iskomoe[0]])) . "<br>";
    }


    P.S. Но в целом - код переписывать надо, много нелогичных и неоптимальных мест.
    Ответ написан
    4 комментария