Корректно оформить запросы чтение/запись данных в БД?

Статус
В этой теме нельзя размещать новые ответы.

Prosto_niki

Новичок
Корректно оформить сохранение, чтение и показ данных введенных пользвоателем?

переформулирвоанный вопрос:
Как сделать отпавку комментария, c разрешением использовать html только админу, но без strip_tags


Корректно оформить сохранение, чтение и показ данных введенных пользвоателем?






Варианты:
htmlspecialchars - дважды, а админский единыжды, что бы при htmlspecialchars_decode - получался показ кода а не его выполнение, а для админа - выполнение этого когда
- Это нормально или нагрузка не нужная?


mysql_real_escape_string при сохранении, и stripslashes при чтении?

Может еще какой-то метод?

Данный вопрос меня запутал, подскажете пожалуйста

Это для страниц которые доабвляют пользователи ( блог страница доабвляемая пользователем, а так же комменты )
 

Prosto_niki

Новичок
Да читал, не врубился я. mysql_real_escape_string как обратно раскодировать? nl2br и все?
 

Духовность™

Продвинутый новичок
Да читал, не врубился я.
Да не читал ты не хрена. Там написано курсивом специально: Следует специально отметить: добавленные слеши НЕ идут в базу. Они нужны только в запросе. При попадании в базу слеши отбрасываются. Соответственно, распространенной ошибкой является применение stripslashes при получении данных из базы.

ты читал для чего nl2br нужна? Открой мануал, эта функция к работе с БД вообще отношения не имеет.
 

Prosto_niki

Новичок
Я имею ввиду непосредственно вывод данных.

Полсьзвователь ввел "
PHP:
<table width="90%" border="1">
  <tr>
    <th scope="col">'2'</th>
    <th scope="col">3</th>
  </tr>
  <tr>
    <td>1</td>
    <td>4</td>
  </tr>
  <tr>
    <td>&quot;5&quot;</td>
    <td>*</td>
  </tr>
</table>
Надо что б выводило как:

PHP:
&lt;table width=&quot;90%&quot; border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th scope=&quot;col&quot;&gt;'2'&lt;/th&gt;
&lt;th scope=&quot;col&quot;&gt;3&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;quot;5&amp;quot;&lt;/td&gt;
&lt;td&gt;*&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
НО для админа как изначально введено. Т.е. что бы & не стало &amp;amp; и т.д.



Можно поставить вопрос более обширно:

Как сделать отпавку комментария, c разрешением использовать html только админу, но без strip_tags
 

Фанат

oncle terrible
Команда форума
Я имею ввиду непосредственно вывод данных.
ты определись, милок
Каким способом лучше сохранять пользовательские данные?
так вывод или сохранять?

когда решишь эту сложную проблему - что ты хочешь узнать, тогда попытайся задать вопрос еще раз.
 

Prosto_niki

Новичок
Определился

Как сделать отпавку комментария, c разрешением использовать html только админу, но без strip_tags

( если можно и с запросом записи в БД )
 

Фанат

oncle terrible
Команда форума
Как сделать отпавку комментария, c разрешением использовать html только админу,
когда вводит админ, выводить <table width="90%" border="1">
когда пользователь - &lt;table width=&quot;90%&quot; border=&quot;1&quot;&gt;

если можно и с запросом записи в БД
может, целиком программу за тебя написать?
не умеешь запросы составлять - учись.
 

Prosto_niki

Новичок
Автор оригинала: *****
что означает эта фраза?

-~{}~ 24.10.09 17:57:


когда вводит админ, выводить <table width="90%" border="1">
когда пользователь - &lt;table width=&quot;90%&quot; border=&quot;1&quot;&gt;
1)полную ф-ю
Например у меня это так:
PHP:
 $text = htmlspecialchars($text, ENT_QUOTES);
 $text = mysql_real_escape_string($text);
 
 $result = mysql_query("INSERT INTO blog (blog_text) VALUES ('$text')");
