0

私のサイトのユーザーが入力して送信をクリックすると、mysql がこれをデータベースに挿入できる html フォームがあります。 jame's は jame\'s として表示されますが、これらのスラッシュは必要ありません。

なぜこれが起こっているのか、スラッシュを取り除く方法を知っている人はいますか? ありがとう

html:

<form action="includes/changebio.php" method="post" id="form1">         
 <textarea id="bio" style="width: 448px; 
    margin-top:3px;
    text-align:left;
    margin-left:-2px;
    height: 120px;
    resize: none; 
    border: hidden;" textarea name="bio" data-id="bio" maxlength="710"><?php echo htmlspecialchars($profile['bio']); ?></textarea>
<input type="image" src="assets/img/icons/save-edit.png"class="bio-submit" name="submit" value="submit" id="submit"/>
</form>

php:

<?php ob_start(); ?>
<?php
require_once("session.php"); 
require_once("functions.php");
require('_config/connection.php');
?>
<?php 
session_start();
include '_config/connection.php'; 
$bio = htmlspecialchars($_POST['bio']); 
$result = mysql_query("SELECT bio FROM ptb_profiles WHERE id=".$_SESSION['user_id']."");
if(!$result) 
{ 
echo "The username you entered does not exist"; 
} 
else 
if($bio!= mysql_result($result, 0)) 
{ 
echo ""; 
    $sql=mysql_query("UPDATE ptb_profiles SET bio ='".mysql_real_escape_string($bio)."' WHERE id=".$_SESSION['user_id'].""); 
}
header("Location: {$_SERVER['HTTP_REFERER']}");
?>
<?php ob_end_flush() ?>
4

3 に答える 3

1

サーバーはおそらくかなり古く、 MagicQuotesと呼ばれる古き良きPHPの「機能」が有効になっています。その機能はそもそも存在してはならないはずであり、あなたができる最善の考えはそれを無効にしようとすることです。

于 2013-03-05T12:14:42.557 に答える
0

使用するstrip_slashes

echo strip_slashes($string);

これを使って :

<?php echo htmlspecialchars(strip_slashes($profile['bio'])); ?>
于 2013-03-05T12:08:42.313 に答える
-1

あなたはあなたのSQLクエリにmysql_real_escape_string()これはそれが\になる前に\を入れることによって'マークをエスケープします

したがって、\'はデータベースに保存され、画面なしで出力を表示するときにスラッシュを削除する必要があるため、<?php echo stripslashes($profile['bio']); ?テキスト領域で>を実行します。

stripslashes()およびmysql_real_escape_string( )を参照してください

また、古いmysql_関数の代わりにPDOまたはmysqliを使用するように変換することも検討してください。これらは、現在非推奨になっています。

于 2013-03-05T12:12:19.773 に答える