[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переход на mysqli
maximka787
Мужики, посмотрите пожалуйста код.

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();


_____________
..Работает - не трогай!
Игорь_Vasinsky
1) да
2) из мануала http://php.net/manual/ru/security.magicquotes.php
Цитата
Волшебные кавычки (Magic Quotes) - это процесс автоматического экранирования входящих данных PHP-скрипта. Желательно отключать директиву magic quotes и вместо этого экранировать данные в процессе разработки, если это необходимо.

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

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

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maximka787
Игорь_Vasinsky
Тоесть по второму пункту лучше вообще ничего не писать или эту сроку php_flag magic_quotes_gpc off оставить?

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

_____________
..Работает - не трогай!
bestxp
Цитата (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, но решает кучу проблем из тех что у тебя в запросе)))
twin
Какие проблемы у него в запросе???

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

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
maximka787
Вижу, что сильных проблем в моем коде нет, буду переходить значит :)
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

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

_____________
..Работает - не трогай!
Игорь_Vasinsky
хе)

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

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


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


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

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.