Би-би-коды для био не работают, как я надеюсь

У меня есть биография (личное сообщение), которая отображается на странице профиля пользователя. Я добавил BBCodes, которые работают ([b] полужирный [/ b]), но когда я уйду и вернусь, чтобы изменить биографию позже, он показывает HTML-теги. Я также хотел бы удалить теги HTML и PHP. На данный момент было бы критически важно, если бы кто-то мог просто ввести код PHP в свою биографию и удалить таблицу. вот мой BBCode / изменить био код:

<div class="fl">
<!--BB-codes-->
<?php
$db = mysqli_connect("localhost", "root", "password", "table") or die ("Could not connect to database");

if(isset($_POST['submit'])) {

if(isset($_POST['bio_message']))
{
$text = $_POST['bio_message'];
$text = stripslashes($text);
$text = htmlspecialchars($text);
$text = nl2br($text);

$text = preg_replace('#\[b\](.+)\[/b\]#isU', '<b>$1</b>', $text);
$text = preg_replace('#\[i\](.+)\[/i\]#isU', '<i>$1</i>', $text);
$text = preg_replace('#\[u\](.+)\[/u\]#isU', '<u>$1</u>', $text);

$text = preg_replace('#\[img\](.+)\[/img\]#isU', '<img src="$1" />', $text);
}

$id = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8');

$sql = "UPDATE users SET bio = '$text' WHERE id = '$id'";
$db->query($sql);
}else{}
?>
</div>
<div class="title-wrapper" style="margin:auto; width:60%;">
<h3 class="widget-title"><i class="fa fa-pencil"></i> Change Bio</h3>
<div class="title-content">
<form method="post" action="/settings/change-bio">
<div class="fl">Bio :</div><a href="" class="a fr" style="font-size:11px; text-decoration:underline;">BB-codes</a><br/>
<textarea maxlength="2000" onkeyup="textCounter(this,'counter',2000);" placeholder="User has not set any bio yet..." id="bio_message" name="bio_message" class="textarea" style="max-width:100%; max-height:160px; width:100%; height:160px;"><?php
$id = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8');
$SQL = "SELECT * FROM users WHERE id = '$id'";$result = $db->query($SQL);

/* numeric array */

/* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ($row["bio"]);

$result->free();
?></textarea>

<input type="submit" id="submit" name="submit" class="button" value="Set Bio" />
<input disabled  maxlength="3" size="3" value="2000" id="counter"> Characters remaining.
</form>
</div>
</div>

0

Решение

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector