Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > проблема с magic_quotes


Автор: hetfield 3.10.2008, 08:40
Здравтсвуйте, уважаемые эксперты! 
У меня была проблема с ковычками в форме. То есть появлялся слеш перед ковычками  -   \''

Эту ерунду я поборол вот так
Код

function strips(&$el) {
  if (is_array($el))
    foreach($el as $k=>$v)
      strips($el[$k]);
  else $el = stripslashes($el);
}
if (get_magic_quotes_gpc()) {
  strips($_GET);
  strips($_POST);
  strips($_COOKIE);
  strips($_REQUEST);
  if (isset($_SERVER['PHP_AUTH_USER'])) strips($_SERVER['PHP_AUTH_USER']);
  if (isset($_SERVER['PHP_AUTH_PW']))   strips($_SERVER['PHP_AUTH_PW']);
}




и вот так
Код

if ($_POST['send']) {
    $name = htmlspecialchars((stripslashes($_POST['name'])), ENT_QUOTES);
    ...
    
}


сам $_POST['name'] который затем вставляется в запрос имеет нормальный вид, но если вдруг при отправке формы произошла ошибка, например, не заполнены все поля, я вывожу ошибку и вывожу введенные уже данные

Код

Фамилия, Имя:&nbsp;&nbsp;<font color="#ff0101">*</font>
<?php   if (isset($_POST['name']) and ($_POST['name']) == "") { 
     echo "&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d10f0f><b>Ошибка:</b> Введите имя.</font>"; $key = false; 
} 
?><br />
<input type="text" name="name" class="mail_inp" value="<?php if (($_POST['name']) !== "") { echo $_POST['name'];} ?>"><br />


в этом случае если я вводил в это поле например - Коля "Иванов".... у меня POST выводимый на экран обрезается до -  Коля, при этом print_r($_POST) говорит что эта переменная там такая, какая нужна...

Что делать? 

Автор: bars80080 3.10.2008, 08:56
Цитата(hetfield @  3.10.2008,  08:40 Найти цитируемый пост)
 Коля "Иванов".... у меня POST выводимый на экран обрезается до -  Коля

в чём дело обнаруживается очень просто. ты щёлкаешь правой кнопкой мыши по странице и выбираешь пункт: "показать исходный код страницы". там ты видишь своё поле:

Код

<input type="text" name="name" class="mail_inp" value="Коля "Иванов"">

а теперь, обрати внимание, как сработала подсветка кода. она тоже не видит Иванова, а только Колю. сложи два и два

Автор: hetfield 3.10.2008, 09:06
ну я собстна и не могу врубить почему так происходит, я ж вроде делаю htmlspecialchars...

Автор: hetfield 3.10.2008, 09:40
а, все... сам допер smile 


Автор: nerezus 3.10.2008, 09:52
Убираешь все это и смотришь мануал.

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

.htaccess
Код

php_flag magic_quotes_gpc Off

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)