подскажите пожалуйста в чем проблема.
в общем если отправить на запись данные из формы в файл.
а теперь проблема, когда в форме ставлю такой слэш
\, при записи оно его удваивает, образуется двойной слэш....... если ставить обатный слэш
/, сохраняет без удвоений.....
не пойму, почему нельзя сделать через ereg_replace убирание двойных слешов, то есть ereg_replace("\\'","\",$txt);
на версии
php 5
работает нормально, слэш не удваивается... на
php версии 4 удваивается.... не понятно в чем дело. подскажите пожалуйста, кто знает в чем причина и как исправить.
заранее благодарен
Спустя 19 минут, 21 секунда (18.06.2009 - 00:49) twin написал(а):
Всё банально и просто. Ни пр ичем тут особо версия, нужно просто опреднлиться с магическими кавычками.
Спустя 8 часов, 24 минуты, 59 секунд (18.06.2009 - 09:14) Vikt0r написал(а):
Цитата (twin @ 17.06.2009 - 21:49) |
Всё банально и просто. Ни пр ичем тут особо версия, нужно просто опреднлиться с магическими кавычками. |
не подскажете какие именно?
в мануале смотрел, там про слэши не слова не написано... только просто двойные кавычки.
Спустя 11 минут, 9 секунд (18.06.2009 - 09:26) glock18 написал(а):
параметр magic_quotes_gpc наз-ся в php.ini.
Цитата |
ereg_replace не хочет заменять |
когда читаю такие темы, думаю "вот негодяй
php.
работать не хочет..."
Ошибку надо у себя искать, а обвинять в том, что не
работает php или еще что-то по меньшей мере глупо. Я когда начинал тоже так любил. это не помогает - помогает если у себя ищешь ошибку или хотя бы понять ее пытаешься.
Теперь к вопросу:
PHP |
//ereg_replace("\\'","\",$txt); |
здесь вообще говоря вы забыли, что \ надо удваивать в кавычках. ваш первый параметр вовсе не "\\" как вы подумали, а "\". выводы?
PS: из-за того что второй параметр вообще неправильно записан и ведет к синт. ошибке, даже блок php здесь на сайте раъезжается. вы ведь поэтому его не стали в блок php ставить? а то понятно стало бы - что что-то там не то.
Спустя 19 минут, 28 секунд (18.06.2009 - 09:45) Vikt0r написал(а):
Работаю на двух разных серваках, то есть пишу на своем локальном, скрипт работает... перенесу на сервак и работает со всем по другому.... по этому трудно выискивать причину \ ошибки, особенно если эта ошибка впервые в глаза встречается.
а по поводу ereg_replace со слешем, навел как пример) сайт не отображает вообще, сколько не ставь этих слешей там. синтаксическая ошибка в общем.
огромное спасибо за помощь!
Спустя 10 минут, 15 секунд (18.06.2009 - 09:55) glock18 написал(а):
Цитата |
Работаю на двух разных серваках |
Цитата |
параметр magic_quotes_gpc наз-ся в php.ini. |
почитайте про magic_quotes. это как раз - настройка сервера. у вас они похоже выключены, а у хостера - включены. вот и вся проблема.
я обычно делаю примерно такие функции:
PHP |
function EscapeAfterRequest($string) { if (get_magic_quotes_gpc()) return $string; // строка уже заэспейплена. нужно делать только с переменными пришедшими из GET, POST, COOKIE.
return mysql_real_escape_string($string); // эскейпим строку } |
по аналогии UnescapeAfterRequest.
Спустя 1 час, 56 минут, 41 секунда (18.06.2009 - 11:52) Vikt0r написал(а):
я конечно извиняюсь, с функциями особо не дружу, по этому не понимаю как реализовать в скрипт...
как я понял последняя строка return mysql_real_escape_string нам не нужна, т.к. не используется mysql?
к функциям надо вообще что-то добавлять? насколько я понял должен быть код такого вида:
PHP |
function EscapeAfterRequest($string) { if (get_magic_quotes_gpc()) { $txt = addslashes($_POST['txt']); } else { $txt = $_POST['txt']; }
return $string; } |
но опять таки ничего не понятно, куда эта функция вставляется... если брать вашу готовую функцию без изменений.то как вы пишите надо добавить только пришедшие переменные...
пробовал так:
PHP |
function EscapeAfterRequest($string) { if (get_magic_quotes_gpc()) return $string; // строка уже заэспейплена. нужно делать только с переменными пришедшими из GET, POST, COOKIE.
return mysql_real_escape_string($string); // эскейпим строку }
$txt = EscapeAfterRequest($_POST['txt']); |
тоже не выходит )
есть конечно вариант отключить их через .htaccess, но раз пошли функции , мне стало интересно как на практике они применяются...
Спустя 7 минут, 30 секунд (18.06.2009 - 11:59) glock18 написал(а):
ээээээ...
если mysql не используете, то можете (вместо нее!!) использовать addslashes.
То что вы выше написали не поддается критике.
Цитата |
почитайте про magic_quotes |
надеюсь, что мне не придется больше повторять это.
Спустя 23 минуты, 23 секунды (18.06.2009 - 12:23) Vikt0r написал(а):
Цитата (glock18 @ 18.06.2009 - 08:59) |
ээээээ...
если mysql не используете, то можете (вместо нее!!) использовать addslashes.
То что вы выше написали не поддается критике.
Цитата | почитайте про magic_quotes |
надеюсь, что мне не придется больше повторять это.
|
спасибо
Спустя 2 часа, 19 минут, 24 секунды (18.06.2009 - 14:42) Vikt0r написал(а):
оказывается все так просто было )
не надо было ничего на серваках менять, отключать и т.д., а просто прописать в обработке скрипта такую строчку:
$txt = stripslashes($_POST['txt']);
стыдно однако...