Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Переход на mysqli, нужен совет
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 4 месяца, 2 дня
Карма: 1




Мужики, посмотрите пожалуйста код.

1) Верно ли я сделал фильтрацию входных данных (защиту от инъекций). Нужно ли сюда что-то дописать?

2) Нужно ли на сервере выставлять в это же время php_flag magic_quotes_gpc off ?

3) Если у меня простейший AJAX, нужно ли мне писать весь код заново, с создания класса, или класс как то уже создан?

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

$mysqli->set_charset("utf8");

$url = $mysqli->real_escape_string($url); //экранируем кавычки в строке
//$id = intval($id); //фильтруем только цифры


$result = $mysqli->query("SELECT * FROM `page` WHERE `url` = '".$url."' LIMIT 1");

if($result->num_rows > 0)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
}

print_r($row);

$result->free();

$mysqli->close();


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


Цитата
Волшебные кавычки (Magic Quotes) - это процесс автоматического экранирования входящих данных PHP-скрипта. Желательно отключать директиву magic quotes и вместо этого экранировать данные в процессе разработки, если это необходимо.

что ты и сделал в пп1
3) mysqli уже имеет ооп стиль из коробки.

а писать класс обёртку - или нет - решать тебе.

глfвно urldecode() не забудь если GET


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 4 месяца, 2 дня
Карма: 1




Игорь_Vasinsky
Тоесть по второму пункту лучше вообще ничего не писать или эту сроку php_flag magic_quotes_gpc off оставить?

3. На счет третьего пункта, я тоже имел ввиду, если я делаю AJAX файла, то мне просто взять и повторить ПОЛНОСТЬЮ от начала и доконца код который я написал выше, или объект БД уже создан? Я прост не очень вник в ооп до сих пор)))


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 22 дня
Карма: 111




Цитата (maximka787 @ 15.06.2016 - 14:39)


$result = $mysqli->query("SELECT * FROM `page` WHERE `url` = '".$url."' LIMIT 1");

вместо этого лучше посмотреть в сторону этого http://php.net/manual/ru/mysqli.prepare.php

тоже часть mysqli, но решает кучу проблем из тех что у тебя в запросе)))


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 17 дней


Какие проблемы у него в запросе???

Подготовленные выражения не имеют ничего общего с безопасностью. Особенно в mysqli_


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 4 месяца, 2 дня
Карма: 1




Вижу, что сильных проблем в моем коде нет, буду переходить значит :)
bestxp
Читал про это, вроде удобно задумано, пока что на практике нужно понять намного ли это проще полноценного запроса.

У меня пару вопросов еще есть.

1) При условии, что я буду делать запросы ИМЕННО в ТАКОЙ форме как написал выше, следует ли писать этот параметр php_flag magic_quotes_gpc off в htaccess или лучше вообще стереть эту строку?

2) Не помню, по какому точно учебнику учил PHP, по моему по тому, что на этом форуме, как раз с учасием twin-а)) и там было сказано, что real_escape_string лучше писать сразу в самом запросе.
то есть из вида
$url = $mysqli->real_escape_string($url); 
$result = $mysqli->query("SELECT * FROM `page` WHERE `url` = '".$url."' LIMIT 1");

сделать
$result = $mysqli->query("SELECT * FROM `page` WHERE `url` = '".$mysqli->real_escape_string($url)."' LIMIT 1");

//пример был в процедурном и mysql

Насколько я понимаю разницы нет вообще! .. или есть?))


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 13 дней


хе)

....
public function escape($data){
return $this->mysqli->real_escape_string($data);
}

у меня вообще в базовом классе обёртка, я использую


$data = $Model->escape($data);


Цитата
Насколько я понимаю разницы нет вообще!

тока визуально.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса