Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Правильно ли так писать?
 
 автор: tavila2009   (11.03.2010 в 23:28)   письмо автору
 
 

Правильно ли так писать? Первая строка кода

if(isset($_POST["city_d"]))
{
$city_d = substr($_POST["city_d"],0,70);
$city_d = mysql_escape_string(stripslashes($city_d));
$city_d = strtolower($city_d);
$city_d = ucwords($city_d);
$city = $city_d;
}

  Ответить  
 
 автор: Рома   (11.03.2010 в 23:36)   письмо автору
 
   для: tavila2009   (11.03.2010 в 23:28)
 

правильно будет после проверки на существование обработать trim'ом, затем проверить еще на не пустое значение, а только потом обрезать.

  Ответить  
 
 автор: Рома   (11.03.2010 в 23:38)   письмо автору
 
   для: tavila2009   (11.03.2010 в 23:28)
 

и в запрос обычно экранируют кавычки, а не наоборот.

  Ответить  
 
 автор: Тень&   (11.03.2010 в 23:46)   письмо автору
 
   для: tavila2009   (11.03.2010 в 23:28)
 

Нет

  Ответить  
 
 автор: Trianon   (12.03.2010 в 01:41)   письмо автору
 
   для: tavila2009   (11.03.2010 в 23:28)
 

$city_d = mysql_escape_string(stripslashes($city_d));
Вот эта строка однозначно показывает, что Вы не понимаете, и не хотите понимать, что делают и зачем предназначены эти две функции.

  Ответить  
 
 автор: tavila2009   (12.03.2010 в 15:16)   письмо автору
 
   для: Trianon   (12.03.2010 в 01:41)
 

Наверно вот так достаточно
$city_d = substr($_POST["city_d"],0,32);
$city_d = mysql_escape_string($city_d);

  Ответить  
 
 автор: tavila2009   (12.03.2010 в 15:28)   письмо автору
 
   для: Trianon   (12.03.2010 в 01:41)
 

Да всё правильно Вы говорите. Вот нашла и прочитала. Аостараюсь запомнить навсгда! Спасибо Вам. Очень полезное замечание!

Удаление HTML - тегов и обратных слешей
Как уже говорилось, вводимый пользователем текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). К примеру, если переменная $name содержит текст с именем пользователя, то обработка этого текста выглядит так:

<?
$name = substr($_POST["name"],0,32);
$name = htmlspecialchars(stripslashes($name));
?>

  Ответить  
 
 автор: root   (12.03.2010 в 15:35)   письмо автору
 
   для: tavila2009   (12.03.2010 в 15:28)
 

> .. Вот нашла и прочитала. Аостараюсь запомнить навсгда! ...

Где Вы это нашли?
Забудьте навсгда!

  Ответить  
 
 автор: tavila2009   (12.03.2010 в 15:36)   письмо автору
 
   для: root   (12.03.2010 в 15:35)
 

Да вы что! Это учебник Кузнецова! http://softtime.ru/bookphp/gl10_1.php#3
А как надо?
Хотя мне один знающий товарищ рекомендовал делать так:

$about = substr($_POST["about"],0,300);
$about = mysql_escape_string($about);

Народ, как правильно?

  Ответить  
 
 автор: root   (12.03.2010 в 15:43)   письмо автору
 
   для: tavila2009   (12.03.2010 в 15:36)
 

Вы сначала выясните, что делает каждая из ниже перечисленных функций:

get_magic_quotes_gpc
stripslashes
mysql_real_escape_string
htmlspecialchars

На этом форуме достаточно тем в которых описывается когда какую применять.

P.S.
а учебник явно устарел..

  Ответить  
 
 автор: root   (12.03.2010 в 15:54)   письмо автору
 
   для: tavila2009   (12.03.2010 в 15:36)
 

Интересно, что в прошлогм году Вы уже создавали похожую тему, где Вам растолковали, когда и что..

  Ответить  
 
 автор: tavila2009   (12.03.2010 в 16:09)   письмо автору
 
   для: root   (12.03.2010 в 15:54)
 

так то оно так. Но в этой теме я спрашивала изначально верно ли так записать
if(isset($_POST["city_d"]))

А из той темы я вынесла для себя что
- из базы htmlspecialchars
- в базу mysql_escape_string(stripslashes())

Оказывается не правильно?

  Ответить  
 
 автор: root   (12.03.2010 в 16:14)   письмо автору
 
   для: tavila2009   (12.03.2010 в 16:09)
 

>Оказывается не правильно?

Правильно, только stripslashes при условии get_magic_quotes_gpc.

if(isset($_POST["city_d"])) верно, если Вы согласны смириться с тем что $_POST["city_d"] может не быть.

  Ответить  
 
 автор: tavila2009   (12.03.2010 в 16:20)   письмо автору
 
   для: root   (12.03.2010 в 16:14)
 

Трианон однако по этому поводу имеет такое мнение:

Trianon (12.03.2010 в 01:41)
$city_d = mysql_escape_string(stripslashes($city_d));
Вот эта строка однозначно показывает, что Вы не понимаете, и не хотите понимать, что делают и зачем предназначены эти две функции.

  Ответить  
 
 автор: root   (12.03.2010 в 16:29)   письмо автору
 
   для: tavila2009   (12.03.2010 в 16:20)
 

значит почитайте еще раз Вашу прошлогоднюю тему, в частности то, что писал Вам Trianon.

UPD.

Первым делом, следует проверить включены ли магические кавычки (get_magic_quotes_gpc), и если да, убрать проставленные слеши (stripslashes).
Приблизительно так:

function rec_stripslashes($mixed)  
{  
    return  is_array($mixed) ? array_map('rec_stripslashes', $mixed) : stripslashes($mixed);  
}  
if( get_magic_quotes_gpc() )  
{  
    $_GET = rec_stripslashes( $_GET );  
    $_POST = rec_stripslashes( $_POST );  
© Trianon

Непосредственно перед занесением данных в базу, строковые значения обрабатываются - mysql_real_escape_string.
htmlspecialchars используется непосредственно перед выводм текста в браузер.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования