0
私はユーザーのプロフィールページに表示されるバイオ(個人的なメッセージ)を持っています。私はBBCodeを追加しましたが([b]太字[/ b])、後でバイオを変更するために戻ってくるとHTMLタグが表示されます。また、HTMLタグとPHPタグを削除したいと思います。現時点では、誰かが自分のバイオにPHPコードを入力してテーブルを削除することができれば、それは重要です。 HERESに私のBBコード/変更のバイオコード:私は希望通りにバイオの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>
Er ...他の '/'をエスケープするのを忘れました。あなたは '\ /'でそれを行うべきです。 –
どこを指差していますか? bbコードはそれ自身で動作しますが、htmlやphpタグが許可されるため、怖いです。これは私のデータベースなどを削除する人々を得ることができます。 – Martin
OKだからPHPを許可しませんが、HTMLタグを表示したくない場合や、bbcodesでそれらを置き換えることができ、htmlをまったく許可しない場合 – Martin