Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: два вопроса по мускулю

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
NebsteR
Отправлено: 23 Февраля, 2009 - 15:02:18
Post Id


Гость


Покинул форум
Сообщений всего: 75
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




ку всем)

1. как узнать сколько строк в таблице используя только мускуль сервер?

зы: у меня щас это определяется
$q = mysql_query("SELECT * FROM stat_common", $DB1);
$x = mysql_num_rows($q);

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

и 2. как средствами пхп организовать фильтрацию ввода? т.е. пхп скрипт получает данные методом POST, которые потом идут к базе данных, но что мешает вставить в поля ввода ", ', ` и т.п., тем самым выполнив мускуль инъекцию? надо сделать так, чтобы если такие символы будут присутствовать в передаваемой информации или их просто вырезать или редиректить юзера на страницу ошибки...

Заранее спс Улыбка

(Отредактировано автором: 23 Февраля, 2009 - 15:02:52)

 
 Top
Roler
Отправлено: 23 Февраля, 2009 - 15:20:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. $count = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS count FROM table"));
  2. // А потом
  3. echo $count['count'];
  4.  
 
 Top
Бублик
Отправлено: 23 Февраля, 2009 - 15:20:17
Post Id


Частый гость


Покинул форум
Сообщений всего: 130
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)

[+]


1.
Цитата:
$count = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS count FROM table"));
// А потом
echo $count['count'];
Зачем, дарагой, так мудрить?
PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query("SELECT COUNT(*) AS count FROM table");
  2. // А потом
  3. echo mysql_result($sql,0);

2. Не надо ниче вырезать. mysql_real_escape_string() вам в помощь!

(Отредактировано автором: 23 Февраля, 2009 - 15:22:41)

 
 Top
Вездеход
Отправлено: 23 Февраля, 2009 - 15:23:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




выполните такой запрос:
select count(*) as 'count' from stat_common

в результате получите цифру, равную количеству строк в базе.
запрос посчитает все строки в таблице. если хотите указать условия - то так -
select count(*) as 'count' from stat_common where (условия)
(Добавление)
ого. я в очереди аж оказался )))


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
NebsteR
Отправлено: 23 Февраля, 2009 - 15:30:03
Post Id


Гость


Покинул форум
Сообщений всего: 75
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




спс всем, щас буду пробовать)
(Добавление)
эээ... по поводу первого все ясно, а вот по поводу фильтрации не совсем...
http://www.php.su/functions/?mys...al-escape-string

CODE (text):
скопировать код в буфер обмена
  1. Пример 1. Пример использования mysql_real_escape_string()
  2. <?php
  3. $item = "Zak's and Derick's Laptop";
  4. $escaped_item = mysql_real_escape_string($item);
  5. printf ("Escaped string: %s\n", $escaped_item);
  6. ?>
  7.  
  8. Вышеописанный пример выдаст следующий результат:
  9.  
  10. Escaped string: Zak\'s and Derick\'s Laptop


и что это собственно даст? оО
(Добавление)
на выходе получаем только добавленный слеш перед символами и все, как это может помешать мускуль инъекции? Не понял
 
 Top
Бублик
Отправлено: 23 Февраля, 2009 - 16:36:03
Post Id


Частый гость


Покинул форум
Сообщений всего: 130
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)

[+]


Прямо помешает, если код написан правильно. Не забудьте, когда будете выводить сделать со строкой stripslashes() чтобы убрать слэши.
 
 Top
NebsteR
Отправлено: 23 Февраля, 2009 - 16:46:11
Post Id


Гость


Покинул форум
Сообщений всего: 75
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




эээ... типа так?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $item = "Zak's and Derick's Laptop";
  4. $escaped_item = mysql_real_escape_string($item);
  5. x = printf ("Escaped string: %s\n", $escaped_item);
  6. y = echo stripslashes($escaped_item);
  7. ?>
  8.  

и в итоге y добавлять в базу?
(Добавление)
зы: добавлять в базу надо чистые строки, т.к. это используется для доступа к другой программе не php, которая логины и пассы берет из мускуля...
имхо будет лучше всего проверять посимвольно введенные данные и если там есть символы кроме a-zA-Z0-9, не обрабатывать такие данные...

ззы: ввод фильтруется ява скриптом на самой странице ввода, но что помешает выполнить запрос POST скажем с другого сайта?

(Отредактировано автором: 23 Февраля, 2009 - 16:53:19)

 
 Top
Бублик
Отправлено: 23 Февраля, 2009 - 17:01:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 130
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)

[+]


Нет, то что вы сделали в y надо делать не когда вводишь данные в базу, а когда пользователю показываешь.

Регуляр для проверки имени пользователя:
PHP:
скопировать код в буфер обмена
  1. if(!preg_match('/^[а-яА-Яa-zA-Z0-9\-_ ]+$/', $username)) {
  2.           echo 'Ах, ты подлый хад :)';
  3.         }
 
 Top
NebsteR
Отправлено: 23 Февраля, 2009 - 17:03:35
Post Id


Гость


Покинул форум
Сообщений всего: 75
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




опа, вот это уже интересней)
(Добавление)
рработает)
 
 Top
Бублик
Отправлено: 24 Февраля, 2009 - 09:16:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 130
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)

[+]


Правда это регуляр под мои нужды, там разрешенно вводить русские, латинские буквы, цифры, пробелы, тире и нижнее тире. Ну короче даю большую свободу пользователям в выборе ника.
 
 Top
NebsteR
Отправлено: 24 Февраля, 2009 - 17:05:27
Post Id


Гость


Покинул форум
Сообщений всего: 75
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




эт я уже исправил)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB