2012-04-28 19 views
-2

私は最近、myysql/phpを使用するニュースシステムを追加しました。これは完全に動作しますが、htmlを追加するといくつかのエラーが発生します。例えばphp mysql news error

私はそれが追加されますユーチューブの動画を追加した場合/または\

私は、以下のデータベースに格納するHTMLコードには何を変更できますか?これは、いくつかのストリップされていないスラッシュ以外の何物でもないかもしれない

+3

コードを読み取り可能にするようにフォーマットしてください。これは、あなたが助けを求めている人々に対する尊敬です。 –

答えて

2

これは、HTMLの後のように見える終わるものです。データを保存する前にスラッシュをエスケープしているようですが、データを表示するときにスラッシュを削除しているようには見えません。エコーたときに出て、次の試してみてください。

​​
+0

それはトリック、Joanthanをしました。ありがとうございました! – NickkN

+0

喜んでお手伝いします、@HilraJannar。あなたの新しいStackOverflow以降、あなたの問題を最も良く解決した答えを受け入れることをお勧めします。これはあなたと答えの著者の両方にもう少し評判を与えます。 – Sampson

+0

@HilraJannarはこの答えを使用しません。この男は手がかりがありません。 **あなたはデータベースからデータを取得するときにスラッシュを削除する必要はありません**。つまり、あなたのデータはどこか別の場所に置かれていることになります。そのため、コードに余分なスラッシュを加えないようにする必要があります。症状ではなく、死を治す。 –

1

あなたは、最も可能性の高い有効magic quotesを得ました。 もしそうなら、それに応じてstripslashesをチェックしてください。

$title = mysql_escape_string($_POST['title']);

注:

PHP_SELFはあなたべきhtmlentitesことやXSSの脆弱性である

function magic_quotes_strip($value){ 
    if(get_magic_quotes_gpc()){ 
     if(is_array($value)){ 
      return array_map('stripslashes',$value); 
     }else{ 
      return stripslashes($value); 
     } 
    }else{ 
     return $value; 
    } 
} 
//Strip all slashes from post array before handling 
$_POST = magic_quotes_strip($_POST); 

はその後、二重エスケープの心配することなく、通常のMySQLの入力前にエスケープを行いますそれだけを削除するaction=""

$_SESSION[usr_name]あなたの定数としてusr_nameを使用してそれが$_SESSION['usr_name']

+0

マジッククォートを使用している場合は、mysqlだけでなく、サイト。クッキー内の余分なスラッシュは、HTMLと同じくらい悪いです。あなたがリンクした記事はあなたにそう言います。 –

+0

これは明らかに、それに応じて 'stripslashesそれに応じて'入力を意味する** NOT!**出力は、私はそれを使って過去にホスティングしていました、そしてPOST/GETのすべての入力で単純なユーザ機能がありました。 ? –

+0

私はクッキーに言及します。 mysql文字列に向かうデータだけでなく、すべての壊れたデータからマジックスラッシュを取り除く必要があります。詳細については、http://php.net/manual/en/security.magicquotes.phpを参照してください。 –

0

理由もなく過度のスラッシュを追加し、あなたのコード内のいくつかの場所があるはずです。
この場所を見つけて、過度のスラッシングを取り除く必要があります。

これは、有名なmagic_quotes_gpc ini設定です。これを無効にするか、そうでない場合は、上のリンクのコードを使用して、構成ファイルの一番上にある不要なスラッシュを削除する必要があります。

これは愚かな役に立たない「究極のクリーンアップ機能」かもしれません。あなたはそれを見つけてそれから削り取らなければなりません。

これは、generate_wysiwyg()関数などの内部のどこかにある可能性があります。

覚えておいてください:stripslashes()を実行するだけでは、醜い松葉杖です。データを1か所で修正し、別の場所に残しておきます。