|
|
|
|
|
для: skinny
(26.11.2012 в 17:20)
| | Начиная с версии 4.3 функция mysql_escape_string() является устаревшей, а ее использование - крайне нежелательным http://www.php.net/manual/en/function.mysql-escape-string.php
Это же касается и второй функции. Хотя работать они должны. По крайней мере у меня на РНР версии 5.3.10-1ubuntu3.4 все работает.
Вместо них рекомендуется использовать расширения MySQLi или PDO_MySQL http://www.php.net/manual/en/function.mysql-real-escape-string.php | |
|
|
|
|
|
|
|
для: cheops
(24.11.2012 в 14:21)
| | php 5.4 | |
|
|
|
|
|
|
|
для: skinny
(24.11.2012 в 13:20)
| | Хм... странно, а какая версия PHP используется? Вроде на эти функции пока никто не покушался... | |
|
|
|
|
|
|
|
для: cheops
(21.11.2012 в 21:41)
| | решил поставить посмотреть новую джумлу, обновил php
теперь функция mysql_escape_string() не работает, как оказалось и функция mysql_real_escape_string() тоже не работает, она тупо возвращает пустую строку.
Есть ли какая то функция полностью аналогичная mysql_escape_string()? | |
|
|
|
|
|
|
|
для: skinny
(20.11.2012 в 15:31)
| | Тут никак, более того mysql_escape_string() тут избыточен, так как вы явно приводите $id к числу, следовательно, никаких кавычек в нем не будет, для mysql_escape_string() нет работы. | |
|
|
|
|
|
|
|
для: cheops
(18.11.2012 в 16:26)
| | по первому и третьему понятно
по второму
разработчику или злоумышленнику - какая разница. Меня интересует не этическое а практическое решение
например:
$id = $_GET['id'];
$id = (int)$id;
if($id)
{
$z = 'SELECT * FROM `table` WHERE `id` = '.mysql_escape_string($id).' ';
}
|
как можно тут что-то подсунуть в запрос левое? | |
|
|
|
|
|
|
|
для: skinny
(17.11.2012 в 22:04)
| | 1. PEAR - это библиотека кода, написанная на PHP. Библиотека почти стандартна, т.е. каждый уважающий себя разработчик должен знать что это такое (использовать не обязательно, много корявых реализаций, по крайней мере было раньше). Толкового описания PEAR на русском языке я не встречал, собственно оно не появляется еще и потому, что PEAR не очень популярно, особенно в России. Как-то больше прижились FrameWork-и вроде ZendFramework или Symfony.
2. Кому? Обойти злоумышленнику или разработчику?
3. Это просто неудачная формулировка. Когда вы используете PDO, вы вместо параметров в SQL подставляете знаки вопроса, вместо которых потом подставляются параметры. Подставляются в порядке их перечисления, вместо первого знака вопроса подставляется первый параметр, вместо второго - второй параметр и т.д. Вместо знаков вопроса можно использоваться именнованные параметры
"SELECT * FROM tbl WHERE name = :name AND par = :todo"
|
Потом заполнять SQL-запрос при помощи массива вида array(":name" => $name, ":todo" => $todo). Т.е. тут позиция параметра задана явна, вы можете перемешать элементы в массиве как угодно, например пустить вначале :todo, а потом :name - они будут подставлены верно, так как "позиции параметров заданы явно" за счет использования именования параметров. | |
|
|
|
|
|
|
|
для: cheops
(16.11.2012 в 23:00)
| | 1. Непонятно что такое PEAR’s DB, для чего оно и вообще, где нибуть есть какое нибуть описание на русском. Аглицкий я читаю, но там слишком много технических терминов.
2. Как можно обойти принудительное приведение и mysql_real_escape_string()?
3. Что значит "позиция параметров явно задана". Это пожалуй самый главный вопрос. Я вообще не могу представить что это может значить. Даже приблизительно. | |
|
|
|
|
|
|
|
для: skinny
(16.11.2012 в 13:10)
| | Можно попробовать разъяснить вопросы, дать на них развернутые ответы, но для этого их нужно озвучить. Попробуйте на основании прочитанного, сформулировать их еще раз. Что не понятно в первую очередь? | |
|
|
|
|
|
|
|
для: cheops
(16.11.2012 в 07:41)
| | что то я всё прочитал, но вопросы всё те же и остались
ничего не понял. | |
|
|
|
|