Stripslashes()无法在电子邮件中使用

时间:2011-07-11 18:10:40

标签: php mysql

现在,每当有人提交评论进入数据库时​​,我都会尝试发送电子邮件通知。我正在使用mysql_real_escape_string()来防止注入,我试图在电子邮件通知中发送时删除名称,电子邮件和评论中的删除。数据库条目代码已注释掉,因为我不希望每次测试电子邮件系统时都有条目。

电子邮件发送得很好,但stripslashes()无效。例如,如果消息是“不能等待!”电子邮件将有“评论:不能等待!”。这对我来说很奇怪,因为当我在页面上显示注释时,striplashses工作正常。

这是因为我没有将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 = "chetg329@yahoo.com";
        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();

1 个答案:

答案 0 :(得分:1)

我的猜测是问题出在magic_quotes之内。我会看看你的php.ini,看看你是否可以关闭它(等待你不依赖它来阻止SQL注入)。如果你无法访问php.ini来关闭它PHP提供了一种方法供你测试它并采取相应的行动(在使用mysql_real_escape_string转义它之前对数据进行IE striplashes)它被称为get_magic_quotes_gpc

或者,为什么对未插入数据库的数据使用mysql_real_escape_string?如果您稍后插入,则将这些呼叫移至mail呼叫之后。