Встроенные функции проверки Get и Post

Собственно, сабж. Никак не могу нагуглить, может кто-то знает функции вордпресса, с помощью которых можно было бы обезопасить себя при записи данных, переданных с помощью Get и Post в базу данных.

Не нужны никакие специальные функции, достаточно а)понимания процесса и б) стандартной функции mysql_real_escape_string()

Под понимаем процесса имеется в виду опыт mysql-иньекций или просто знание того что могут возникнуть проблемы со всякими скобками и символами, не соответствующими типу поля? 🙂

Что должен предпринять человек, который еще не выучил наизусть библию по MySQL, но пытается писать всякие простые запросы и хочет предотвратить возможность взлома/поломки? ))

Ну, не обязательно инъекции. Самый обычный апостроф в текстовом поле может неожиданно "порадовать", если не ескейпить строку, вставляемую в БД. Очень, кстати, распространённые грабли – редко кто проверяет форму чем-то, отличным от "test" или "праверко" 😉

Человеку достаточно запомнить пару простых правил:
1. Если значение поля заведомо целочисленное, то intval() лишним не будет.
2. Лучше закавычить (заескейпить) числовое значение, чем прохлопать гадость в строковом.
3. Помнить, что пустое значение – тоже значение.

Спасибо! буду "переводить" для себе и искать инфу отталкиваясь от ваших данных! 🙂

Вот кстати нашел такое http://codex.wordpress.org/Data_Validation
По ходу хочется спросить, не совсемв тему, может кто знает как при записи данных из формы в базу вордперсса пеерводить их в юникод? (таблица в правильной кодировке, но при запросе типа

$rows_affected = $wpdb->insert( $table_name, array( 'petid' => '$post->ID', 'time' => current_time('mysql'), 'name' => '$name', 'about' => '$job', 'fromwhere' => '$from', 'subscribe' => '$subscr', 'verif' => 'no', 'email' => '$email' ));

то что было киррилицей стает знаками вопроса…)

Если всё в UTF-8, то ничего никуда переводить не нужно. Если вопросики, то скорее всего, таблица в latin1.

Да, точно, недосмотрел. А как же тогда заставить плагин создавать таблицы в нудной кодировке?
(Использую конструкцию типа

function pet_install() {
   global $wpdb;
   global $pet_db_version;
   // global $table_name;

   $table_name = $wpdb->prefix . "petsuscrbrs";
   
   if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
      
   $sql = "CREATE TABLE " . $table_name . " (
          id mediumint(9) NOT NULL AUTO_INCREMENT,
          petid mediumint(9) NOT NULL,
      time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
      name tinytext NOT NULL,
      about text NOT NULL,
          fromwhere text NOT NULL,
          subscribe ENUM('yes', 'no') DEFAULT 'no' NOT NULL,
          verif ENUM('yes', 'no') DEFAULT 'no' NOT NULL,
      email VARCHAR(55) DEFAULT '' NOT NULL,
          UNIQUE KEY id (id)
    );";

   require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
   dbDelta($sql);
   
   add_option("pet_db_version", $pet_db_version);

   }
}

)

Также пользуясь моментом, спрошу, чтобы не открывать новую ветку на пустяковую тему, как правильно создавать в вп глобальные переменные, чтобы. скажем не указывать каждый раз путь к файлу, а один раз назначить его и потом указывать как переменную в разных функциях плагина. Спасибо и извините за разброд и шатания )))

CREATE TABLE IF NOT EXISTS `test` (

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

global $file;
везде, где нужен доступ к этой переменной.

Или
define(‘FILE’, ‘…..’);
и можно использовать константу FILE – она всяко глобальная.

Или
function get_my_file() {return ‘имя_файла’; }
и вызывать get_my_file() где хочется.

Ю.Б., что вы предпочиатете: коньяк, виски, текила? 🙂

И пиво тоже 😀

Осталось только как-то где-то вас выцепить…

Anonymous
Отправить
Ответ на: