3

投稿スクリプトに少し問題があります。アポストロフィのようなフレーズを入力する場合を除いて、すべてがうまく機能します。たとえば、「He​​re's my title」が投稿されず、「Heres my title」が投稿されます。これがなぜなのかわかりません。たぶんストリップタグが本当にわからないのですが、どうすればいいですか? うまくいかないときは、一番下のエラーメッセージが表示されます

} else {
if(isset($_POST['what'])&&isset($_POST['when'])&&isset($_POST['where'])&&isset($_POST['details'])&&isset($_POST['sponsored_by'])&&isset($_POST['collegeId'])){

$what = nl2br(htmlspecialchars(strip_tags(stripslashes(trim($_POST['what'])))));

$where = nl2br(htmlspecialchars(strip_tags(stripslashes(trim($_POST['where'])))));

$when = nl2br(htmlspecialchars(strip_tags(stripslashes(trim($_POST['when'])))));

$sponsored_by = nl2br(htmlspecialchars(strip_tags(stripslashes(trim($_POST['sponsored_by'])))));

$details = nl2br(htmlspecialchars(strip_tags(stripslashes(trim($_POST['details'])))));
    $collegeId = intval($_POST["collegeId"]);
    if(isset($_SESSION['username'])){

$username = htmlspecialchars(strip_tags(stripslashes(trim(($_SESSION['username'])))));
        $query = "select id, Name from users where username='$username' and activated = 1";
        $doQuery = mysql_query($query);
        if(mysql_num_rows($doQuery)>0){
            $results = mysql_fetch_array($doQuery);
            $userName = $results['Name'];
            $email = $username;
            $id = $results['id'];
            $query = "insert into events values(NULL,$id,$collegeId,'$what','$when','$where','$details','$sponsored_by',NOW())";
            if(mysql_query($query)) header("Location: collegeInfo.php?college=$collegeId&message=added");
            else echo "Failed to create new Event!".$query;
4

1 に答える 1

6

クエリをエスケープしないでください。addslashes少なくともまたはを使用して、入力をサニタイズしてくださいmysql_real_escape_string。そのstripslashesため、行からバックスラッシュを削除してください。addslashesmysql クエリの前に削除する代わりに、それらを追加するために使用します。

そしておい、新しいphpバージョンでmysql_query非推奨です。準備されたステートメントでPDOを使用してください。

于 2012-09-12T01:14:54.810 に答える