Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTML код в переменной 
:(
    Опции темы
Aarons
  Дата 27.2.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Приветствую вас дамы и господа. Прошу вас помочь в решении такого вопроса :

Каким образом можно заполнить переменную $test  html кодом, что-бы не было проблем с ковычками.

Просто при добавлении html через такой код php :

Код

$a_update_config  = "<?\r\n";
$a_update_config .= "\$test = \"".$_POST['test']."\";\r\n";
$u_update_config = fopen("test.php","w+");
fputs ($u_update_config,$a_update_config);


html искожается , тобишь ковычки принимают такой вид - /" или /' 

Если потом подгрузить эту переменную и сохранить снова , то в html ковычки становятся такими - //"

С уважением , Аарон.
PM MAIL   Вверх
Ипатьев
Дата 27.2.2010, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Во-первых, слово кавычка пишется через "а". Запомнить несложно.
Во-вторых, надо отключить в конфиге опцию magic_quotes_gpc и тогда слеш к кавычкам не будет добавляться в текстах, пришедших из формы.

Это сообщение отредактировал(а) Ипатьев - 27.2.2010, 21:39
PM MAIL   Вверх
bars80080
Дата 27.2.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Ипатьев @  27.2.2010,  20:18 Найти цитируемый пост)
register_globals

а не magic_quotes ?
PM MAIL WWW   Вверх
Ипатьев
Дата 27.2.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



тьфу.
все в голове уже перемешалось.
magic_quotes_gpc
с третьей попытки, вроде, получилось

Это сообщение отредактировал(а) Ипатьев - 27.2.2010, 23:19
PM MAIL   Вверх
Demogargon
Дата 27.2.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 9.1.2008

Репутация: нет
Всего: 1



Можно вывести все красиво через heredocument. 
Код

$var <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;
echo $var;



--------------------
Дело стоит рядом со стоящим, идет за идущим, творит с творящим. Оно следует за нами подобно тени.
PM MAIL ICQ   Вверх
Ипатьев
Дата 27.2.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



А еще можно читать вопрос перед тем, как в голову ударит мысль на него ответить
PM MAIL   Вверх
Aarons
  Дата 1.3.2010, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Господа. Давайте опишу проблему более подробно.
Есть форма добавления новостей в файл :

Код

<form action="" enctype="multipart/form-data"  method="post">
<?print LANGPL12;?><br>
<input name='rc_name_news' type='text' id='input_login' value="<?print $_POST['rc_name_news']?>">
<br><br>
<?print LANG4;?><br>
<select name='rc_katigoria' id='input_login'>
<?PHP
require "./codes/rc_admin/rc_news/rc_list_katigoria.php";
?>
</select>
<br><br>
<?print LANGPL13;?><br>
 <?PHP
 require "./codes/rc_func/rcodes/r_codes_image_panel.php";
 ?>
<textarea name="rc_text_news" id="textarea_news" style="width: 100%;"><?print $_POST['rc_text_news']?></textarea>
<br><br>

<?print LANGPL14;?><br>
 <?PHP
 require "./codes/rc_func/rcodes/r_codes_image_panel2.php";
 ?>
<textarea name="rc_text2_news" id="textarea_news2" style="width: 100%;"><?print $_POST['rc_text2_news']?></textarea>

<br><br>
<?print LANGPL32;?><br>
<input name='rc_tags_news' type='text' id='input_login' value="<?print $_POST['rc_tags_news']?>"><br>
<font size='1px'><?print LANGPL33;?></font><br>
<br><br>
<input name='rc_add_news' type='submit' value='<?print LANG11;?>' id='input_login'>
</form>


После отправки запроса, идёт проверка и добавление :

Далее идёт проверка на наличие кавычек в тексте и замена их на html код :
(Отрывок кода проверки)
Код

