2011-07-11 9 views
1

今、私は誰かがデータベースにコメントを投稿したときに電子メール通知をしようとしています。私はmysql_real_escape_string()を注射剤から守るために使用しています。私は電子メール通知で送られたときに、名前、電子メール、およびコメントからスラッシュを取り除こうとしています。電子メールシステムをテストするたびにエントリがないように、データベースエントリコードはコメントアウトされています。電子メールでStripslashes()が動作しない

メールは正しく送信されますが、stripslashes()は正しく機能していません。たとえば、メッセージが「Can not wait!」である場合電子メールには「コメント:待つことはできません!」と表示されます。これは私には奇妙です。なぜなら、私はコメントがページに表示されると、stripslashsesがうまく動作するからです。

私はstripslashes()を直接データベースから出さないデータに適用しないためですか?

$li = mysql_connect($dbHost, $dbUser, $dbPass) or die("Could not connect"); 
    mysql_select_db($dbDatabase, $li) or die ("could not select DB"); 

    $name = mysql_real_escape_string($HTTP_POST_VARS["name"]); 
    $email = mysql_real_escape_string($HTTP_POST_VARS["email"]); 
    $comment = mysql_real_escape_string($HTTP_POST_VARS["comment"]); 
    $date = Date("Y-m-d h:i:s"); 
    /* 
    $gb_query =  "insert into entries 
      values(0, '$name', '$email', '$comment', '$date')"; 

    mysql_query($gb_query); 
    $res = mysql_affected_rows(); 

    // See if insert was successful or not 
    if($res > 0) { 

    $ret_str="Your guestbook entry was successfully added!";*/ 
     $name2=stripslashes($name); 
     $email2=stripslashes($email); 
     $comment2=stipslashes($comment); 
     $subject = 'New Guestbook Entry Has been Added!'; 
     $message = "Name: $name2\nEmail: $email2\nComment: $comment2"; 
     $to = "[email protected]"; 
     mail($to, $subject, $message); 
     //header('Location: guestbook.php?ps=1'); 
    //exit(); // End the request 
    /* 
    } else { 
     $ret_str = "There was a problem with your guestbook entry. Please try again."; 
    } 

    // Append success/failure message 
    $gb_str .= "<span class=\"ret\">$ret_str</span><BR>";*/ 
    mysql_close(); 
+5

コードを掲載することはできますか? –

+0

申し訳ありません、私はそれを追加することを完全に忘れました。 – tim

+0

http://os-code-web.blogspot.com/2011/04/15-top-php-coding-tutorials-tips-and.html –

答えて

1

私の推測では、問題はmagic_quotesにあると考えられます。私はあなたのphp.iniを見て、あなたがそれをオフにすることができるかどうかを見てみましょう(あなたがSQLインジェクションを防ぐためにそれに依存していないとしている間は)。あなたはphp.iniのアクセスができない場合は、あなたがそれをテストし、それに応じて行動するためにPHPの方法を提供し、それをオフにすることが、なぜあなたが使用している、また

get_magic_quotes_gpcと呼ばれている(IEはmysql_real_escape_stringでそれをエスケープする前に、データ上にstripslashes) mysql_real_escape_stringデータベースに挿入されていないデータはありますか?後で挿入する場合は、mailコールの後までこれらのコールを移動します。

+0

変数が開始された直後にデータベースに追加されています。私は電子メールシステムをテストするたびに新しいエントリを追加したくないので、コメントアウトしています。また、通知を電子メールで送信する前にデータが実際にデータベースに入力されていることを確認したいので、データベースエントリの後にメールコールを入れます。 – tim

+0

あなたがそれをしたいなら、エスケープされている変数の代わりに 'mail'変数に' $ _POST'を使います。 –

+0

私はそれを考えなかった!ありがとうございました!! – tim

関連する問題