htmlspecialchars и addslashes

misho

Registered
Имам няколко въпроса за тях:

htmlspecialchars - замeства < > % & и други с техни аналози, но добавя ли наклонена черта пред тях? Не, нали?
addslashes - това вече трябва да добява наклонена черта, но при мен добавя 3. :shock:

Ето пример от кода:
Код:
//Град
$town = $_POST['town'];
$town = htmlspecialchars($town);
$town = addslashes($town);

<input type="text" class="input" id="input" title="Пишете само на кирилица!" name="town" value="<?php echo $town; ?>">
Т.е. въвеждам името на града и ако има някакъв проблем с формата, когато върне грешка, информацията си остава в полето. Но проблема е, че тази комбинация освен, че променя HTML знаците, добавя 3 наклонени черти. Всъщност ако оставя само $town = $_POST['town']; пак добавя 1 черта. От къде идва тя?
 
Добавя ти три, защото в хоста е пуснат magic_quotes_gpc :)
правиш така:
Код:
$var = $_POST['var'];

if(!magic_quotes_gpc())
      $var = addslashes($var);

echo $var;
:)
 
А от тази "магия" имам ли някаква полза? Освен, че ми осакатява съдържанието разбира се. :D А и прочетох, че в PHP вече няма да се ползва, така че какъв е смисъла и сега да я използвам?
Не може ли просто magic_quotes_gpc да се изключат?
 
misho каза:
А от тази "магия" имам ли някаква полза? Освен, че ми осакатява съдържанието разбира се. :D А и прочетох, че в PHP вече няма да се ползва, така че какъв е смисъла и сега да я използвам?
Не може ли просто magic_quotes_gpc да се изключат?

От 5.3 вече ги няма изобщо като опция :)
 
http://bg2.php.net/manual/bg/security.magicquotes.disabling.php
:)

Явно не ползва последното ПХП. Не знам защо, но често чувам, че хората се връщат към по-стари версии като 5.2.*, защото новото PHP не им харесвало :lol:
Или просто ги мързи да си пренапишат кодовете за да паснат на новата версия :D
 
Има ли значение каква точно е sql заявката, в която участва дадена променлива? Ако имам INSERT, можели тази променлива да се използва за SQL инжекция? Защото htmlspecialchars и addslashes, по-точно втората, създават някои неудобства, ако в текста има апостроф или нещо подобно.
 
След като извадиш работите ота базата данни използваш stripslashes
echo stripslashes($row['text'']);
:?:
И виж тази тема: http://web-tourist.net/forum/viewtopic.php?t=85530
 

Back
Горе