[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 01/15 08:32 / Filesize : 203 KB / Number-of Response : 829
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はID出して書き込みやがれ 114



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も上と同じだと思います

テーブルロックするタイミングとか問題なのかな?と思っているのですがよくわかりません






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<203KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef