Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860

Как тут про экранировать?

08.11.2014, 20:18. Показов 1014. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите как за экранировать $table, $clause

PHP
1
2
3
4
5
6
7
8
function get_sql_count($table,$clause='') {
  if ($clause!='') 
  $clause="where $clause";
  $q="select count(*) from $table $clause";
  if (!$r=mysql_query($q)) return(0);
  list($n)=mysql_fetch_row($r);
  return($n);
  }
Добавлено через 4 минуты
может выше запроса написать так?

PHP
1
2
 $table = mysql_escape_string($table); // экранирует спец символы  
 $clause= mysql_escape_string($clause); // экранирует спец символы
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2014, 20:18
Ответы с готовыми решениями:

нужно тут экранировать?
$_GET=isset($_GET)?intval($_GET):'first'; $_GET нужно тут экранировать так? ...

Как экранировать переменные?
ребят подскажите как за экранировать переменные? mysql_query("insert into log set...

Как экранировать переменные при записи в файл
Такая проблема, нужно записать в файл переменную, не ее значение а именно переменную fwrite ($f, " $vopros<br /> ...

14
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
08.11.2014, 20:29
wolf, имя таблицы экранировать не нужно, достаточно взять его в обратные кавычки (`table`), а $clause нужно экранировать до сборки его в готовую строку:
PHP
1
$clause = 'Field1 = '.mysql_real_escape_string($value1).' AND Field2 <> '.mysql_real_escape_string($value2);
Экранировать готовое выражение нельзя, оно перестанет быть корректным.
1
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
08.11.2014, 20:35  [ТС]
а что такое? Field1 и для чего? value1
0
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
08.11.2014, 20:37
wolf, это всего лишь пример сборки WHERE-выражения с экранированием входящих в него значений.
0
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
08.11.2014, 20:40  [ТС]
значит я понял правильно) спасибо за помощь)

Добавлено через 1 минуту
получается вместо такого
PHP
1
 $clause="where $clause";
будет так

PHP
1
  if ($clause!='')  $clause = 'where = '.mysql_real_escape_string($clause).'';
0
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
08.11.2014, 20:42
wolf, не так вы все поняли. Нельзя экранировать готовое выражение WHERE. Экранировать нужно в отдельности каждую входящую в него строку еще на этапе присвоения значения переменной $clause. С уже собранным $clause что-то сделать очень трудно, нужно разбирать выражение и экранировать строковые литералы.
0
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
08.11.2014, 21:47  [ТС]
а как тогда за экранировать? $clause

PHP
1
2
3
4
5
6
7
8
9
$x=array();
  $x[]="user='$uid'";
  $dt="$e[y]-$e[m]-$e[d]";
  $x[]="datediff('$dt',dt)>=0";
  if ($e['type']!='*') $x[]="event='$e[type]'";
  if ($e['module']!='') $x[]="module='$e[module]'";
  if ($e['object']!='') $x[]="object='$e[object]'";
  $clause=implode('and',$x);
  $log=get_sql_table('log.id',$clause,"dt desc limit $e[num]");
0
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
09.11.2014, 01:32
PHP
1
2
3
4
5
6
7
8
9
$x=array();
  $x[]="user='".mysql_real_escape_string($uid)."'";
  $dt="$e[y]-$e[m]-$e[d]";
  $x[]="datediff('$dt',dt)>=0";
  if ($e['type']!='*') $x[]="event='".mysql_real_escape_string($e[type])."'";
  if ($e['module']!='') $x[]="module='".mysql_real_escape_string($e[module])."'";
  if ($e['object']!='') $x[]="object='".mysql_real_escape_string($e[object])."'";
  $clause=implode('and',$x);
  $log=get_sql_table('log.id',$clause,"dt desc limit $e[num]");
0
Software Engineer
 Аватар для Custos
332 / 335 / 55
Регистрация: 23.09.2014
Сообщений: 988
09.11.2014, 02:15
Железной линейкой вам по пальцам... Городите велосипед из древних костылей, но никто так и не вспомнил о подготовленных выражениях...
0
09.11.2014, 02:17

Не по теме:

Цитата Сообщение от Custos Посмотреть сообщение
но никто так и не вспомнил о подготовленных выражениях
Почему же? Просто человек повторно задал вопрос, а отвечать еще раз - смысла нет.

0
09.11.2014, 02:18

Не по теме:

Custos, всем согласно подготовке. PDO я советовал в соседней ветке, где это пошло на пользу.

0
Software Engineer
 Аватар для Custos
332 / 335 / 55
Регистрация: 23.09.2014
Сообщений: 988
09.11.2014, 02:20
Lazy_Den, автору достаточно было кинуть одну ссылку. К примеру эту:
http://habrahabr.ru/post/137664/
0
09.11.2014, 02:22

Не по теме:

Цитата Сообщение от Custos Посмотреть сообщение
автору достаточно было кинуть одну ссылку
Я более чем уверен, что автор уже не раз слышал наставления по данной теме, но по каким-то своим причинам продолжает их игнорировать. Его право.

0
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
09.11.2014, 12:10  [ТС]
ребят да я слышал, про PDO и mysqli, ну сами посудите вы бы переводили всю cms на другую бд? вот скажите стоит ли проделывать лишнюю работу? если можно просто все заэкранировать

Добавлено через 1 минуту
тем более я читал очень много про PDO и mysqli, из вывода скажу что даже mysqli быстрее, а Pdo медленее, ну у pdo тоже есть свой плюс её можно писать под разные базы даннх

Добавлено через 3 минуты
тем более на mysql и mysqli большой разницы перехода нет, во первых я оч много читал про mysqli и многие жалются что после перехода нихрена не работает, а второе переход будет почти одинаковый что на mysql что на mysqli, и там и там почти одинаковая экранизация, только на mysqli ещё используются обращения виде $mysqli->query
0
09.11.2014, 12:13

Не по теме:

Цитата Сообщение от wolf Посмотреть сообщение
вы бы переводили всю cms на другую бд
На другую БД? Если бы это требовалось, то вы бы даже не услышали о MySQLi и PDO )) Лично я не буду вас даже пытаться уговаривать. В конце концов, чем больше разработчиков, которые живут вчерашним днём, тем дороже ценится моя работа.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2014, 12:13
Помогаю со студенческими работами здесь

Как удалить лишние пробелы, переносы и экранировать символы в строке?
на вход приходит строка. нужно в любой приходящей строке удалять переносы на следующую строку, пробелы, где их больше одного заменять...

GetEnvironmentVariable (' тут про папку `Мои документы` ') - как такое добыть?
Нет переменной окружения соответствующей?

Тут по теме выше про "Тест" написал функцию и вот хочу понять как МОДЕРНИЗИРОВАТЬ её, обернуть в @декоратор?
Вот он # coding: utf8 __author__ = 'yesok' def m(): print(&quot;End!&quot;) def main():

Тут не большая про-бле-ма в коде)
Крч вот такой код: Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub...

кто может обьяснить про что тут говорится
С помощью этого оператора &amp; можно также выделять и устанавливать значения от- дельных битов. Представьте себе, что в написанной вами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru