Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Безопасно ли открывать схему проверки входных данных сайта?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как и большинство хомячков, афтор путает валидацию данных и форматирование вывода.

    Как правильно отмечено постом выше, эти две вещи никак друг с другом не связаны. Вообще. Разве только тем, что если полагаться на валидацию входящих, то можно налететь на инъекцию второго порядка, точно так же, как в случае с SQL.

    Поэтому валидацию надо оставить как есть, а форматирование производить в обязательном порядке в автоматическом режиме, средствами шаблонизатора. При этом учитывая среду, в которую данные выводятся. Для SQL, HTML, JS и многих других разных вариантов вывода форматирование должно быть РАЗНЫМ
    Ответ написан
    2 комментария
  • Как в Drupal можно организовать автоматическую авторизацию пользователя на сайтe, если у него есть cookie с другого ресурса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перед тем как задавать вопрос, надо сначала попробвать "прописать домен", и посмотреть что получится.
    После этого гуглить про межсайтовую авторизацию.
    Вкратце - без участия того сайта ничего не получится. Можно, к примеру, показать картинку с него, с уникальным параметром. Таким образом браузер отправит свою куку, запрашивая эту картинку.
    Дальше тот сайт должен сделать запрос на этот, передав информацию по авторизации для владельца куки.

    Читать эту инструкцию следует только в том случае, если есть есть четкое понимание разницы между браузером и сервером.
    Ответ написан
    Комментировать
  • Какой использовать сервис для сбора внутренних метрик / статистики приложения

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Поскольку вообще непонятно, что за "статистика" и что за "приложение", то либо Pinba, либо Xdebug
    Ответ написан
    Комментировать
  • Как использовать PDO fetch result?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    PDO - это точно такая же работа "напрямую с базой".
    А вот от чего действительно надо отучаться - это от привычки писать на каждый чих горы бессмысленного, ненужного и вредного кода.
    $sql = "SELECT email, password FROM users WHERE email=? and pssword=?";
    $stmt = getConnection()->prepare($sql);
    $stmt->execute(array($_POST['email'],$_POST['password']));
    $email = $stmt->fetchColumn();

    Это весь код, который нужен. Все остальное лишнее.
    Ответ написан
    Комментировать
  • Как парсить курс валют и записывать в БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    если не трудно, приведите свой пример.

    include 'safemysql.class.php';
    $db = new safeMysql();
    $sql = "INSERT INTO btc_charts_live SET mark = 'btce', date=NOW(), ?u";
    $db->query("INSERT INTO btc_charts_live SET ?u", $btc);

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Что характерно, вся эта истерия с заменой mysql ext на mysqli никак не мешает говнокодить по-старинке, со всеми вытекающими инъекциями.

    И ведь подавляющее большинство пользователей пехапешечки искренне верит, что добавление буковки i к их творениям сразу делает их безопасными
    Ответ написан
  • Как реализовать иерархию директорий на php

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если надо получить именно бесконечное - т.е. целиком - то запрос как раз и будет один.
    А потом в скрипте сортировать.

    А если только ветку - то никак. Список смежности для этого не подходит, надо хранить по-другому. Гуглить Nested Sets и Materialized path
    Ответ написан
    Комментировать
  • Как реализовать авторизацию посредством AJAX и PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Всё-таки, совершенно необъяснима тяга пхп юзеров к написанию километров кода для каждой мизерной операции :)
    Ну ладно, по экрану кода на запрос, потому что так в документации написано. Но аж два запроса к базе-то зачем?
    Я конечно понимаю, что в новой для себя области всё непонятно. Но хоть немного задуматься над своими действиями можно? Есть хоть малейший смысл в выполнении первого запроса?

    Всё что нам нужно - это получить пароль из базы и сравнить его с введенным.
    <?php
    	
    // файл с константами для подключения к бд
    require_once('conn_db.php'); 
    $db = new safemysql($db_config);
        
    if(isset($_POST['login']) && isset($_POST['password']))
    {
        // запрос на получение хэша пароля из таблицы
        $sql = "SELECT pass FROM test_table WHERE login=?s";
        $pass = $db->getOne($sql, $_POST['login']);
    
        // сравнение с введенным юзером паролем
        if ($pass === crypt($_POST['password'], $pass))
        {
            exit('yes');
        }
    }	
    echo 'no';
    Ответ написан
    1 комментарий
  • Почему поле БД увеличивает только 1 раз?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это типичная ошибка похапе программистов, которые пишут код методом копирования, не подключая голову.
    values(field) для них - не команда, выполняющая строго определённую функцию, а священный текст, завещанный предками, кототорый надо употреблять только так и никак иначе, потому что он составляет часть Великой Мантры Он Дупликейт.

    А если дать себе труд подумать, что делает эта функция, то нужное решение тут же придёт в голову, поскольку является частью Мантры Инкремента Значения Поля.
    Ответ написан
    Комментировать
  • Как реализовать отслеживание источника перехода, коим является редирект?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Регистратор имен не занимается редиректами. Регистратор может прописать алиасы в ДНС, чтобы все субдомены указывали на какой-то один IP адрес.

    Если делается редирект, то его делает какой-то веб-сервер. Вот его и надо настраивать, чтобы он добавлял параметр к адресной строке.
    Ответ написан
    2 комментария
  • Каталог с сортировкой: как решить проблему при выводе с сортировкой?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    если данные атрибутов находятся сериализованные в базе в таблице option,

    Взять рельсу, и долго с наслаждением бить по голове того, кто стал хранить данные атрибутов сериализованные в базе в таблице option. Потом добавить по почкам.

    Потом перепроектировать базу.
    Сделать категории в нормальной таблице, приджойнить к запросу и сортировать по ним.
    Ответ написан
    1 комментарий
  • В каких случаях стоит переписывать сайт с нуля?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Критерий прост. Если команда в состоянии написать лучше, чем на WP - переписывать. Если нет - оставить, как есть.
    Что-то мне подсказывает, что в данном случае лучше не надо.
    Ответ написан
    Комментировать
  • Странный require_once: не работает с подключением файлов директорией выше?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    А ОШИБКИ, ОШИБКИ-то где? Здесь сайт для программистов, а не лавочка у подъезда. А посетители (как предполагается) - программисты, а не бабки-гадалки (впрочем, судя по предыдущим ответам, с программистами, всё-таки, напряг). Специально для бабок - краткое введение в программирование: phpfaq.ru/debug#intro

    Если что-то не работает, то выдается ошибка. Ошибку надо прочесть и исправить.
    Любые директивы апача начинаем искать только ПОСЛЕ того, как выяснили причину. Не до, не вместо, а ПОСЛЕ. Это очень простой принцип, его совсем нетрудно выучить
    Ответ написан
  • Где кэшировать данные: в модели или в контроллере?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В общем случае, если говорить о данных, то модель, по-хорошему, должна уметь это делать прозрачно. У неё запросили данные - а откуда она их взяла - не нашего ума дело.
    Ответ написан
    Комментировать
  • Как на PHP составить MySQL SELECT из двух таблиц одновременно с 2-мя массивами в запросе и условием?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    сами таблицы очень похожи, разница только в названии одного из полей

    <font size=+100500>ТАБЛИЦА ДОЛЖНА БЫТЬ ОДНА</font>
    Ответ написан
    Комментировать
  • Выбор метода обучения программированию: колледж или самообразование?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Пока программирование сводится к складыванию одной строчечки к другой, как в конструкторе Лего, оно и будет вызывать только энтузиазм и положительные эмоции. Таких энтузиастов похапе наплодил 100500 человек - очень уж просто складывать.
    Со временем же отсутствие математического аппарата начнет ощущаться, как груз, привязанный к ногам, не позволяя расти выше.

    Хотя, конечно, на похапе можно всю жизнь просидеть, клепая сайты на вордпрессе, безо всякой математики.
    А в вопросах криптографии ли, обработки изображений ли, топологии сети ли - бегать с вопросами на тостер и полагаться на мнение других людей. А в итоге перестать вообще понимать что делаешь - со всеми вытекающими последствиями.
    В общем, говнокодить на вордпрессе можно и без математики.
    Ответ написан
    5 комментариев
  • Имитация не существующего сайта - такое возможно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Детский сад, штаны на лямках. "Давайте ещё под одеяло залезем, чтобы привидения нас не нашли".
    Вместно нормальной безопасности изобретаем "сикретики со стеклышком".

    Нет, нельзя.
    Ответ написан
    1 комментарий
  • Как исправить ошибку "mysql client library is not bundled anymore"?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    mysqli надо собирать так
    --with-mysqli=mysqlnd
    Ответ написан
    Комментировать
  • Почему скрипт не заменяет значение в шаблоне?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это не шаблон, а детский лепет.
    Почему-то все дети поголовно думают, что задача шаблонизатора - это только заменять переменные. О том, что это никогда не будет работать в реальной жизни, ни один из них не задумывается.

    Чтобы оно заработало с минимальными изменениями, надо писать так
    <a href="" class="btn" href=""><?=$download_link?>Download</a>

    а регулярку выкинуть нафиг.

    Или действительно поставить твиг/смарти.
    Но дети, опять же, по какой-то причине боятся шаблонизаторов, как серого волка.
    Ответ написан
    1 комментарий
  • Почему не приходят данные методом POST от банка?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В банке сидит идиот.
    error: java.lang.NullPointerException. - это только НАЧАЛО ошибки.
    Дальше должен идти её текст. В котором написано, какая конкретно проблема произошла при отправке. Это может быть ошибка ДНС, или коннект таймаут, или вообще ошибка, как выше пишут, в самом приложении.

    Я всегда думал, что только беспомощные похапе юзеры воспринимают программные ошибки как "тётя ругается", или "ой, что-то сломалось!" и не в состоянии постигать их смысл. Оказывается, в джаве такие же.
    Если банковский программист не в состоянии даже прочесть сообщение об ошибке, то надо бежать от такого банка как от чумы.
    Страшно подумать, как там остальное работает.
    Ответ написан
    Комментировать