$r_codes = str_replace('"',"&quot;",$r_codes); 
$r_codes = str_replace("'",''',$r_codes); 


После идёт запись новости в файл :

Код

require "./RC_DB/".$rc_db_cfg."/rc_news_katigoria/".$_POST['rc_katigoria'].".php";
require "./codes/rc_func/rcodes/r_codes_func.php";

$r_codes = $_POST['rc_text_news'];
require "./codes/rc_func/rcodes/r_codes_func.php";
$rc_text_news = $r_codes;

$r_codes =$_POST['rc_text2_news'];
require "./codes/rc_func/rcodes/r_codes_func.php";
$rc_text2_news = $r_codes;

$a_update_config  = "<?\r\n";
$a_update_config .= "\$rc_name_news = \"".$_POST['rc_name_news']."\";\r\n";
$a_update_config .= "\$rc_text_news = \"".$rc_text_news."\";\r\n";
$a_update_config .= "\$rc_text2_news = \"".$rc_text2_news."\";\r\n";
$a_update_config .= "\$rc_katig_news = \"".$rc_name_katigoria."\";\r\n";
$a_update_config .= "\$rc_katig_id_news = \"".$_POST['rc_katigoria']."\";\r\n";
$a_update_config .= "\$rc_tags_news = \"".$_POST['rc_tags_news']."\";\r\n";
$a_update_config .= "\$rc_date_news = '$time_today $date_today';\r\n";
$u_update_config = fopen("./RC_DB/".$rc_db_cfg."/rc_news/".$_GET['news'].".php","w+");
fputs ($u_update_config,$a_update_config);

$message_news = LANGPL15;
require "./codes/rc_templates_panel/message.tpl";


Даже когда в переменную $rc_text_news идёт запись не " , а &quot; , всё равно перед &quot; ставится \ 
Также и перед кавычкой ' 

Вот такая проблема. Не могли бы вы помочь в решении этого. 

p.s. Уважаемые программисты, когда я делал в другом скрипте такой метод, там добавлялось всё нормально. А в этом скрипте почему то не работает как надо.

С уважением Аарон.


PM MAIL   Вверх
Sentox
Дата 1.3.2010, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Слэш добавляется перед Вашим скриптом, то есть перед тем как скрипт начинает обрабатывать, програмно отключайте "волшебные кавычки" или обрабатывайте результат c удалением их(слэшей) из массива.
Код

function stripFormSlashes($arr)
{
    if(is_array($arr))
    {
        return stripslashes($arr);
    } 
    else {
        return array_map('stripFormSlashes', $arr);    
    }
}

if(get_magic_quotes_gpc())
{
    $_REQUEST   = stripFormSlashes($_REQUEST);
}


Это сообщение отредактировал(а) Sentox - 1.3.2010, 23:42
PM MAIL   Вверх
capitan
Дата 1.3.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



Я например делаю так:
Код

$text = base64_encode(serialize($content));


И далее сохраняю в файл $text.

Это сообщение отредактировал(а) capitan - 1.3.2010, 23:29
PM MAIL WWW ICQ   Вверх
bars80080
Дата 2.3.2010, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(capitan @  1.3.2010,  22:29 Найти цитируемый пост)
Я например делаю так:
$text = base64_encode(serialize($content));

зачем, интересно?


Цитата(Aarons @  1.3.2010,  21:04 Найти цитируемый пост)
Господа. Давайте опишу проблему более подробно.

вообще-то, ответ уже был дан. можно, конечно, и подробнее

на этом новом для вас хостинге (где получается не так как раньше) включена такая настройка, как magic_quotes, суть её в том, чтобы добавлять во входящие данные слэши перед "опасными" символами. то есть перед кавычками.
если её впадлу выключить (что делается одной строчкой в .htaccess файле), то все входящие переменные достаточно пропускать через stripslashes(), которая будет уничтожать слэши, там где они добавились.

есть резонный вопрос: зачем была нужна эта настройка? ответ: для безопасной вставки данных в базу.
к сожалению, горячие головы администраторов хостинга не догадались, что это нужно не всегда. 
следует второй вопрос: как обезопасить вставляемые данные, если мы отключаем эту настройку (либо убираем слэши)?
ответ: перед самой вставкой данных в запрос их надо обрабатывать функцией mysql_real_escape_string() , если используется в качестве БД mysql. либо аналогичной, для другой базы

вопрос (уже от меня), нужно ли это:
Цитата(Aarons @  1.3.2010,  21:04 Найти цитируемый пост)
$r_codes = str_replace('"',"&quot;",$r_codes); 
$r_codes = str_replace("'",''',$r_codes); 

для нормального функционирования сайта? ответ: нет, не нужно. может только навредить.
для того чтобы всякие кавычки, а также знаки < и > и тому подобные (типа &), не могли разрушить хтмл-вёрстку, достаточно выводимые данные пропустить через функцию htmlspecialchars(), что делают обычно на выходе, при отдачи текста в браузер
эта функция с большей эффективностью сделает всё что нужно по переводу кавычек в &quot; и прочих символов
PM MAIL WWW   Вверх
Aarons
Дата 2.3.2010, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Благодарю всех. Прописал просто в .htaccess php_value magic_quotes_gpc off .


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1021 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.