ホームページ >バックエンド開発 >PHPチュートリアル >Cookie を使用してユーザーによるスパム返信を防ぐ方法

Cookie を使用してユーザーによるスパム返信を防ぐ方法

WBOY
WBOYオリジナル
2016-06-13 13:40:521194ブラウズ

ユーザーがスパム返信を送信するのを防ぐために Cookie を使用するにはどうすればよいですか?
今日は何もすることがなく、ifeng.com のリンクをクリックしました http://yue.ifeng.com/y/detail_2011_12/07/11160676_0.shtml

コメント ボックスの内容とは: 礼儀正しい方法でインターネットをサーフィンし、コメントするにはログインしてください!

ボタンをクリックして直接コメント内容を入力してください。

テキストボックスの内容は次のようになります。 コメントを投稿する前に、まずログインしてください。

もう一度ボタンをクリックして送信します。

開いたページに最新のコメントが表示されます。次に、html

HTML コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8">
</head>
<body>
<form method="post" target='_blank' action="http://comment.ifeng.com/post.php" id="commentForm" name="commentForm">
                                <textarea onclick="changeBox();" class="" cols="50" rows="10" id="content" name="content">bbbbbbbbbbb</textarea>
                                <input type="hidden" value="11160676" name="docId">
                                <input type="hidden" value="吴卓羲女友张馨予家中大尺度内衣自拍照火辣曝光" name="docName">
                                <input type="hidden" value="http://yue.ifeng.com/y/detail_2011_12/07/11160676_0.shtml" name="docUrl">
                                <input type="hidden" value="21202" name="chId">
<input type="submit" style="margin-left:20px; display:inline" value="xxxxxxxxxxxx" >
</form>
</body>
</html>


の一部をコピーして送信しました。
次に、curl post を使用してフォームの効果をシミュレートしようと考えましたが、何かが欠けていたのかもしれません。
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
header("content-type:text/html;charset:utf-8;");
/*
chId    21202
content    mmmmmmmmm
docId    11160676
docName    吴卓羲女友张馨予家中大尺度内衣自拍照火辣曝光
docUrl    http://yue.ifeng.com/y/detail_2011_12/07/11160676_0.shtml
*/
  $url = "http://comment.ifeng.com/post.php";
   //$url = "http://localhost/php/index.php";
  $data = array(
    'content'=>'xxxxxxxxxxoooooooooooo',
    'docId'=>11160676,
    'docName'=>'吴卓羲女友张馨予家中大尺度内衣自拍照火辣曝光',
    'docUrl'=>'http://yue.ifeng.com/y/detail_2011_12/07/11160676_0.shtml',
    'chId'=>21202
);
 
$ret = http_post($url,$data);
var_dump($ret);

function http_post($url, $data)
 {
     $ch = curl_init();        
     curl_setopt($ch, CURLOPT_HEADER,1);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, 1);
     $data = http_build_query($data);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
     
     curl_setopt($ch, CURLOPT_REFERER, "http://yue.ifeng.com/y/detail_2011_12/07/11160676_0.shtml");
     $cookie = "userid=1323532473389_2814";
     curl_setopt($ch, CURLOPT_COOKIE, $cookie);
     
     $rs = curl_exec($ch);
     curl_close($ch);
     return $rs;
 }



私が遭遇した問題は次のとおりです:
1. コメント内の人のアバターは、他のものとは異なり、灰色です。ブラウザを変更してリンクを開いたところ、スプラッシュの内容が表示されませんでした。次に、firebug の firecookie プラグインを使用して Cookie を確認したところ、スプラッシュがなければユーザー ID と cmtid があることがわかりました。その他の cmtid

http://comment.ifeng.com/view.php?doc_url=http%3A%2F%2Fyue.ifeng.com%2Fy%2Fdetail_2011_12%2F07%2F11160676_0.shtml&doc_name=%E5%90 %B4%E5%8D%93%E7%BE%B2%E5 %A5%B3%E5%8F%8B%E5%BC%A0%E9%A6%A8%E4%BA%88%E5%AE%B6 %E4%B8%AD%E5%A4%A7%E5%B0 %BA%E5%BA%A6%E5%86%85%E8%A1%A3%E8%87%AA%E6%8B%8D%E7 %85%A7%E7%81%AB%E8%BE%A3 %E6%9B%9D%E5%85%89&ishot=no

Cookie をクリアしてページを更新すると、Cookie が userid = と表示されます。 1323533123324_5513
上記の html で送信すると、cmtids = 45583 が表示されます。cmtids = 45583_45612
Cookie を消去すると、削除されます

2. このようなコメントを一時的に保存するのはなぜですか?コメントするにはログインが必要なので。 。 。 js が最新のコメント ページに偽のコメント ページを表示するほど十分に判断できなかったのでしょうか?

私には才能も知識もほとんどないので、少しいじってみましたが、皆さんに分析を手伝っていただければ幸いです。 。 。ガガ

-----解決策---------
先ほど確認してみたところ、直接送信されていました。この Web サイトは非常に緩いものです...

curl の直接送信が受け入れられない場合は、サーバー側に追加の要件がまだある可能性が非常に高いです。 (たとえば、特定の Cookie など)、Web ページを送信するときに HTTP データ フローを確認し、curl を使用して完全にシミュレートすることをお勧めします。そうすれば、それを処理できるはずです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。