а при чтении


PHP:
 запрос и выборка из БД,


 $text = nl2br($text);
 $text = htmlspecialchars_decode($text);

 echo $text;
при этом - все данные показываются как html, а надо что бы только админские данные сохранялись и отображались как html, а пользовательские как КОД в виде текста

2)Ну не таблицу покажет, а код таблицы. Но если комент отправлял админ - то опкажет таблицу.
 

dimagolov

Новичок
Prosto_niki, зачем ты перед сохранением делаешь htmlspecialchars, а после чтения htmlspecialchars_decode? туда-сюда приятно не в программировании, а в общении с противоположным полом :)
 

Фанат

oncle terrible
Команда форума
)Ну не таблицу покажет, а код таблицы. Но если комент отправлял админ - то опкажет таблицу.
ну вот и напиши код, который покажет таблицу или не таблицу

-~{}~ 24.10.09 18:52:

Prosto_niki
у меня к тебе предложение.
давай ты будешь все делать по очереди.


снаала научись составлять запросы к базе данных.

а после того, как научишься - будешь уже думать об отображении этих данных.
 

Prosto_niki

Новичок
ну вот и написал бы если б знал как лучше. Это и спрашиваю.

А запрос к базе:

PHP:
$resultblog = mysql_query_counter ("SELECT * FROM blog WHERE blog_id='$blog' ",$db);
Если б я знал наиболее оптмальный способ, я бы не спрашивал, не ужели не понятно
 

Фанат

oncle terrible
Команда форума
все оптимальные способы написаны по ссылке, которую ты "читал"

откуда берется этот $blog? из воздуха?
или не является частью запроса?

напиши ПОЛНЫЙ код добавления в базу введенного в форму текста
 

Prosto_niki

Новичок
Так мне он не важен, блог берется из ссылки Get, intval()...

Мне не єто нужно, а сама ЗАПИСЬ в бд ( т.е. к какому виду нужно привести ТЕКСТ отправляемый в БД) и ЧТЕНИЕ, т.е. как обратно привести текст в нужный.

А именно:

если пользователь отпавил код таблицы, то на странице после чтения из бд отобразился КОД таблицы, а не сама таблица.


Но если текст отпралял АДМИН то при его чтении (запрос на чтение такойже как и для пользователя) отображался не КОД а САМА ТАБЛИЦА. как для примера писалось выше
 

Фанат

oncle terrible
Команда форума
молодец.
вот и напиши здесь код, который делает ЗАПИСЬ в бд

-~{}~ 24.10.09 20:26:

мы же с тобой договорились, что сначала ты учишься писать
а читать тебе пока рано

-~{}~ 24.10.09 20:29:

у тебя, кстати, осталась всего одна попытка.
если ты вместо кода опять напишешь по пятому разу то, что уже писал, то топик будет закрыт.
 

Prosto_niki

Новичок
Ну вот запись:

PHP:
function submit_rule ($text)
{
 $text = htmlspecialchars($text, ENT_QUOTES);
 
  if(!ADMINISTRATOR){ $text = htmlspecialchars($text, ENT_QUOTES); }; // вариант кодирвоать дважды, но... 
  
 $text = mysql_real_escape_string($text);
 
 return $text; 
};



if (isset($_POST['text']) && $_POST['text'] != '') {$text =  submit_rule($_POST['text']);} else {unset($text);};

if(isset($text)){

 $result = mysql_query("INSERT INTO blog (blog_text) VALUES ('$text')");
}
все лишнее убрал...
 

Фанат

oncle terrible
Команда форума
ты как-то туговато соображаешь.
мы договорились только составлять запросы.
БЕЗ отображения и без администраторов.
учимся просто составлять запросы. чтобы они работали, и без ошибок.

это тебе под силу?
 

Фанат

oncle terrible
Команда форума
вот дятел

короче.
оставляй все как есть
все равно из тебя толка не выйдет.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху