Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для stashappy
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625

Некорректно отображается символ в текстовом поле

07.10.2012, 03:23. Показов 1963. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброй утро.

Кратко. Если ввести символ - '\' в нижеуказанную форму, и нажать submit, этих символов становится вдвое больше. Если еще раз нажать на кнопку, то их количество опять умножается вдвое. В итоге, при многократном нажатии, мы получаем"\\\\\\\\\\\\\\\\\\\\\\\". Любые другие символы, не размножаются. А именно с этим символом, происходят чудеса какие то.

PHP
1
2
3
4
echo "<form action='go.php' method='post'>";
echo "<input type='text' size='50' id='form_text' name='form_text' value='".$_POST['form_text']."'>";
echo "<input type='submit'>";
echo "</form>";
Здесь я вставил в value, код $_POST['form_text'], чтобы при нажатии на кнопку Submit, пользователь не вводил заново введеный им текст, в случае возникновения ошибки при вводе. Я не знаю, как делают подобные задачи, поэтому соориентировался на местности. Все вроде бы работает. Единственное возникает проблема с символом - '\'.

Как можно устранить эту проблему? Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2012, 03:23
Ответы с готовыми решениями:

Не отображается автор и некорректно отображается дата в слайдбаре
Подскажите из-за чего в слайдах отображаются не те даты, что в обычном новостном блоке. То есть, выводятся даты на подобии: 01-01-70. ...

Некорректно отображается таблица
Здравствуйте! Почему-то некорректно отображается таблица &lt;div class = &quot;table&quot;&gt; &lt;table border=&quot;1&quot;&gt; &lt;thead&gt; ...

Phpexcel - русский текст отображается некорректно
Доброго времени суток! Пишу от безысходности я перечитал кучу форумов, и постов про приминение phpexcel и с функционалом проблем нет. ...

12
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
07.10.2012, 03:40
Может у тебя просто кеширование? Проверил у себя, всё ок.
1
 Аватар для stashappy
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
07.10.2012, 03:48  [ТС]
Может у тебя просто кеширование? Проверил у себя, всё ок.
Проверил во всех браузерах. Результат аналогичный. Тестирую на DENWERe.)
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.10.2012, 09:58
stashappy, наверное потому, что у вас в php.ini директива magic_quotes_gpc выставлена в положение On. Вот входящие данные и экранируются.
1
 Аватар для stashappy
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
07.10.2012, 15:44  [ТС]
magic_quotes_gpc выставлена в положение On.
Сменил положение на Off. Не помогло. Попробовал вписать в скрипт строчку:
PHP
1
ini_set(’magic_quotes_gpc’, ‘off’);
. Так же не помогло. Какие есть идеи?)
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
07.10.2012, 16:11
Цитата Сообщение от stashappy Посмотреть сообщение
Попробовал вписать в скрипт строчку:
В скрипте данные уже получены и уже обработаны. Эта штука должна быть в php.ini или в .htaccess
1
 Аватар для stashappy
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
07.10.2012, 16:58  [ТС]
Эта штука должна быть в php.ini или в .htaccess
Пробовал прописывать в .htaccess строчку php_value magic_quotes_gpc off. Не помогает.

Добавлено через 11 минут
Оп. Пардон. Все заработало. Оказывается у себя в коде были некоторые лишние моменты.
magic_quotes_gpc = Off - решил мою проблему. Благодарю вас.)

Добавлено через 20 минут
Вот очень хороший урок, относительно магических кавычек:
http://webew.ru/articles/198.webew
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.10.2012, 17:22
Всегда лучше проверять, а то мало ли, переедете на другой сервер - а там включены магические кавычки.
PHP
1
2
3
4
5
if(get_magic_quotes_gpc()) {
  $var1 = stripslashes($var1);
  $var2 = stripslashes($var2);
.....
}
0
 Аватар для stashappy
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
07.10.2012, 17:59  [ТС]
PHP
1
2
3
4
5
if(get_magic_quotes_gpc()) {
  $var1 = stripslashes($var1);
  $var2 = stripslashes($var2);
.....
}
Спасибо. Хороший вариант! Пренепременно добавлю к себе.)

Дополнительно добавил вот такой код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
echo "<form action='go.php' method='post'>";
echo "<input type='text' size='50' id='form_text' name='form_text' value='".$_POST['form_text']."'>";
echo "<input type='submit' name='submit' Value='Ok'>";
echo "</form>";
 
