- 1 名前:nobodyさん mailto:sage [2012/01/02(月) 02:03:25.50 ID:???]
- 質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り 次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 113 kohada.2ch.net/test/read.cgi/php/1322564127/ ◆質問用テンプレ 【OS名】CentOS 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL ImageMagick 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
- 348 名前:nobodyさん mailto:sage [2012/01/06(金) 19:01:56.16 ID:???]
- 自分が作ってるものが、ただのソースなのか
なんかのサービスを作ってると思うかで大分違う。
- 349 名前:nobodyさん [2012/01/06(金) 19:59:49.95 ID:ISncG55/]
- 【OS名】CentOS
【PHPのバージョン】5.3 【質問内容】 file_get_contents で任意のページを取得する際、 取得先のページがjavascriptの非同期通信でコンテンツを読みこんでいる場合に その非同期通信が終わった状態を読みこむにはどうすればいいのでしょうか? そのまま読み込むとコンテンツ内容が空のソースが返ってきてしまいます。
- 350 名前:nobodyさん mailto:sage [2012/01/06(金) 20:09:24.54 ID:???]
- >>349
空のソースでもユーザ側のブラウザが勝手に取りに行ってくれるんでない? phpで非同期通信コンテンツ読み込みたいなら対象のxml読み込めばいいんじゃない?
- 351 名前:nobodyさん mailto:sage [2012/01/06(金) 20:19:12.10 ID:???]
- >>349
そもそもfile_get_contents()でjavascriptが実行できるわけないでしょう どうしてもそれをやりたいならCentOSでブラウザを立ち上げてブラウザでソースを取得 方法はググったりググったりググッて >>350 意味が分からないというか、あなたが理解していない
- 352 名前:349 [2012/01/06(金) 20:19:50.10 ID:ISncG55/]
- >>350
取得したソースをいじくってから表示させたいのです。 取得対象はxmlではなく(たぶんphpで吐き出した)htmlです。
- 353 名前:349 mailto:sage [2012/01/06(金) 20:21:02.60 ID:???]
- >>351
curlを使っても無理ですか?
- 354 名前:nobodyさん mailto:sage [2012/01/06(金) 20:23:13.16 ID:???]
- >>353
クライアントサイドスクリプトってなーにってところからググッて
- 355 名前:nobodyさん mailto:sage [2012/01/06(金) 20:26:02.47 ID:???]
- ASP.NET最強
- 356 名前:nobodyさん mailto:sage [2012/01/06(金) 20:28:17.32 ID:???]
- >>354
そうですよね、言われてみれば。 ブラウザに組み込まれていない生のjavascriptっていうもんがあれば行けそうですが。 現状、方法はないということで了解しました。
- 357 名前:nobodyさん mailto:sage [2012/01/06(金) 20:31:44.53 ID:???]
- >>356
>現状、方法はないということで了解しました。 どういうことなの 方法は教えたし
- 358 名前:349 mailto:sage [2012/01/06(金) 20:36:54.90 ID:???]
- >>357
裏でブラウザを立ち上げるっていう方法しかない、それはいやだな、ということです。 あんまりカリカリしないでください。
- 359 名前:nobodyさん mailto:sage [2012/01/06(金) 20:44:28.89 ID:???]
- そか
じゃあ仕方ないな どうせ人のフンドシでスモウを取るような事を考えてたんだろ それ相応のスキルを身につけてから考えようぜ
- 360 名前:nobodyさん mailto:sage [2012/01/06(金) 20:58:58.95 ID:???]
- >>351
理解してないのはオマエだ
- 361 名前:nobodyさん mailto:sage [2012/01/06(金) 21:01:28.18 ID:???]
- 自身で非同期通信をやってみれば原理がわかるんじゃない
- 362 名前:nobodyさん mailto:sage [2012/01/06(金) 21:57:09.55 ID:???]
- >>360
お前だよ
- 363 名前:nobodyさん mailto:sage [2012/01/06(金) 22:14:44.34 ID:???]
- >>362
javascriptを実行するのはクライアントのブラウザだってわかってる?
- 364 名前:nobodyさん mailto:sage [2012/01/06(金) 22:18:39.17 ID:???]
- >>363
おまえ>>349の質問の意味わかってねーじゃん バカなの?ハゲなの?
- 365 名前:nobodyさん mailto:sage [2012/01/06(金) 22:29:23.31 ID:???]
- >>363
マジ痛すぎ
- 366 名前:nobodyさん mailto:sage [2012/01/06(金) 22:33:05.28 ID:???]
- >>364
とりあえず 「AjaxでxmlかJSONを読み込み表示する」 までやってみよう 話はそれからだ
- 367 名前:nobodyさん mailto:sage [2012/01/06(金) 22:40:28.35 ID:???]
- >>366
ほんと痛いなこいつ
- 368 名前:nobodyさん mailto:sage [2012/01/06(金) 22:42:16.99 ID:???]
- いつものおっさんじゃねーのw
- 369 名前:nobodyさん mailto:sage [2012/01/06(金) 22:46:18.19 ID:???]
- なるほど Ajax使ったことの無い人間がAjaxの質問に答えようとしたのか
- 370 名前:nobodyさん mailto:sage [2012/01/06(金) 22:51:49.81 ID:???]
- こっちが恥ずかしくなってきたw
なにこのなんともいえないキブンwww
- 371 名前:nobodyさん mailto:sage [2012/01/06(金) 23:36:53.54 ID:???]
- 年末から変なの住み着いてこのスレも死んだな
- 372 名前:nobodyさん mailto:sage [2012/01/06(金) 23:37:50.28 ID:???]
- >>368
いつものおっさんではない オレはまだ0x二十代だ いつものおっさんほど詳しくないし FWとかぜんぜん興味ない どちらかというと 乗り手を選ぶカリカリチューンド悪魔のZ的なスーパーハードコーデイングが大好きです >>370 大丈夫か? 顔が真っ赤だぞ 先に言っておくが つり宣言は敗北宣言だ もうちょっとがんばれ
- 373 名前:nobodyさん mailto:sage [2012/01/06(金) 23:44:21.72 ID:???]
- いや、トンチンカンで全く詳しくないからニートおっさんだと思われた訳で。
- 374 名前:nobodyさん mailto:sage [2012/01/06(金) 23:46:20.18 ID:???]
- まちがいないだろうな
かわいそうに思えてきた
- 375 名前:nobodyさん mailto:sage [2012/01/06(金) 23:48:58.30 ID:???]
- そもそも今の20代は悪魔のZなんてしらんしな
- 376 名前:nobodyさん mailto:sage [2012/01/06(金) 23:55:22.02 ID:???]
- ちなみに 我々はこのデバック方を"フィッシャープリンティング"と呼んでいる が IDが出ないスレではあまり意味が無い
おまえら 0x二十代の意味ばらすなよ
- 377 名前:nobodyさん [2012/01/07(土) 00:00:22.48 ID:CsZsKZfD]
- PHPでHadoopを作られた方いらっしゃいますか?
ちょっと難しくてお助けを・・・・。
- 378 名前:nobodyさん mailto:sage [2012/01/07(土) 00:05:54.48 ID:???]
- おっさんが来たか
- 379 名前:nobodyさん mailto:sage [2012/01/07(土) 00:13:50.68 ID:???]
- 姉さん出番ですよ
- 380 名前:nobodyさん mailto:sage [2012/01/07(土) 00:14:47.22 ID:???]
- ずっとはりついてるよおっさんは
- 381 名前:nobodyさん [2012/01/07(土) 00:41:56.83 ID:CsZsKZfD]
- PHPでFacebookを作られた方いらっしゃいますか?
ちょっと難しくてお助けを・・・・。
- 382 名前:nobodyさん mailto:sage [2012/01/07(土) 04:09:12.62 ID:???]
- 超初心者なんですが、Amazonの商品情報を取得したくて、PHPの入門関連の本を見ながら勉強してます。
www.bnote.net/php/pear/01_cache.shtml 本や上記サイトをみながらAmazonの特定商品の情報は取得できるようになったのですが 現状ですとphpファイルに取得したい商品のasianをいちいち書き込んで保存して xxxxxx/xxx.phpで表示しているので手間がかり使い勝手が悪いです。 xxxxxx/xxx.php?「商品のasian」' のようにして、末尾のasianを変えるだけで、PHPファイルをいちいち弄らずAmazonの任意の商品情報取得したいんですが、 どのようにすればいいですか? 宜しくお願いします。
- 383 名前:nobodyさん [2012/01/07(土) 04:09:55.44 ID:WBJb+YlP]
- すいません。あげ忘れました。
- 384 名前:nobodyさん mailto:sage [2012/01/07(土) 05:13:49.57 ID:???]
- >>382
jp.php.net/manual/ja/reserved.variables.get.php
- 385 名前:nobodyさん mailto:sage [2012/01/07(土) 10:13:48.06 ID:???]
- >>349
Prototype.js使ってさ、 001.html <script type="text/javascript"> function sendRequest(){ new Ajax.Updater($('date'),'hello.php');} window.onload=sendRequest; </script> <body> <span id="date">・・・</span><br/> </body> hello.php <?php $contents = @file_get_contents("somefile.html"); echo $contents; ?> somefile.html <html><head></head><body> 範馬勇次郎 </body></html> っで、001.htmlに範馬勇次郎って表示させる的なこと聞いてるの?
- 386 名前:nobodyさん mailto:sage [2012/01/07(土) 10:15:50.66 ID:???]
- GETを理解してないのにAmazonのAPIが使えたところが謎だけど
その本とやらを窓から投げて1から学習したほうが身につきそうだな
- 387 名前:nobodyさん mailto:sage [2012/01/07(土) 10:19:13.10 ID:???]
- >>385
質問よく読めよ しかもなんでprototype限定なんだよキョウビprototypeなんか使ってるやつほとんどいねーよ file_get_contents()でURL叩いてそのページにjavascriptの実行結果まで返して欲しいんだけどって質問だろうが それに対して>>351がfile_get_contents()でjavascriptを実行できるわけないだろって返してるし
- 388 名前:385 mailto:sage [2012/01/07(土) 10:19:30.15 ID:???]
- >>349
コンテンツ内容が空って、〜.phpがfile_get_contentsで〜.htmlを取得 するから、この〜.phpを非同期ができてないからエラーじゃないの? つまり、php側でなく、Javascript側でエラーが出てるはず。
- 389 名前:387 mailto:sage [2012/01/07(土) 10:21:33.27 ID:???]
- ミスった。388は385でなく387です。
- 390 名前:nobodyさん mailto:sage [2012/01/07(土) 10:22:57.30 ID:???]
- >>389
おまえなに成りすまししてんだよ しねよ
- 391 名前:nobodyさん mailto:sage [2012/01/07(土) 10:37:47.48 ID:???]
- イ`
- 392 名前:nobodyさん mailto:sage [2012/01/07(土) 10:42:39.51 ID:???]
- 的確な回答でてるしね>>351で
バックグラウンドでブラウザとPHPで連携するしかないでしょ PHPでjavascriptをパースして実行結果を導き出すって方法もあるかもしれないけど出口の見えない途方も無い作業になるし
- 393 名前:349 mailto:sage [2012/01/07(土) 10:57:05.96 ID:???]
- いろいろありがとうございます。
>>351さんに言われたとおりphpからjavascriptの非同期実行結果込みのページを取得しようとすること自体がそもそも間違っていたので こちらもjavascriptで取得することにしました。 取得先URLを準備して、iframeのsrcへ突っ込み、見事javascript実行結果状態のページがフレーム内に表示されました(当たり前ですが)。 さてこのiframe内のソースをphpに投げれば余裕じゃんと思ったのですが、別ドメインのiframe内ソースって取れないんですね。 ぬおー、なんだよ、目の前に表示されてるのにソース読めないとか、まじですか、というところで止まっています。 php関係ないですね。できそうでできないです。
- 394 名前:nobodyさん mailto:sage [2012/01/07(土) 11:11:59.39 ID:???]
- >>393
クロスドメインで簡単にゴニョゴニョできたらセキュリティ的にマズイでしょ 相当昔はできたけど今は簡単にはできないよ
- 395 名前:nobodyさん mailto:sage [2012/01/07(土) 11:20:47.88 ID:???]
- >>393
「攻撃対象サイトのAjaxが取りに言ってるxmlをfile_get_contentsで取得してphpで加工して自分サイトに表示させたい」 ということ?
- 396 名前:nobodyさん mailto:sage [2012/01/07(土) 11:21:10.64 ID:???]
- >>394
簡単にはできない、ということは、できるということですか? iframeを入れ子にして孫から呼ぶみたいな説明も見かけたんですが理解できなかったです。
- 397 名前:nobodyさん mailto:sage [2012/01/07(土) 11:23:45.08 ID:???]
- >>395
だからおまえはなんでxml限定なんだよ おまえが一から学習してこい レベルが低すぎておまえ会話になってねーんだよハゲ
- 398 名前:349 mailto:sage [2012/01/07(土) 11:24:00.96 ID:???]
- >>395
いえ、違います。あと攻撃でもないです。 取得対象のサイトは、コンテンツ部分を非同期で持って来ているんです。 普通にブラウザでアクセスすれば、loadingてきなのがクルクルしてて、1秒後くらいにコンテンツが表示されるっていうサイトです。 そのloadingが終わった状態をこちらで取得したいということです。
- 399 名前:nobodyさん mailto:sage [2012/01/07(土) 11:29:03.85 ID:???]
- >>398
ブラウザを操るか、ブラウザ動作を再現しろよ。確実にやるならJavaScriptが動作させられないと無理。
- 400 名前:nobodyさん mailto:sage [2012/01/07(土) 11:30:02.72 ID:???]
- >>398
対象のURL貼ったほうが早い
- 401 名前:349 mailto:sage [2012/01/07(土) 11:32:16.37 ID:???]
- >>399
やっぱりそうなりますか。
- 402 名前:nobodyさん mailto:sage [2012/01/07(土) 11:36:52.92 ID:???]
- >>397
非同期で取得する対象って XMLとJSON以外で一般的なものってありますか?
- 403 名前:nobodyさん mailto:sage [2012/01/07(土) 11:39:32.36 ID:???]
- >>402
馬鹿じゃないの テキストでもHTMLでもなんでもあるだろが おっさんもうおまえ人生詰んでるから吊ればいいと思うよ
- 404 名前:nobodyさん mailto:sage [2012/01/07(土) 11:42:04.39 ID:???]
- >>403
マジか 名前空間使わない非同期って大変そうなんだけど
- 405 名前:nobodyさん mailto:sage [2012/01/07(土) 11:43:32.26 ID:???]
- 名前空間がなにに使われてると思ってんの
ほんと頭悪すぎ
- 406 名前:nobodyさん mailto:sage [2012/01/07(土) 11:45:38.12 ID:???]
- 第18章 PHPUnit と Selenium
www.phpunit.de/manual/3.2/ja/selenium.html PHPUnit と Selenium を使用したテスト -- NetBeans IDE チュートリアル netbeans.org/kb/docs/php/phpunit_ja.html
- 407 名前:nobodyさん mailto:sage [2012/01/07(土) 11:46:28.07 ID:???]
- >>349
とりあえずクロスドメインをハックするのは諦めろ もしその読み込み先がおまえの所有だったら読み込み先に親フレームにソース渡すとか方法はあるし おまえが人のサイトをハックしようとしてるのはわかりきってるから方法があったとしても教えないよ
- 408 名前:349 mailto:sage [2012/01/07(土) 11:54:37.20 ID:???]
- >>406
うお、これすげえ。 ブラウザ上の挙動を再現できそうですね、これはイケそうです。 敷居が高そうですがやってみます。 >>406 別に悪いことしようとなんて思ってないですよ。 そもそもfile_get_contentsという関数がphpに用意されているじゃないですか。 たまたま対象が非同期ページだっただけで。
- 409 名前:349 mailto:sage [2012/01/07(土) 11:56:54.91 ID:???]
- 下の方のレスは>>407さん宛でした
- 410 名前:nobodyさん mailto:sage [2012/01/07(土) 12:06:10.89 ID:???]
- クロスサイトリクエストフォージェリだっけか 立派な攻撃だな
- 411 名前:nobodyさん mailto:sage [2012/01/07(土) 12:10:25.69 ID:???]
- >>408
おまえ自分がどんだけアホなこと言ってるか理解しておいたほうがいいぞ 人を殺して「だって包丁が売ってるじゃないですか、たまたま刺したのが人だっただけで」って言ってるようなもん しねよ
- 412 名前:349 mailto:sage [2012/01/07(土) 12:16:16.48 ID:???]
- >>411
じゃあfile_get_contentsってどういう時に使うんですか? 自サイトから引っ張ってくるなら意味ないじゃないですか。 俺はその包丁で野菜を切ろうとしてるだけです。
- 413 名前:nobodyさん mailto:sage [2012/01/07(土) 12:16:44.23 ID:???]
- さあ電波度が高まってまいりました
- 414 名前:nobodyさん mailto:sage [2012/01/07(土) 12:17:43.01 ID:???]
- >>412
他人の畑の野菜をな
- 415 名前:nobodyさん mailto:sage [2012/01/07(土) 12:20:07.13 ID:???]
- >>412
>>414 おまわりさんこっちです>>412こいつです!
- 416 名前:nobodyさん mailto:sage [2012/01/07(土) 12:23:26.07 ID:???]
- file_get_contentsでデータ持ってきたら逮捕w
- 417 名前:nobodyさん mailto:sage [2012/01/07(土) 12:23:50.00 ID:???]
- 岡崎図書館事件もびっくりだな
- 418 名前:nobodyさん mailto:sage [2012/01/07(土) 12:26:09.14 ID:???]
- おまえら中国人とかわらねぇ
- 419 名前:nobodyさん mailto:sage [2012/01/07(土) 12:29:52.34 ID:???]
- >>417
あれは可愛そうだた 営業力のない技術者はただの道具になるしかないらしい
- 420 名前:349 mailto:sage [2012/01/07(土) 12:31:05.88 ID:???]
- まじですか。
ブラウザでアクセスすれば普通に表示されるものをphpで取得することっておまわりさん呼ばれちゃうレベルなんですか? ブラウザでも取得してますが。 ま、それを二次利用してこっちが儲けようとしてるんなら叩かれてもしょうがないですけど、 非公開localhost俺サイト用なんで前向きに質問しました。 スレ汚しごめんなさい。>>406さん、あんがとやんした。
- 421 名前:nobodyさん mailto:sage [2012/01/07(土) 12:41:07.87 ID:???]
- いやおまわりさんはネタだろw
- 422 名前:nobodyさん mailto:sage [2012/01/07(土) 12:41:50.25 ID:???]
- JavaScript使うサイトは、クライアント側の負荷が高くなる訳で、HTMLだけのクローラーよりアクセス増やしにくいが。
- 423 名前:nobodyさん mailto:sage [2012/01/07(土) 12:48:49.79 ID:???]
- 人の畑の野菜を勝手に刻んで包丁はそのためにあるんでしょ?と開き直る小僧
プログラマにもなれずプログラマのフリをしてトンチンカンな事を垂れ流し続ける人生詰んだおっさん このスレレベル高すぎだろ
- 424 名前:nobodyさん mailto:sage [2012/01/07(土) 12:50:56.45 ID:???]
- どれがどれに対するツッコミかよくわからんから
誰か一連まとめてくれ
- 425 名前:nobodyさん mailto:sage [2012/01/07(土) 13:01:24.02 ID:???]
- >>424
荒らしVS暇人で遊んでただけだ 気にしなくていいと思う
- 426 名前:nobodyさん [2012/01/07(土) 13:17:09.06 ID:4WAxjW+f]
- 質問させてください
PHP + MySQLで初心者らしくWEB投票を作っています しかしながらF5とか投票ボタンを連打するといくつもカウントされてしまいます どうしたらF5攻撃を避けられるでしょうか?よろしくお願いします
- 427 名前:nobodyさん mailto:sage [2012/01/07(土) 13:27:40.64 ID:???]
- それだけきっちりカウントされてるならよくできてる証拠だ
- 428 名前:nobodyさん mailto:sage [2012/01/07(土) 13:30:43.65 ID:???]
- >>426
PHP + MySQLってことなんでその範囲で とりあえずMySQLは目的に関係ない PHPでCookieを使うかSESSIONを使え 1回目の投稿で投稿日時を保存 2回目の投稿の時に前の投稿から一定時間が経過していない場合はエラーを返すかDBに登録しない 教えてやったからコーラ買ってこいよ
- 429 名前:nobodyさん mailto:sage [2012/01/07(土) 13:32:01.36 ID:???]
- IPやクッキーや携帯固有番号とかつかえ
- 430 名前:nobodyさん mailto:sage [2012/01/07(土) 13:39:14.31 ID:???]
- >>384
ありがとうございます。
- 431 名前:nobodyさん mailto:sage [2012/01/07(土) 13:44:51.23 ID:???]
- このPHPソースで情報とれたぞ。
このサイトで実験した。 gogomo.site90.net/ <?php $ip = getenv("REMOTE_ADDR"); $host = getenv("REMOTE_HOST"); if ($host == null || $host == $ip) $host = gethostbyaddr($ip); echo "IP = $ip</br>\n"; echo "HOST = $host</br>\n"; ?>
- 432 名前:nobodyさん mailto:sage [2012/01/07(土) 13:53:19.27 ID:???]
- またおっさん頓珍漢なこと書いてるし
マジで頭おかしいんじゃねーの
- 433 名前:nobodyさん [2012/01/07(土) 14:06:41.50 ID:4WAxjW+f]
- >>428-429
ありがとうございます しかしながら投稿時間とIPアドレスを保存して一定時間経過してない場合はエラーを返して終了する処理をしても多重投票されてしまいます。 国内サーバーの場合は問題ないのですが海外サーバーの場合レスポンスが遅いのでそれが原因でしょうか?
- 434 名前:nobodyさん mailto:sage [2012/01/07(土) 14:13:32.73 ID:???]
- ソース晒したら問題に答えるよ
- 435 名前:nobodyさん mailto:sage [2012/01/07(土) 14:20:46.31 ID:???]
- ただのPC向けサイトだったら
session_start(); $delay = 120; // 120秒制限 if($_SERVER['REQUEST_TIME'] - $_SESSION['posttime'] < $delay) { echo '120秒の間隔をあけてくださいね'; exit; } // 初回もしくは120秒以上経過している $_SESSION['posttime'] = $_SERVER['REQUEST_TIME']; # ここでDBに投入 echo '投票しました'; こんだけ コーラ買ってこいよ
- 436 名前:nobodyさん mailto:sage [2012/01/07(土) 14:33:49.61 ID:???]
- sessionだとブラウザ再起動で再投票できてしまうかもな
ボット避けにimgタグでcookie食わせるのもいいかもね あと 焼きそばパン買って来い
- 437 名前:nobodyさん mailto:sage [2012/01/07(土) 14:37:49.94 ID:???]
- sessionを拒否してる場合は連投できるけど、初心者の習作だと思ってそこは説明しなかった
ややこしくなるだけだし
- 438 名前:nobodyさん mailto:sage [2012/01/07(土) 14:40:19.64 ID:???]
- ソース無い時点で丸投げか釣り
まともに答える必要はない
- 439 名前:nobodyさん [2012/01/07(土) 15:25:05.07 ID:4WAxjW+f]
- >>435
ありがとう。しかしながら >>436-437 なるほど、sessionは使ってはいけないのですね DBに投票時間とIPアドレス保存してそれをチェックが普通ですよね? >>438 恥ずかしながらソース晒します笑わないでください
- 440 名前:nobodyさん [2012/01/07(土) 15:27:18.81 ID:4WAxjW+f]
- ソースです
$regtime = time(); $ip = GETENV("REMOTE_ADDR"); # テーブルロック $sql = "LOCK TABLES touhyou WRITE"; $rst = mysql_query($sql,$con); # 多重投票チェック $delay = time() - 10; $sql = "SELECT * FROM touhyou WHERE (regtime > '$delay') AND (ip = '$ip')"; $rst = mysql_query($sql,$con); $rec = mysql_num_rows($rst); if($rec){ errorpage("多重投票禁止"); exit(); } # 投票 $sql = "UPDATE touhyou SET count = ifnull(count,0) + 1,regtime = '$regtime',ip = '$ip' WHERE (code = '$code')"; $rst = mysql_query($sql,$con); # テーブルロック解除 $sql = "UNLOCK TABLES"; $rst = mysql_query($sql,$con);
- 441 名前:nobodyさん mailto:sage [2012/01/07(土) 15:34:21.95 ID:???]
- >>440
438じゃないけど regtimeと$delayの比較が逆じゃない? あとそのロジックだと1codeにregtimeとIPが1つずつしかないから 違うIPの人が交互に投票すれば制限なくなりそうだけど
- 442 名前:nobodyさん mailto:sage [2012/01/07(土) 15:36:45.34 ID:???]
- あごめん、引っかかったらエラーだからいいのか。
- 443 名前:nobodyさん [2012/01/07(土) 15:47:58.06 ID:4WAxjW+f]
- >>441
ありがとうございます IPアドレスと投票時間だけのテーブルを別途作りました これで多重投票はできない? # 多重投票チェック $delay = time() - 10; $sql = "SELECT * FROM ipaddress WHERE (regtime > '$delay') AND (ip = '$ip')"; $rst = mysql_query($sql,$con); $rec = mysql_num_rows($rst); if($rec){ errorpage("多重投票禁止"); exit(); } # テーブルロック $sql = "LOCK TABLES touhyou WRITE"; $rst = mysql_query($sql,$con); # IPアドレス追加 $sql = "INSERT INTO ipaddress (regtime,ip) values ('$regtime','$ip')"; $rst = mysql_query($sql,$con); # 投票 $sql = "UPDATE touhyou SET count = ifnull(count,0) + 1 WHERE (code = '$code')"; $rst = mysql_query($sql,$con); # テーブルロック解除 $sql = "UNLOCK TABLES"; $rst = mysql_query($sql,$con);
- 444 名前:nobodyさん mailto:sage [2012/01/07(土) 15:54:48.70 ID:???]
- >>443
440のソースでやってみたらF5連打しても多重投票されなかったけど
- 445 名前:nobodyさん mailto:sage [2012/01/07(土) 15:56:38.23 ID:???]
- ipだけ記録して24時間毎にデータベースを初期化すれば良い。
- 446 名前:nobodyさん mailto:sage [2012/01/07(土) 15:57:13.89 ID:???]
- >>445
それだと初期化する1分前に投票して初期化後にまた投票できるぞ
- 447 名前:nobodyさん mailto:sage [2012/01/07(土) 16:00:43.57 ID:???]
- いつ初期化されるのか確認するやつもいないだろ。
サーバーの処理が少ない方がいいんだ。 1分後に投票できたとしても次にできるまで24時間かかる。大した不正にならない。
- 448 名前:nobodyさん [2012/01/07(土) 16:33:03.74 ID:4WAxjW+f]
- >>444
はい自宅の環境でも問題なかったです しかしながら海外のレスポンス遅いサーバーでやると多重投票されてしまうのです >>445-447も上と同じだと思います テーブルロックするタイミングとか問題なのかな?と思っているのですがよくわかりません
|

|