【PHP】下らねぇ質問はID出して書き込みやがれ 114
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/01/02(月) 02:03:25.50ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 113
http://kohada.2ch.net/test/read.cgi/php/1322564127/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0352349
2012/01/06(金) 20:19:50.10ID:ISncG55/取得したソースをいじくってから表示させたいのです。
取得対象はxmlではなく(たぶんphpで吐き出した)htmlです。
0355nobodyさん
2012/01/06(金) 20:26:02.47ID:???0356nobodyさん
2012/01/06(金) 20:28:17.32ID:???そうですよね、言われてみれば。
ブラウザに組み込まれていない生のjavascriptっていうもんがあれば行けそうですが。
現状、方法はないということで了解しました。
0358349
2012/01/06(金) 20:36:54.90ID:???裏でブラウザを立ち上げるっていう方法しかない、それはいやだな、ということです。
あんまりカリカリしないでください。
0359nobodyさん
2012/01/06(金) 20:44:28.89ID:???じゃあ仕方ないな
どうせ人のフンドシでスモウを取るような事を考えてたんだろ
それ相応のスキルを身につけてから考えようぜ
0361nobodyさん
2012/01/06(金) 21:01:28.18ID:???0368nobodyさん
2012/01/06(金) 22:42:16.99ID:???0369nobodyさん
2012/01/06(金) 22:46:18.19ID:???0370nobodyさん
2012/01/06(金) 22:51:49.81ID:???なにこのなんともいえないキブンwww
0371nobodyさん
2012/01/06(金) 23:36:53.54ID:???0372nobodyさん
2012/01/06(金) 23:37:50.28ID:???いつものおっさんではない オレはまだ0x二十代だ
いつものおっさんほど詳しくないし FWとかぜんぜん興味ない
どちらかというと 乗り手を選ぶカリカリチューンド悪魔のZ的なスーパーハードコーデイングが大好きです
>>370
大丈夫か? 顔が真っ赤だぞ
先に言っておくが つり宣言は敗北宣言だ もうちょっとがんばれ
0373nobodyさん
2012/01/06(金) 23:44:21.72ID:???0374nobodyさん
2012/01/06(金) 23:46:20.18ID:???かわいそうに思えてきた
0375nobodyさん
2012/01/06(金) 23:48:58.30ID:???0376nobodyさん
2012/01/06(金) 23:55:22.02ID:???おまえら 0x二十代の意味ばらすなよ
0377nobodyさん
2012/01/07(土) 00:00:22.48ID:CsZsKZfDちょっと難しくてお助けを・・・・。
0378nobodyさん
2012/01/07(土) 00:05:54.48ID:???0379nobodyさん
2012/01/07(土) 00:13:50.68ID:???0380nobodyさん
2012/01/07(土) 00:14:47.22ID:???0381nobodyさん
2012/01/07(土) 00:41:56.83ID:CsZsKZfDちょっと難しくてお助けを・・・・。
0382nobodyさん
2012/01/07(土) 04:09:12.62ID:???http://www.bnote.net/php/pear/01_cache.shtml
本や上記サイトをみながらAmazonの特定商品の情報は取得できるようになったのですが
現状ですとphpファイルに取得したい商品のasianをいちいち書き込んで保存して
http://xxxxxx/xxx.phpで表示しているので手間がかり使い勝手が悪いです。
http://xxxxxx/xxx.php?「商品のasian」'
のようにして、末尾のasianを変えるだけで、PHPファイルをいちいち弄らずAmazonの任意の商品情報取得したいんですが、
どのようにすればいいですか?
宜しくお願いします。
0383nobodyさん
2012/01/07(土) 04:09:55.44ID:WBJb+YlP0384nobodyさん
2012/01/07(土) 05:13:49.57ID:???http://jp.php.net/manual/ja/reserved.variables.get.php
0385nobodyさん
2012/01/07(土) 10:13:48.06ID:???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に範馬勇次郎って表示させる的なこと聞いてるの?
0386nobodyさん
2012/01/07(土) 10:15:50.66ID:???その本とやらを窓から投げて1から学習したほうが身につきそうだな
0387nobodyさん
2012/01/07(土) 10:19:13.10ID:???質問よく読めよ
しかもなんでprototype限定なんだよキョウビprototypeなんか使ってるやつほとんどいねーよ
file_get_contents()でURL叩いてそのページにjavascriptの実行結果まで返して欲しいんだけどって質問だろうが
それに対して>>351がfile_get_contents()でjavascriptを実行できるわけないだろって返してるし
0388385
2012/01/07(土) 10:19:30.15ID:???コンテンツ内容が空って、〜.phpがfile_get_contentsで〜.htmlを取得
するから、この〜.phpを非同期ができてないからエラーじゃないの?
つまり、php側でなく、Javascript側でエラーが出てるはず。
0389387
2012/01/07(土) 10:21:33.27ID:???0391nobodyさん
2012/01/07(土) 10:37:47.48ID:???0392nobodyさん
2012/01/07(土) 10:42:39.51ID:???バックグラウンドでブラウザとPHPで連携するしかないでしょ
PHPでjavascriptをパースして実行結果を導き出すって方法もあるかもしれないけど出口の見えない途方も無い作業になるし
0393349
2012/01/07(土) 10:57:05.96ID:???>>351さんに言われたとおりphpからjavascriptの非同期実行結果込みのページを取得しようとすること自体がそもそも間違っていたので
こちらもjavascriptで取得することにしました。
取得先URLを準備して、iframeのsrcへ突っ込み、見事javascript実行結果状態のページがフレーム内に表示されました(当たり前ですが)。
さてこのiframe内のソースをphpに投げれば余裕じゃんと思ったのですが、別ドメインのiframe内ソースって取れないんですね。
ぬおー、なんだよ、目の前に表示されてるのにソース読めないとか、まじですか、というところで止まっています。
php関係ないですね。できそうでできないです。
0394nobodyさん
2012/01/07(土) 11:11:59.39ID:???クロスドメインで簡単にゴニョゴニョできたらセキュリティ的にマズイでしょ
相当昔はできたけど今は簡単にはできないよ
0395nobodyさん
2012/01/07(土) 11:20:47.88ID:???「攻撃対象サイトのAjaxが取りに言ってるxmlをfile_get_contentsで取得してphpで加工して自分サイトに表示させたい」
ということ?
0396nobodyさん
2012/01/07(土) 11:21:10.64ID:???簡単にはできない、ということは、できるということですか?
iframeを入れ子にして孫から呼ぶみたいな説明も見かけたんですが理解できなかったです。
0397nobodyさん
2012/01/07(土) 11:23:45.08ID:???だからおまえはなんでxml限定なんだよ
おまえが一から学習してこい
レベルが低すぎておまえ会話になってねーんだよハゲ
0398349
2012/01/07(土) 11:24:00.96ID:???いえ、違います。あと攻撃でもないです。
取得対象のサイトは、コンテンツ部分を非同期で持って来ているんです。
普通にブラウザでアクセスすれば、loadingてきなのがクルクルしてて、1秒後くらいにコンテンツが表示されるっていうサイトです。
そのloadingが終わった状態をこちらで取得したいということです。
0399nobodyさん
2012/01/07(土) 11:29:03.85ID:???ブラウザを操るか、ブラウザ動作を再現しろよ。確実にやるならJavaScriptが動作させられないと無理。
0403nobodyさん
2012/01/07(土) 11:39:32.36ID:???馬鹿じゃないの
テキストでもHTMLでもなんでもあるだろが
おっさんもうおまえ人生詰んでるから吊ればいいと思うよ
0405nobodyさん
2012/01/07(土) 11:43:32.26ID:???ほんと頭悪すぎ
0406nobodyさん
2012/01/07(土) 11:45:38.12ID:???http://www.phpunit.de/manual/3.2/ja/selenium.html
PHPUnit と Selenium を使用したテスト -- NetBeans IDE チュートリアル
http://netbeans.org/kb/docs/php/phpunit_ja.html
0407nobodyさん
2012/01/07(土) 11:46:28.07ID:???とりあえずクロスドメインをハックするのは諦めろ
もしその読み込み先がおまえの所有だったら読み込み先に親フレームにソース渡すとか方法はあるし
おまえが人のサイトをハックしようとしてるのはわかりきってるから方法があったとしても教えないよ
0408349
2012/01/07(土) 11:54:37.20ID:???うお、これすげえ。
ブラウザ上の挙動を再現できそうですね、これはイケそうです。
敷居が高そうですがやってみます。
>>406
別に悪いことしようとなんて思ってないですよ。
そもそもfile_get_contentsという関数がphpに用意されているじゃないですか。
たまたま対象が非同期ページだっただけで。
0410nobodyさん
2012/01/07(土) 12:06:10.89ID:???0411nobodyさん
2012/01/07(土) 12:10:25.69ID:???おまえ自分がどんだけアホなこと言ってるか理解しておいたほうがいいぞ
人を殺して「だって包丁が売ってるじゃないですか、たまたま刺したのが人だっただけで」って言ってるようなもん
しねよ
0412349
2012/01/07(土) 12:16:16.48ID:???じゃあfile_get_contentsってどういう時に使うんですか?
自サイトから引っ張ってくるなら意味ないじゃないですか。
俺はその包丁で野菜を切ろうとしてるだけです。
0413nobodyさん
2012/01/07(土) 12:16:44.23ID:???0416nobodyさん
2012/01/07(土) 12:23:26.07ID:???0417nobodyさん
2012/01/07(土) 12:23:50.00ID:???0418nobodyさん
2012/01/07(土) 12:26:09.14ID:???0420349
2012/01/07(土) 12:31:05.88ID:???ブラウザでアクセスすれば普通に表示されるものをphpで取得することっておまわりさん呼ばれちゃうレベルなんですか?
ブラウザでも取得してますが。
ま、それを二次利用してこっちが儲けようとしてるんなら叩かれてもしょうがないですけど、
非公開localhost俺サイト用なんで前向きに質問しました。
スレ汚しごめんなさい。>>406さん、あんがとやんした。
0421nobodyさん
2012/01/07(土) 12:41:07.87ID:???0422nobodyさん
2012/01/07(土) 12:41:50.25ID:???0423nobodyさん
2012/01/07(土) 12:48:49.79ID:???プログラマにもなれずプログラマのフリをしてトンチンカンな事を垂れ流し続ける人生詰んだおっさん
このスレレベル高すぎだろ
0424nobodyさん
2012/01/07(土) 12:50:56.45ID:???誰か一連まとめてくれ
0426nobodyさん
2012/01/07(土) 13:17:09.06ID:4WAxjW+fPHP + MySQLで初心者らしくWEB投票を作っています
しかしながらF5とか投票ボタンを連打するといくつもカウントされてしまいます
どうしたらF5攻撃を避けられるでしょうか?よろしくお願いします
0427nobodyさん
2012/01/07(土) 13:27:40.64ID:???0428nobodyさん
2012/01/07(土) 13:30:43.65ID:???PHP + MySQLってことなんでその範囲で
とりあえずMySQLは目的に関係ない
PHPでCookieを使うかSESSIONを使え
1回目の投稿で投稿日時を保存
2回目の投稿の時に前の投稿から一定時間が経過していない場合はエラーを返すかDBに登録しない
教えてやったからコーラ買ってこいよ
0429nobodyさん
2012/01/07(土) 13:32:01.36ID:???0431nobodyさん
2012/01/07(土) 13:44:51.23ID:???このサイトで実験した。
http://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";
?>
0432nobodyさん
2012/01/07(土) 13:53:19.27ID:???マジで頭おかしいんじゃねーの
0433nobodyさん
2012/01/07(土) 14:06:41.50ID:4WAxjW+fありがとうございます
しかしながら投稿時間とIPアドレスを保存して一定時間経過してない場合はエラーを返して終了する処理をしても多重投票されてしまいます。
国内サーバーの場合は問題ないのですが海外サーバーの場合レスポンスが遅いのでそれが原因でしょうか?
0434nobodyさん
2012/01/07(土) 14:13:32.73ID:???0435nobodyさん
2012/01/07(土) 14:20:46.31ID:???session_start();
$delay = 120; // 120秒制限
if($_SERVER['REQUEST_TIME'] - $_SESSION['posttime'] < $delay) {
echo '120秒の間隔をあけてくださいね';
exit;
}
// 初回もしくは120秒以上経過している
$_SESSION['posttime'] = $_SERVER['REQUEST_TIME'];
# ここでDBに投入
echo '投票しました';
こんだけ
コーラ買ってこいよ
0436nobodyさん
2012/01/07(土) 14:33:49.61ID:???ボット避けにimgタグでcookie食わせるのもいいかもね
あと 焼きそばパン買って来い
0437nobodyさん
2012/01/07(土) 14:37:49.94ID:???ややこしくなるだけだし
0438nobodyさん
2012/01/07(土) 14:40:19.64ID:???まともに答える必要はない
0439nobodyさん
2012/01/07(土) 15:25:05.07ID:4WAxjW+fありがとう。しかしながら
>>436-437
なるほど、sessionは使ってはいけないのですね
DBに投票時間とIPアドレス保存してそれをチェックが普通ですよね?
>>438
恥ずかしながらソース晒します笑わないでください
0440nobodyさん
2012/01/07(土) 15:27:18.81ID: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);
0441nobodyさん
2012/01/07(土) 15:34:21.95ID:???438じゃないけど
regtimeと$delayの比較が逆じゃない?
あとそのロジックだと1codeにregtimeとIPが1つずつしかないから
違うIPの人が交互に投票すれば制限なくなりそうだけど
0442nobodyさん
2012/01/07(土) 15:36:45.34ID:???0443nobodyさん
2012/01/07(土) 15:47:58.06ID:4WAxjW+fありがとうございます
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);
0445nobodyさん
2012/01/07(土) 15:56:38.23ID:???0447nobodyさん
2012/01/07(土) 16:00:43.57ID:???サーバーの処理が少ない方がいいんだ。
1分後に投票できたとしても次にできるまで24時間かかる。大した不正にならない。
0448nobodyさん
2012/01/07(土) 16:33:03.74ID:4WAxjW+fはい自宅の環境でも問題なかったです
しかしながら海外のレスポンス遅いサーバーでやると多重投票されてしまうのです
>>445-447も上と同じだと思います
テーブルロックするタイミングとか問題なのかな?と思っているのですがよくわかりません
0450nobodyさん
2012/01/07(土) 17:18:09.00ID:???テーブルを
ip(IP入れる) post(投票IDを入れる)
ipがプライマリーキー
# 投票
INSERT IGNORE INTO tableName (ip,post) VALUES ($ip, $postid);
# 投票結果集計
SELECT COUNT(ip) AS n FROM tableName WHERE post=?;
これだけでいいじゃん
0451nobodyさん
2012/01/07(土) 17:28:01.88ID:???1つのテーブルで何回も投票イベントを管理する場合はプライマリキーを組み合わせたり工夫すること
さっさとコーラ買ってこいよ
さっきから待ってんだけど
■ このスレッドは過去ログ倉庫に格納されています