如何用cookie防止用户的灌水回复?
今天没事瞎点 点到 凤凰网的一个链接了 http://yue.ifeng.com/y/detail_2011_12/07/11160676_0.shtml
评论框 内容是 :文明上网,登陆评论!
直接点按钮 js alert 请填写评论内容
再点一下文本框 文本框内容变成:请您先登录,再发布评论。
再点按钮 就提交了
打开的页面中的最新评论里就有了。然后我就复制了部分html
- HTML code
<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><meta http-equiv="Content-Type" content="text/html"; charset="utf-8"><body> <strong>)本文来(源gaodai#ma#com搞@@代~&码*网2</strong><pre>搞代gaodaima码
提交了就有了。
然后想到用curl post 模拟form的效果 但是没试成功 可能是 少了一些东西
- PHP code
<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->header("content-type:text/html;charset:utf-8;");/*chId 21202content mmmmmmmmmdocId 11160676docName 吴卓羲女友张馨予家中大尺度内衣自拍照火辣曝光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 发现有 userid 和 cmtids 没灌水一个 cmtids 就多一个
我清理cookie 刷新页面 cookie出现 userid = 1323533123324_5513
用上面的html提交一下 就出现 cmtids = 45583 再来一次 cmtids = 45583_45612
清理cookie 就没了
2.为啥要暂存这样的评论呢?既然是要登录后才能评论。。。js没判断好到最新评论页显示了个假的?
小弟才疏学浅,没事瞎捣鼓了一下,望各位大侠帮忙分析一下。。。嘎嘎
——解决方案——————–
刚去看了一下,还真是直接就提交了,这个网站也真是够宽松的……
如果 curl 直接提交不被接受的话,那很有可能服务器端还是有一些额外的要求(比如特定的 cookie 啥的),建议在网页提交的时候查看一下 HTTP 数据流,然后用 curl 模拟得充分一点,应该能搞定。