if(empty($_POST['submit'])) {
        if(!preg_match('/[^a-zа-я0-9_]/i',$_POST['form_text']) {
               echo "Текст содержит недопустимые символы";  
               $_POST['form_text'] = "";
        } elseif(strlen($_POST['form_text'])<2) {
               echo "Текст не может содержать меньше двух символов";
               $_POST['form_text'] = "";
        } else {
        // код успешного выполнения
        }
}
Тут, если поле имеет недопустимые символы, в том числе и - '\', то оно просто стирается. Новичкам как я, пригодится.)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.10.2012, 18:05
Цитата Сообщение от stashappy Посмотреть сообщение
PHP
1
if(empty($_POST['submit'])) {
Это уже неверно по логике и затрате ресурсов. Функция empty пропустит обычный пробел как не пустое значение. Сначала необходимо очищать хотя бы от пробелов. (функция trim() )
Цитата Сообщение от stashappy Посмотреть сообщение
PHP
1
$_POST['form_text'] = "";
зачем эта строчка? непонятно
И кстати, получается русские символы нельзя?
0
 Аватар для stashappy
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
07.10.2012, 21:25  [ТС]
KOPOJI. Вы правильно заметили ошибки.
Вот исправленный вариант:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(get_magic_quotes_gpc()) {
$text = stripslashes($_POST['form_text']); // убираем магические кавычки
}
$text = trim($text); // убираем лишние пробелы
 
echo "<form action='go.php' method='post'>";
echo "<input type='form_text' name='form_text' size='50' value='".$text."'>";
echo "<input type='submit' name='submit' value='Ok'>";
echo "</form>";
 
 
if(isset($_POST['submit'])) { // проверяем была ли нажата кнопка
    if(empty($_POST['form_text'])) { // проверяем имеется ли в поле какой-либо текст
    echo "Форма пустая";
    } elseif(preg_match('/[^a-zа-я0-9_]/i', $_POST['form_text'])) { // ищем в тексте недопустимые символы по маске 
        echo "Форма содержит недопустимые символы";
    } else {
    echo $text; // если все удачно, выводим значение переменной
    }
}
Проверил. Работает.)

[^a-zа-я0-9_] - допускает наличие русских и латинских символов. А так же, знака подчеркивания. При желании, можно изменить маску.

Вот здесь есть примеры:
http://htmlweb.ru/php/example/preg.php
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.10.2012, 21:59
И сразу же нотайсы посыпятся)) если не включены магические кавычки - вылетит нотайс о недекларированной переменной, если включены - то о не объявленном индексе. Идем далее. Не знаю, что вы там проверяли, но смысла от этого не будет.
Цитата Сообщение от stashappy Посмотреть сообщение
PHP
1
if(empty($_POST['form_text'])) {
а где тогда переменная $text используется и зачем мы ее очищали, если проверяем все равно $_POST?

Добавлено через 2 минуты
P.S. переменную текст вы в форме не увидите никогда при выключенных магических кавычках

Добавлено через 5 минут
Еще одно. регулярка ваша не будет работать в кодировке utf-8 - будет все время выдавать ошибку введенных данных, если надо чтобы работало - нужно добавить модификатор u

Добавлено через 14 минут
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php #лучше прописать кодировку в htmlspecialchars вручную
    $text = isset($_POST['form_text']) ? htmlspecialchars($_POST['form_text']) : '';
?>
 
<form action='go.php' method='post'>
    <input type='form_text' name='form_text' size='50' value="<?php echo $text; ?>">
    <input type='submit' name='submit' value='Ok'>
</form>
 
 <?php
 
if(isset($_POST['submit'],$_POST['form_text'])) { // проверяем была ли нажата кнопка
    $text = trim($_POST['form_text']); // убираем лишние пробелы
 
    if(get_magic_quotes_gpc())
        $text = stripslashes($text); // убираем магические кавычки
 
    if(empty($text)) // проверяем имеется ли в поле какой-либо текст
        echo "Форма пустая";
 
    elseif(preg_match('/[^a-zа-я0-9_]/ui', $_POST['form_text'])) // ищем в тексте недопустимые символы по маске 
        echo "Форма содержит недопустимые символы";
 
    else
        echo $text; // если все удачно, выводим значение переменной
}


Добавлено через 1 минуту
Если кодировка не utf-8 то убрать модификатор u в регулярке
1
 Аватар для stashappy
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
08.10.2012, 00:39  [ТС]
Отлично. Благодарю. Буду совершенствоваться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2012, 00:39
Помогаю со студенческими работами здесь

Некорректно отображается сайт в Open Server
В общем такая проблема. Некорректно отображается сайт в Open Server. Я воспользовался этим: ...

О текстовом поле и строказ...
Здравствуйте!У меня пара вопросов: 1) Есть текстовое поле: &lt;input type=&quot;text&quot; name=&quot;nam&quot; size=25;&gt; Как мне то что я впишу...

POST в текстовом поле
Здравствуйте форумчане. Есть такой код который работает &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta...

Определить, встречается ли заданный символ в текстовом файле
Определить встречается ли заданный символ в текстовом файле. Если да то сколько раз.

Отображение кирилицы в текстовом поле
Есть на странице(index.php) текстовое поле(имя:t1 value=&quot;&lt;?php echo $_GET; ?&gt;&quot;&gt;), ему нужно присвоить значение через адресную строку. К...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
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