• Авто-заполнение формы?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Есть форма на странице1, которая передает POST методом данные php обработчику на странице2, там он вносит данные в еще одну форму, которая так же передает POST методом данные php обработчику на странице3, и здесь уже формируется конечный результат.

    В помойку такое решение. Временные значения можно писать в localStrorage и отсылать уже финальный результат на конечной странице (при отправке сбрасывая все предыдущие шаги).
    Ответ написан
    4 комментария
  • Фильтрация входящих данных?

    eucalipt
    @eucalipt
    Самоделкин.
    Советы есть. Пиши такие вещи сам, абсолютно точно такого же, что необходимо именно тебе, ты не найдешь. Ты можешь найти похожее, но точно такое же, как в твоей голове ты можешь только сам написать.

    А теперь ближе к делу.
    Во-первых, для передачи данных в БД, используй подготавливаемые запросы MySQLi.
    Кроме того, все данные обрабатывай следующими функциями.
    trim($enteredData); // Удалит все пробелы в начале и в конце стоки
    htmlspecialchars($enteredData); // Сделает невозможный SQL инъекцию.


    SQL инъекция - это когда пользователь вводит какую-то команду из MySQL в строку (например - удалить все строки), а эта строка (если нет защиты от этих инъекций) просто попадает в БД и выполняется, то бишь чистит базу в нашем примере.

    trim не будет удалять вообще все пробелы, можете не волноваться, она удалит только те ненужные символы (такие как пробелы, alt+255 и прочие "невидимые" символы), который находятся в начале и конце стоки.

    Естественно, в эти переменные для начала нужно записать то, что пользователь вводит:
    $enteredData = $_POST['field'];
    // или
    $enteredData = $_GET['field'];


    В зависимости от метода, который Вы используете.

    Эти функции - только самые основные, вы можете добавить и еще нужные Вам в конкретном случае, но, обычно, этого достаточно.
    Ответ написан
    1 комментарий
  • Фильтрация входящих данных?

    banderos120
    @banderos120
    Играю на балалайке
    All in one WP security . Установите этот плагин, он отслеживает изменения файлов на вашем сайте и присылает на почту уведомления. Так вы сможете отследить, если были залиты shell скрипты, или прописан вредоносный код в какие-либо файлы вашего сайта.
    Так же, можете запихнуть в крон эту команду:
    date >> /home/username/shells_find_log.txt; find /home/username/www/ -name "*.php" -type f | xargs grep -l "eval(base64_decode(" >> /home/username/shells_find_log.txt && echo "[END]" >> /home/username/shells_find_log.txt

    , будет искать типовые eval() строки в новых файлах и скидывать их названия в файл shells_find_log.txt.
    Ответ написан
    2 комментария
  • Почему пропал визуальный редактор Wordpress?

    VirmarY
    @VirmarY
    Full-stack web developer
    Попытка обращения к wp-tinymce.php вам выдает код 403. Тут много вариантов поломки. Права на файлы не меняли?
    P.S. Плагин tinyMCE ставить не пробовали?
    Ответ написан
    5 комментариев
  • Как экспортировать данные из csv в Mysql?

    Lerg
    @Lerg
    Defold, Corona, Lua, GameDev
    Года рождения не хватает.
    Ответ написан
  • Экспорт данных из MySQL в XML файл сложной структуры?

    Evervess
    @Evervess
    Если без использования классов для работы с XML, то примерно так:

    $query = mysql_query("SELECT * FROM `$table` SORT BY street, house_number, app_number ");
    
    // Затем в цикле разбираем запрос, и формируем XML
    $xml = '<?xml version="1.0" encoding="utf-8"?>' . PHP_EOL;
    $prev_street = null;
    $prev_house = null;
    $prev_app = null;
    $prev_acc = null;
    
    while ($row = mysql_fetch_array($query)) {
        if ($prev_acc != null && $row['account'] != $prev_acc) {
            $xml .= '</account>' . PHP_EOL;
        }
        if ($prev_app != null && $row['app_number'] != $prev_app) {
            $xml .= '</apartment>' . PHP_EOL;
        }
        if ($prev_house != null && $row['house_number'] != $prev_house) {
            $xml .= '</house>' . PHP_EOL;
        }
        if ($prev_street != null && $row['street'] != $prev_street) {
            $xml .= '</street>' . PHP_EOL;
        }
    
        if ($row['street'] != $prev_street) {
            $xml .= '<street name="' . $row['street'] . '">' . PHP_EOL;
            $prev_street = $row['street'];
        }
    
        if ($row['house_number'] != $prev_house) {
            $xml .= '<house number="' . $row['house_number'] . '">' . PHP_EOL;
            $prev_house = $row['house_number'];
        }
    
        if ($row['app_number'] != $prev_app) {
            $xml .= '<apartment number="' . $row['app_number'] . '">' . PHP_EOL;
            $prev_app = $row['app_number'];
        }
    
        if ($row['account'] != $prev_acc) {
            $xml .= '<account id="' . $row['account'] . '" person="">' . PHP_EOL;
            $prev_acc = $row['account'];
        }
    
        $xml .= '<device id="' . $row['device_id'] . '" value="' . $row['new_meterage'] . '" date="дата" type="1"/>' . PHP_EOL;
    }
    $xml .= '</account>' . PHP_EOL . '</apartment>' . PHP_EOL . '</house>' . PHP_EOL . '</street>';
    
    echo $xml;
    Ответ написан
    1 комментарий
  • Как передать полем формы сразу несколько значений?

    Evervess
    @Evervess
    Не очень понятно, как у одно device_id может быть несколько разных показаний.

    а перебрать полученные значения не сложно:
    foreach($_POST["pokazaniya"] as $key=>$value) {
    //в $value - показания
    }


    Как мне кажется, логичнее было бы форму так рисовать:

    while ($data = mysql_fetch_array($qr_result)) {
        echo '<tr>';
        echo '<td><input type="text" name="devices['.$data['device_id'].'][street]" value="' . $data['street'] . '" maxlength="10" form="myform" disabled></td>';
        echo '<td><input type="text" name="devices['.$data['device_id'].'][house_number]" value="' . $data['house_number'] . '" maxlength="10" form="myform" disabled></td>';
        echo '<td><input type="text" name="devices['.$data['device_id'].'][appartment_number]" value="' . $data['app_number'] . '" maxlength="10" form="myform" disabled></td>';
        echo '<td><input type="text" name="devices['.$data['device_id'].'][device_id]" value="' . $data['device_id'] . '" maxlength="10" form="myform" disabled></td></td>';
        echo '<td><input type="text" name="devices['.$data['device_id'].'][description]" value="' . $data['description'] . '" maxlength="10" form="myform" disabled></td>';
        echo '<td><input type="number" name="devices['.$data['device_id'].'][old_meterage]" value="' . $data['old_meterage'] . '" maxlength="10" form="myform" disabled></td>';
        echo '<td><input type="text" name="devices['.$data['device_id'].'][new_meterage]" maxlength="10" form="myform"></td></tr>';
    }

    в таком случае получите такой массив _POST:
    $_POST = [
        'devices' =>
        [
           '1234567' => //<--ID счётчика
            [
               'street' => '',
                'house_number' => '',
                'appartment_number' => '',
                'device_id' => '',
                'description' => '',
                'old_meterage' => '',
                'new_meterage' => '',
           ]
       ]
    ]


    Перебирать все значения при отправке формы так:
    foreach($_POST['devices'] as $device_id=>$device_data) {
        // В переменной $device_id - айдишник вашего прибора учёта.
        // В переменной $device_data - все поля формы для этого конкретного прибора
    
    }


    P.S.: Код не проверял.

    P.P.S.: Скажи "НЕТ!" транслиту в коде! Используйте английские названия. Если с английским туго multitran поможет.
    Ответ написан
    4 комментария