Помощник
|
Не заносятся данные в базу данных |
kani339
|
Сообщение
#1
|
||
|
|
||
|
|||
Den1xxx |
7.4.2015, 17:26;
Ответить: Den1xxx
Сообщение
#2
|
|
как вариант, включить вывод ошибок на экран и увидеть глазами.
|
|
|
Wins |
7.4.2015, 17:42;
Ответить: Wins
Сообщение
#3
|
|
По идеи в кавычках дело
попробуйте так [PHP]$sql="INSERT INTO register(name,email,phone,password) VALUES ('$name','$email','$phone','$password')";[/PHP] |
|
|
Degradator |
7.4.2015, 17:54;
Ответить: Degradator
Сообщение
#4
|
|
|
|
|
kani339
|
Сообщение
#5
|
|
Спасибо огромное, все работает, проблема в кавычках)
|
|
|
Wins |
7.4.2015, 18:41;
Ответить: Wins
Сообщение
#6
|
|
Ну, и я бы посоветовал экранировать входящие данные. Ну если говорить о безопасности то да, а еще проверить регулярками переда записью, и я например еще и при записи удаляю все что мне не нужно хотя это уже считается вроде как лишним. Но я так делаю иногда. с начало preg_match потом preg_replace |
|
|
Den1xxx |
8.4.2015, 8:40;
Ответить: Den1xxx
Сообщение
#7
|
|
Ну если говорить о безопасности то да, а еще проверить регулярками переда записью с начало preg_match потом preg_replace ????? Одного недостаточно? Вот эта функция покрывает почти все мои потребности по экранированию: [PHP]/** * Returns cutted down entry data * * @param string $data * @param int $mode * @return string */ function vf($data,$mode=0) { switch ($mode) { case 1: return preg_replace("/[^a-z0-9A-Z]+/",'',$data); // числа, буквы break; case 2: return preg_replace("/[^a-zA-Z]+/",'',$data); // буквы break; case 3: return preg_replace("/[^0-9]+/",'',$data); // числа break; case 4: return preg_replace("/[^a-z0-9A-Z\-_\.]+/",'',$data); // числа, буквы, тире, прочерк, точка break; case 5: return preg_replace("/[^ [:punct:]".('a-zA-Z')."0-9]+/",'',$data); // соотв. текущему языку алфавит + цифры и знаки препинания break; case 'in': return preg_replace("~\A[^0-9]+|[^0-9,]+|,[^0-9]*(?=,)|[^0-9]+\Z~",'',$data); // числа, запятые для "SELECT * FROM `table` WHERE `key` IN ($data)" break; default: return preg_replace("/[~@\+\?\%\/\;=\*\>\<\"\'\-]+/",'',$data); // блек-лист в крайнем случае. break; } } [/PHP] Иногда я её дописываю:) А для просто текстовых данных mysql_real_escape_string |
|
|
Degradator |
8.4.2015, 10:47;
Ответить: Degradator
Сообщение
#8
|
|
с начало preg_match потом preg_replace Вот эта функция покрывает почти все мои потребности по экранированию: Зачем такие сложности, если можно сделать "insert into my_table(my_value) values ('".addslashes($value)."')" Или если хочется идти в ногу со временем, почему бы не использовать плейсхолдеры "insert into my_table(my_value) values (:value)" или хотя-бы препаред стейтменты "insert into my_table(my_value) values (?)"
|
|
|
Wins |
8.4.2015, 11:37;
Ответить: Wins
Сообщение
#9
|
|
Den1xxx, за функцию спс, пригодится)
Одного недостаточно? ну как бы достаточно, просто это я что то себе накрутил что так надежней) а так конечно preg_replace лишнее его использую где нужно отфильтровать данные без уведомления пользователя и плюс использую mysql_real_escape_string все числовые значения преобразую в intval и еще иногда такой фильтр [PHP]preg_match("/script|http|<|>|<|>|SELECT|UNION|UPDATE|DELETE|DROP|TABLE|ALTER|JOIN|exe|exec|INSERT|tmp/i",$data)[/PHP] Зачем такие сложности, если можно сделать Ну все зависит от конкретного случая не везде регулярки применяю, где то без них обхожусь, а где то нет Ну и мне больше нравится когда в базу пишутся данные без всякого мусора если я ожидаю только буквы, цифры и подчеркивание, то остальные знаки мне не к чему, даже если они не представляют никакой опасности, поэтому я их просто удаляю) если к примеру такую строку передали, то зачем мне этот мусор экранировать? Dsafa13&^%47,"]'+-141@!Fda Я из нее сделаю Dsafa1347141Fda )) |
|
|
Arks |
17.4.2015, 21:24;
Ответить: Arks
Сообщение
#10
|
|
Не стоит решать проблемы которых не существует.
1. addslashes не дает 100% защиты от инъекций, т.к. некоторые вещи которые тот же мускуль трактует как кавычки - по мнению addslashes кавычками не являются. 2. препэйред statements давно поддерживаются всеми клиентами и серверами реляционных БД. Плейсхолдеры и знаки вопросика трактуются одинаково, различия только в оформлении в запросе(плейсхолдеры гораздо нагяднее) 3. заменять в данных одно на другое(считая что Вы делаете благое дело вычищая мусор) - вообще какая-то муть. Вы этим не очищаете данные - а искажаете. В случае если какие-то данные переданы без соблюдения требуемого формата - то должна быть соотв.ошибка а не preg_replace и запись в БД уже непонятно-чего. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Продам базу сайтов Wordpress в 16 миллионов доменов! Свежая сборка. | 19 | Boymaster | 11372 | 20.4.2024, 0:01 автор: Boymaster |
|
Интеграция спортивных данных API. Коэффициенты БК, Live результаты | 15 | yaroslav89 | 6864 | 8.4.2024, 17:17 автор: spoyer_ru |
|
Подкиньте базу ключей тематики wallpaper - Обои для рабочего стола | 0 | uahomka | 865 | 27.2.2024, 0:38 автор: uahomka |
|
ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ [Чарджбек|Рекавери|Возврат] |
9 | Leado | 3911 | 9.2.2024, 16:04 автор: baza0013 |
|
Спарсить данные с сайта | 2 | EvilGomel | 1119 | 17.8.2023, 9:37 автор: bobmen |
Текстовая версия | Сейчас: 24.4.2024, 15:10 |