|
|
|
| Заношу в базу данных в поле varchar из формы данные в виде текста с кавычками, а после базы данных, там где начинались кавычки ставиться \ а остальное обрезается?? | |
|
|
|
|
|
|
|
для: xpom
(10.09.2008 в 10:54)
| | Проблемы, вероятно, на трех шагах.
1.При получении из поля формы
2. При формировании запроса на помещение в таблицу
3. При выводе в HTML-поток.
Эти три проблемы нужно решать независимо. | |
|
|
|
|
|
|
|
для: Trianon
(10.09.2008 в 11:50)
| | получаю данные в форме:
<INPUT type="text" name="name" size="60" maxlength="200" value="">
|
передаю методом POST в файл для обработки. В этом файле принимаю
if (isset($_POST['name']))
{
$name=$_POST['name'];
}else {
$name="";
}
|
и заношу в этом же файле в скрытое поле, для передачи в следующий рнр файл:
echo '<INPUT type="hidden" name="name" value="'.$name.'">';
|
а в следующем файле принимаю и заношу в таблицу:
if (isset($_POST['name']))
{
$name=$_POST['name'];
}else {
$name="";
}
mysql_query("INSERT INTO Table (Name)
VALUES
('$name')",$db);
|
попробовал поставить перед занесением в базу функцию mysql_real_escape_string();
$name=mysql_real_escape_string($name);
mysql_query("INSERT INTO Table (Name)
VALUES
('$name')",$db);
|
но эта функция не помогла...
Просматриваю базу в MyAdmin так там уже заноситься без кавычек, а стоит обратный слэш.
Подскажите, где здесь ошибка? | |
|
|
|
|
|
|
|
для: xpom
(10.09.2008 в 12:19)
| | >получаю данные в форме:
>передаю методом POST в файл для обработки. В этом файле принимаю
> $name=$_POST['name'];
1. Ошибка - не учитывается случай магических кавычек
функции get_magic_quotes_gpc() и spripslashes()
>и заношу в этом же файле в скрытое поле, для передачи в следующий рнр файл:
>echo '<INPUT type="hidden" name="name" value="'.$name.'">';
2. Ошибка - а) выбран неудачный тип кавычек для ограничения,
б) при помещении в html-поток не кодируются спецсимволы
функция htmlspecialchars()
>а в следующем файле принимаю
Грубейшая ошибка в понимании Эпринимаю и заношу" - РАЗНЫЕ ШАГИ!
Итак:
>а в следующем файле принимаю
> $name=$_POST['name'];
3. Ошибка аналогична 1.
>и заношу в таблицу:
>mysql_query("INSERT INTO Table (Name)
> VALUES
> ('$name')",$db);
4. Ошибка в формировании литеральной текстовой константы.
функция mysql_escape_string()
>попробовал поставить перед занесением в базу функцию mysql_real_escape_string();
>$name=mysql_real_escape_string($name);
>mysql_query("INSERT INTO Table (Name) VALUES ('$name')",$db);
>но эта функция не помогла...
Значит четвертую ошибку исправили. Осталось добить остальные.
>Просматриваю базу в MyAdmin так там уже заноситься без кавычек, а стоит обратный слэш.
>Подскажите, где здесь ошибка?
Подсказал.
Где читать описания функций - знаете? | |
|
|
|
|
|
|
|
для: Trianon
(10.09.2008 в 12:52)
| | Спасибо большое за подсказки!
>Где читать описания функций - знаете?
да, здесь на сайте читаю http://www.softtime.ru/bookphp/gl5_1.php
функция get_magic_quotes_gpc() возвращает 1. значит при использовании функции htmlspecialchars() автоматически преобразует специальные символы в HTML.
Сейчас буду пробовать, с такими несложными действиями добавляются даже лишние слэши, такие можно удалять функцией stripslashes()
А если при использовании htmlspecialchars() автоматически экранируются кавычки, то использовать функцию mysql_real_escape_string() не нужно? Или все же лучше применить, перед этим поудаляв слэши функцией stripslashes()?
Скажите, а есть функция, которая удаляет не только экранирование кавычек, но и все преобразования, которые ставит функция htmlspecialchars()? | |
|
|
|
|
|
|
|
для: xpom
(10.09.2008 в 14:23)
| | >Спасибо большое за подсказки!
>
>>Где читать описания функций - знаете?
>да, здесь на сайте читаю http://www.softtime.ru/bookphp/gl5_1.php
>
Нет. Не здесь. А вот где: http://www.php.net/manual/ru/indexes.php
>. значит при использовании ф...
Дальше написан сплошной бред. | |
|
|
|
|
|
|
|
для: Trianon
(10.09.2008 в 15:10)
| | >Нет. Не здесь. А вот где...
Спасибо, очен. удобно, много функций.
>Дальше написан сплошной бред.
Но как ни странно, этот бред работает нормально. | |
|
|
|
|
|
|
|
для: xpom
(10.09.2008 в 15:48)
| | htmlspecialchars() - нужно использовать при выводе (а не при сохранении в базу или в файл) данных полученных извне "несмотря ни на что и вопреки всему". т.е. постоянно. | |
|
|
|
|
|
|
|
для: Valick
(10.09.2008 в 15:51)
| | При вводе данных в базу я использую функцию mysql_real_escape_string() перед этим удалив экранированные слэши кавычек, функцией stripslashes()
А при перенесении данных скрытой строкой, в другой файл, какую функцию использовать? Я использую htmlspecialchars() :
echo "<INPUT type='hidden' name='name' value='".htmlspecialchars($name)."'>";
|
| |
|
|
|
|
|
|
|
для: xpom
(10.09.2008 в 16:22)
| |
<?php
echo "<INPUT type='hidden' name='name' value='".htmlspecialchars($name, ENT_QUOTES)."'>";
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(10.09.2008 в 16:31)
| | А может лучше оставить без изменений? Чтобы потом не убирать экранирование stripslashes()
<?php
echo "<INPUT type='hidden' name='name' value='".htmlspecialchars($name, ENT_NOQUOTES)."'>";
?>
|
| |
|
|
|
|
|
|
|
для: xpom
(10.09.2008 в 16:40)
| | Нельзя применять ENT_NOQUOTES в данном случае, иначе если в $name будет апостроф, то разметка станет неверной (или, как говорят, "невалидной").
htmlspecialchars() c mode "ENT_QUOTES" экранирует помимо всего прочего и апостроф, который учавствует в формировании значения атрибута "value". Это то же самое, что не применять экранирования апострофа при формировании SQL-запроса:
<?php
$s = " ' ";
$query = "SELECT * FROM `tbl` WHERE `s` = '$s';";
?>
|
<?php
$s = " ' ";
echo "<input type='text' value='$s' />";
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(10.09.2008 в 17:10)
| | Ясно, спасибо большое! | |
|
|
|
|
|
|
|
для: xpom
(10.09.2008 в 17:43)
| | была такая жэ проблема. решил моментально.
кстати на сервере в компе нет проблемы. а на хостенге появлялась.
решение.
вставь этот код при обработке данных из формы
$meil = substr($HTTP_POST_VARS["meil"],0,32);
$meil = htmlspecialchars(stripslashes($meil));
это есть в учебнике по PHP на этом сайте.
помогло!!! | |
|
|
|
|
|
|
|
для: valera380
(11.09.2008 в 13:17)
| | http://www.softtime.ru/bookphp/gl10_1.php
здесь всё описно. удачи. | |
|
|
|
|
|
|
|
для: valera380
(11.09.2008 в 13:17)
| | вы тему хоть читали? Выше четко указано где применять htmlspecialchars().
UPD.
не говоря уже о $HTTP_POST_VARS... | |
|
|
|