【PHP】下らねぇ質問はID出して書き込みやがれ 114
ちなみに俺も
>>662 やってみた
俺は並列処理の事なんか分かっていないので、このやり方で合っているか分からないけれど
<?phpの後に、$time = time();
最終行に、echo 'time:' . (time() - $time) . 'sec' . PHP_EOL;を付けてみた
2chの改行規制で出力形式変えるけど結果は
child: 0 child: 1 child: 2
child: 3 child: 4 child: 5
child: 6 child: 7 child: 8
child: 9
time:10sec
parent: 0 parent: 1 parent: 2
parent: 3 parent: 4 parent: 5
parent: 6 parent: 7 parent: 8
parent: 9
wait begin.
wait end.
time:10sec
となった
>>676 http://www.php.net/manual/ja/pcntl.installation.php にはCLI版も可能って書いてるんじゃないの?
>>675 ちなみに自分はcentOSです
680 :
nobodyさん :2012/01/12(木) 14:01:29.80 ID:QAUYYhrI
phpとmysqlでカウンターが作りたいのですが 書き込むときの排他制御はどのようにやるのでしょうか?
もういい加減ニートのおっさんは飽きた
683 :
679 :2012/01/12(木) 14:02:52.80 ID:???
書き忘れたけど、この出力結果みると並列処理ってされてない・・・んだよね?
基本的にはマルチスレッドはサポートされてないだろ。 レンタルサーバーとかでは。 自宅で一人で使う目的だったらマルチスレッドをONにしてコンパイルすればいい。 しかしソースコードに汎用性が無くなる。 Curlをつかっとけ。5.3か5.2から標準で並列に使える。
forkだからマルチスレッドの話ではないでしょ。
688 :
679 :2012/01/12(木) 14:27:53.78 ID:???
>>682 には悪いけど、俺にはせっかくの機会だから色々試してみた
>>662 を
if ($pid == 0) {
system('php forkc1.php');
system('php forkc2.php');
}
に変えて、それぞれに
<?php
$time = time();
$i;
for ($i=0; $i < 10; $i++) {
printf("child1: %d\n", $i);
sleep(1);
}
echo 'c1-time:' . (time() - $time) . 'sec' . PHP_EOL;
のように書いた
実行結果は c1: 0 c1: 1 c1: 2 c1: 3 c1: 4 c1: 5 c1: 6 c1: 7 c1: 8 c1: 9 c1-time:10sec c2: 0 c2: 1 c2: 2 c2: 3 c2: 4 c2: 5 c2: 6 c2: 7 c2: 8 c2: 9 c2-time:10sec p-time:20sec parent: 0 parent: 1 parent: 2 parent: 3 parent: 4 parent: 5 parent: 6 parent: 7 parent: 8 parent: 9 wait begin. wait end. p-time:20sec となった で、実際の時計を見ていたら、20秒後に表示された system('php forkc3.php'); も加えたら実際の時計では30秒後に表示された これってどういうこと? 並列処理されていないってことだよね?
なんでそんなトンチンカンなことが平気で言えるのか system('php forkc1.php'); system('php forkc2.php'); この時点で気付けよ
ん?
30秒かかるのは当たり前か・・・笑
>>679 は10秒で済んでるから親プロセスと子プロセスはちゃんと並列処理されてるってことだね
自分の
>>688 の書き方が悪いだけか
この流れの話は、親プロセスから子プロセスを複数作成し、それを同時に実行
つまり3つの子プロセスがあれば4つとも10秒後に終わらせるということだよね?
となると実装法が思いつかないけど、pcntl_fork()っていうのを3回呼び出せばいいってことじゃないかな?
分からん
>>690 ごめん、投稿した後すぐに気がついた(苦笑
>>691 system('php forkc1.php &');
と、バックグラウンドプロセスにすればよろしい。
プロセスの終了待ち処理を入れる必要があるけど。
>>694 なるほど
実はまだ挑戦してて(笑
一度やり始めたら意地でもとなってしまってw
$pid[$i] = pcntl_fork();等と複数回呼び出して、
その後system()を呼び出すとかやってみたのですが30秒かかったりで
バックグラウンドプロセスという発想はなかったです
今から外に出ないといけないんですが、最後にちょっと試してみます
>>694 アハハ、今
>>688 のコードにて
if ($pid == 0) {
system('php forkc1.php &');
system('php forkc2.php &');
system('php forkc3.php &');
}
としましたが
今度は31秒かかってしまいましたw
どこがおかしいのか分かりませんが、また帰ってからやってみます
時間のムダ。
pcntl_fork()の話してんのになんでsystem()になってんの。
アホですから
>>698 たぶん
>>686 のWindowsでは動かないというのをみたからじゃないのかな。
ほんとに動かないか知らないけど
702 :
nobodyさん :2012/01/12(木) 15:50:09.93 ID:at33kcZ9
ちょっとしたポータルサイトや、管理機能付きサイトを作るとき、 CMSを使うか、フレームワーク使うかどっちがよろしいですかね・・・。
>>702 その文章だけを読んで「ちょっとしたポータルサイト」がどれほどの規模のものを指しているのか
わかる人は少ないだろう
ヤフーくらい
>>702 自分がやりやすい方でいいんじゃないすか。
どっちも使えるようになるまで時間かかる どっちも詳しくない私は 使わない方がやりやすい。
PHPが出来るならWPはすぐに使えると思うが
そもそもなんでこのスレで質問するのか
確かに、なんでここで聞いたの?
質問するスレだろ何が駄目なんだ
CMSを使うかフレームワークを使うかっていう質問はここじゃねぇと思うが
質問するスレすらわからん馬鹿はポータルサイトなんか作れんよ
PHPのフレームワークスレって確かあったよな
715 :
679 :2012/01/12(木) 22:21:38.91 ID:???
ギブ・・・
俺には自力では無理でした
>>699 の言うようにアホですな
プログラム板にでも行ってきます
>>697 なんで人の質問を俺がやってるのか分からんが、それが出来たら楽に処理できるような事も
出てくるかなと思ってやってみたんだけど
>>698 いや、だって引数とって一気に別ファイルのスクリプト実行するんでしょ?
system()じゃないの?
>>700 ごめんどういうこと?
$php fork-test.php > /dev/null
とかってこと?
同時に実行されていくということは
c1:0
c2:0
c1:1
c2:1
のように出てくるのかなとか思ってたんだけど違うん?
>>716 バックグラウンドプロセスの標準出力を捨てろってこと。
>>716 一気に別ファイルのスクリプトを実行するのにforkではダメだと思った理由を書いてみ
>>718 ごめん、分かりませんw
forkって子プロセスを作成->親プロセスは待機->子プロセス終了->親プロセス実行
って動作だよね?
で、子プロセスは親プロセスのコピーであると
だから元々親プロセスの時点で実行されていたり、格納していた変数の値とかは子プロセスも保持していると
ま、自分の分からない所は子プロセスを複数作成するにはPHPだとpcntl_fork()をその回数実行すると
ただ、自分がやったのでは
$pid1=pcntl_fork();
$pid2=pcntl_fork();
それぞれにて上記のようなfor()を使うと一緒に実行されるんじゃなくて、直列(逐次)処理になってて「う〜ん」と
別ファイルのスクリプトを実行するのにPCNTL関数内にそんな感じの関数もないし、
データベースなどから設定値を取得してきて、そこから得てきたそれぞれの設定値を渡すとなると
system()かなと考えて・・・
例えばどんな風に書けばいいんですかね?
>>719 ちなみに
>>662 におけるsleepをタイムスライス放棄のみのコードに変更した場合の出力結果例はこんな感じ。
child1: 0
parent: 0
parent: 1
child1: 1
parent: 2
parent: 3
child1: 2
parent: 4
parent: 5
child1: 3
parent: 6
child1: 4
parent: 7
child1: 5
parent: 8
child1: 6
parent: 9
wait begin.
child1: 7
child1: 8
child1: 9
wait end.
あとID出せよカス
722 :
nobodyさん :2012/01/12(木) 23:11:37.74 ID:QxDXzJq0
タイムスライス放棄のみのコードって何だと思いググってました(苦笑
sleep(-1)ってのが出てきましたがこれの事ですかね?
俺は
>>667 のようにはならないんですが、OSは何ですか?
つまり、
>>662 のようなfor()文使った場合は、子プロセス->親プロセス->子プロセス->親プロセス->
という挙動をすると言うことですか?
しかし俺全然だめだなぁ・・・
phpファイルで、以下のようにjava scriptのファイルを読み込んでいるのですが、 <script type="text/javascript" src="test.js"> test.jsを変更しても反映されないことがあります。 ブラウザがキャッシュか何かをしているのでしょうか? 回避策とかありましたらご教授お願いします。
>>723 日付が変わってればキャッシュを破棄しそうなもんだけど。
プロキシ的なものが挟まってたりしない?
一応試せることとしては、たとえばIEならCtrl+F5ですべて再読み込みする
>>723 ブラウザ特有の現象かもしれないから後でちゃんと自分で調べるとして
とりあえずそういう時は応急処置にファイル名に適当な文字列を追加するもんだ
echo '<script type="text/javascript" src="test.js?' . md5(microtime(true)) . '">';
なんでmd5かけるの?
バカだからに決まってるじゃん
ドットが入るのが嫌だっただけ かけたくないならかけなくていい
ドット・・・?
小数点
くだらんとこに突っ込むなよバカども
しかしまぁ俺プログラマーとか言って
>>725 みたいなクソコード書いてるのもひどい話だな
言ってることは間違ってないけどこれはないな >echo '<script type="text/javascript" src="test.js?' . md5(microtime(true)) . '">'; time()とかuniqid()で事足りる >md5(microtime(true)) ない
>適当な文字列を追加する これが実現できればなんでもいいだろ 何を拘ってるんだ?パフォーマンス?(笑) そんなミジンコみたいなところでケチつけるなレスの無駄使い
>>733 > time()とかuniqid()で事足りる
えっ
> >md5(microtime(true))
> ない
こっちの方がまだマシ
必死だなw
特定ユーザに対してユニークであればいいんだから、ミリセカンド精度で事足りると思うよ。
>>738 みたいな意味のないレスをする人がどう考えてるのかさっぱりわからんけど。
そんなに悔しかったか ごめんよw
必死すぎw
理解できる範囲の話になったとたん沸くやつってなんなの
…ねないの?
なんでPHPでするのか不思議。
>>742 全くだな
自分につっこむ機会があると思うと頑張ってつっかかってきちゃうやつワロスwwww
上級者からすればそんなこまけーこたぁどうでもいいんだよって感じだがな
ニートのおっさんだろどうせ糞コード晒してんのは 上級者() 早く吊れよ
747 :
nobodyさん :2012/01/13(金) 02:51:11.50 ID:KkkOzRWt
NATポートマッピングを自動でやる方法を教えてください。 Bitcometみたいに。
PHP使ってるって言ったら ヴォエエエエエエ ブヒョー コーヒー吹かれた
>>747 uPnPってわけでもなさそうにみえるが、NAPTを自動でやりたいってこと?
なら、ネットワーク越しに操作できるルータを手に入れる必要がありそう。
そんな話じゃないよ!ってことならBitcometの動作をもっとよく見ること。
ニートのおっさんだろどうせ煽ってんのは 低級者乙 早く吊れよ
おっさんだってPHPでできなさそうなことを考えるのに必死なんだよ
forkの人はム板に行って静かになった。彼に説明する人が他にもっといればよかったのに
PHPで並行処理wwwwwwwwwwwwwwwwwwwwwwwwwwww。 無理ぽ。
最近あれだな
>>747 みたいなやつ多いな
同一人物だとは思うけど
俺が課題出してやるから解決してみろ的な
ほんと消えてくれないかな
>>753 forkとストリームソケット使えばどうにかなるだろ
てか少し前にそれ系のレスあるから読んでみ
756 :
755 :2012/01/13(金) 03:40:02.10 ID:???
>>753 補足だけど、5.1系のセマフォがバグありだったから気をつけて。
いまさらあえて5.1使うこともないだろうけど、割と最近のRHELまでは5.1系だった気がするので遭遇することもあるかもしれない
>>755 あなたの言うように、
forkとストリームソケット使えば「遊び程度」ではどうにかなるだろうね。
しかし、商売用には素直にマルチドレッド言語を使ったほうがいい。
デフォルトで並行できるので開発スピードとパフォーマンスが
「圧倒的に」優れる。forkくんの質問と回答のあまりの馬鹿馬鹿しさに
気持ち悪い。
PHPで並行処理が無理だというから、それの返事だったんだが、並行処理はできるけど遊び程度だという風に話をずらされても困る パフォーマンスについてはまったくもってそのとおり。ただ、それらを同じ土俵にあげること自体が間違えているよね。 開発スピードについては比較対象に依存する。マルチプロセス処理を記述する場合に圧倒的に開発スピードが優れる言語は何? マルチスレッド言語とやらが何を指しているのかわからないが、たとえばCLRで提供されているワーカースレッドのようなものを指している? ちょっと内容が漠然としているように思うよ。
当たり前話を、ドヤ顔で言ってて恥ずかしくない上に、気持ち悪いとか言ってる人がいるよ。
phpでできないこともあるんだね〜。
761 :
nobodyさん :2012/01/13(金) 09:21:03.11 ID:1Ih2hdXs
新規にポータルサイトを開発しようと思ってます。 管理機能とかもついてます。 作成の仕方として以下の3つの方法が浮かびました。 フレームワークを使って作成する。(codeigniter) CMSを使って作成する。(MT or WP) フレームワークにCMSプラグインを入れて作成する。 どれがいいでしょうか?
好きにしろ
CMSは非プログラマ向けで、FWはプログラマ向けなだけなの。 悩むほどの話じゃないし、どれつかえばいいかえらべないならけんさくしていちばんうえつかえばいいだけ
765 :
587 :2012/01/13(金) 16:04:33.77 ID:???
皆さんレス、本当にありがとうございます。 しばらく勉強して、なんとか14日以前の日付を10日前で表示するところまで辿り着いてきましたが、なぜか1969年になってしまいます。。 $ptimeはUNIXTIMEではなく1323413498等という数字が入っているのですが、 これを一度UNIXTIMEにするには、どのように記述すればいいでしょうか? ここがうまくいけば、なんとかなりそうです。 よろしくお願いしますm(_ _)m ↓年だけおかしくなっている現状です。 $post_date = date("y/m/d", $ptime); $limit = 60 * 60 * 24 * 14; // 過去14日よりも前のものだった場合、 if($_SERVER['REQUEST_TIME'] - $post_date > $limit) { $post_date -= 60 * 60 * 24 * 10; // 表示は10日前の日付にする。 } $date = date(y/'m/d', $post_date); ※$dateで表示させています。
766 :
587 :2012/01/13(金) 16:09:06.03 ID:???
↑ すいません、よく確認したら、表示されている日付が20日ぐらい前になっていました(^^; とりあえず$ptimeはUNIXTIMEにすれば解決できるのかと思います。 度々すいませんが、よろしくお願いします。。
なんか面倒な事してるな 俺はこっち使ってる strtotime("- 10 day",time())
12日前のは12日前と表示されることになるだろうけど、それも含めて特殊な事情?
769 :
765 :2012/01/13(金) 17:03:53.19 ID:???
はい、特殊な事情で、13日以前は、そのままで大丈夫なんです。(^_^)
770 :
765 :2012/01/13(金) 17:05:44.03 ID:???
>>767 その記述だと、全体的にかわりますか??(^_^;)
$_SERVER['REQUEST_TIME'] - $ptime じゃねーの? んで、 $ptime -= 60 * 60 * 24 * 10; $date = date(y/'m/d', $ptime);
773 :
nobodyさん :2012/01/13(金) 18:13:51.83 ID:f/pZY+bx
すみません。質問お願いします。 smarty + pear::pager を使って、情報検索を作っています。 文字コードはUTF-8 携帯用なので、session.use_trans_sid = 1 にしてURLでセッション管理をしていますが、 PHPSESSIDが正しく付かない時があります。 {foreach item=row from=$List} ・・・ <a href="detail.php?ID={$row.ID}">詳細へ</a></p> ・・・ {/foreach} で1ページ10行ぐらい表示するのですが、 10行に1行ぐらいの割合で <a href="detail.php?ID=005&PHPSESSID=○○○">となるはずが、 <a href="detail.php?ID=005"?PHPSESSID=○○○>となってしまい、 正しくリンクされません。 検索内容によって10行目だったり、5行目だったりと 規則性が無くなぜこうなっているかわかりません。 すみませんが、よろしくお願いいたします。
$Listをvar_dumpしてみれば?
775 :
nobodyさん :2012/01/13(金) 21:03:38.69 ID:f/pZY+bx
>>774 レスありがとうございます。
var_dumpすると IDは通常の数字で int(5) 等です。
List.IDには特に問題ないようです。
あと、var_dumpしただけで問題の症状が10行目だったのが18行目に変わったりしてます。
なんでなんだろ・・・?
また謎なこと言ってるな foreachしてるその配列をdumpして問題ないか確認しろってことでしょ IDは問題ないようです、とか意味がわからん foreachから/foreachまでの記述に問題がないならそのループさせてる配列以外問題になる箇所ないじゃん そして配列がおかしかったらその配列を作ってるロジックがおかしいって特定できるでしょ
&を&と書いてみてくれ
&を&&と書いてみてくれ
&を&amp;(半角)と書いてみてくれ
&amp;(半角)
あ、まて SESSION IDを自動的にリンクに付加するようになってるのか それ、自動でやらせないでアプリケーション側で実装したほうがいいぞ それが解決策になる
あ、まて SESSION IDを自動的にリンクに付加するようになってるのか それ、自動でやらせないでアプリケーション側で実装したほうがいいぞ それが解決策になる
使用するデータの型は同じで特に問題はないのに 自動付加するにせよ特定の箇所だけおかしくなるってのは考えられないね 確率や回数で処理を変えるとか妙なことやってない限り ><a href="detail.php?ID=005"?PHPSESSID=○○○> こうなるのも謎 最悪>の前に"が入るよね {$row}"{ID}としてるわけじゃないし
&amp;(半角)バカスw
>>779 &を&にしてくれっていいたいのか?
みなまで言わんでいいです
787 :
nobodyさん :2012/01/13(金) 22:51:52.05 ID:WYF6z6mt
PECLにmemcacheとmemcachedって2つあるようですが、 これらの違いはなんなんでしょうか? Web上ではmemcacheの方が記述が多いので利用されているんだと思うのですが、 具体的な性能の違いとかあったら教えて頂きたいです
>>790 For those confuse about the memcached extension and the memcache extension, the short story is that both of them are clients of memcached server, and the memcached extension offer more features than the memcache extension.
せめてここ貼ってやれよ。
まぁユーザノートは主観だけどね でも俺もその意見には同意する
>>787 一般的に皆memcacheの方を使ってるはずだ
そうだろ?
いや待て memcachedよりAPCだろ APCの方が高速だし PHP使いはmemcachedよりAPCのはずだ
なんでAPCと比較したんだろ
KVSとしての側面ももってるから。 てかしらないならレスすんなよもう
>>795 前俺も記事見たことあるよ
この2つを比較してるやつ
まぁ高速化の意味だと思うけど
>>752 答えたかったけど、俺知らないし
PHPerはその手の知識持ってる人は少ないんじゃない?
Webコンテンツは作れても、そういうこと作る機会ってないだろうから
memcachedやAPCが必要なほどのシステムを組んでるのか? 一般人が使う分にはヒープでいいだろ
APCのほうがお手軽だしAPCで十分だな ロードバランサなんかでアプリケーションサーバを冗長化してる場合とか どのマシンに振られるかわからない時はキャッシュサーバーとしてmemcachedだな 1回目のアクセスはAサーバ2回目のサクセスはBサーバとかなるとキャッシュ見失うからな ほとんど場合は1台で動かしてるんだろうしAPCつことけばいいでしょ
>>801 分散オブジェクトは使わないのですか?
「どのマシンに振られるかわからない」とか考える必要ないので
使ったほういいですよ。
新キャラ 分散オブジェクト厨
>>801 性能の悪いアプリケーションサーバーですね。
キャッシュもできないのですか?
何を使ってらっしゃるのですか?
おまえはいいから早く吊れよ 人生詰んでるのに往生際悪すぎだぞ
朝までがんばれ
>>805 そう。現在、PHPでC言語を実装するプロジェクトが
このスレで始まった。君も参加するかい?
>>807 負け犬みたいだね
>>806 あおってるつもりの内容が的外れなのはわざとなの?それだけ教えてほしい
>>809 JavaScriptで動くOSを参考にしてみたらどうだい
>>810 あおるつもりもなく、本気だよ。
>>811 ありがとう。
最初の目標はPHPでC言語を実装すること。
2番目の目標はPHPで実装したC言語(最初の目標)でさらに
PHPを実装すること。
3番目の目標は、PHPで実装したC言語(最初)でさらに実装した
PHP(2番目)でさらにC言語を実装すること。
4番目の目標は3番目で実装あれたC言語でJava仮想マシンを作ること。
かまってちゃんウザイ ブログの宣伝1度だけ許してやるから消えてくれ
>>801 はぁ? ということは
phpって分散トランザクションもできないの?
終わっているね・・・
さっさと吊れ
まぁ端から静観してる俺にとっては最近の話題は面白いけどね CMSかFWかどっちがいいかのようなものから、セッションがどうたらとかよりも fork()だとかAPCとかやや上のレベルの話題だからね CMSとかFWとかそこそこハックしてきたけど、まずfork()なんてお目にかからないからね まぁ、当たり前ではあるけれど memcachedは簡単な実装は見かけたけど、APCは見たことないと思う
>>817 フレームワークを使ってバッチ処理を書くときに役立つかもよ
819 :
587 :2012/01/14(土) 17:30:34.28 ID:???
みなさんレスをありがとうございます。 根本的に私の説明不足すぎでした。 そのために度々スレを使ってしまい、すいませんでした。 ▼大元の相談内容 掲示板等で、$dateを使って日付を表示させているのですが、 特殊な事情があって、過去14日よりも前のものだった場合、 表示は10日前で表示したいのです。 例:1月1日投稿されたもの→5日に閲覧した場合は、そのまま投稿日時は1月1日。20日に閲覧すると投稿日時は1月10日で表示される。 ▼現状 $date = date("y/m/d", $ptime); // $ptime はUNIXTIME (1323413498等という形で保存されています) echo <<<EOM で $date を記述して日付(2011/12/22等という形)を表示しています。 私が勉強不足のため、皆さんのレスを参考にしていじっていたら、ごちゃごちゃになってしまいました(^^; 単純に UNIXTIMEである$ptimeを相談内容の処理をして$dateとして日付を表示できるようにする記述を再度教えていただけると助かります。 すいませんが、よろしくお願いしますm(_ _)m
日付が14日よりも前かどうかの判断をしたい 10日前の日付を取得したい というだけだと思うんだけど。
どうせSEO対策だろ。
1万人くらい使う掲示板を作りたいと思います
10万犬くらい使う掲示板を作りたいと思います
825 :
nobodyさん :2012/01/15(日) 00:09:47.66 ID:0R9yJU6W
分散オブジェクトを作りたいと思います。
826 :
819 :2012/01/15(日) 04:06:00.99 ID:???
>>820 レスありがとうございます。
そうなんですよね。。
UNIXTIMEが、ごっちゃになってしまって、恥ずかしながら私の初歩的な知識では??になってしまいまして。
小さなお店のホームページをやっているのですが、写真をメールで載せるphpがありまして、
度々の更新ができない時にも日付だけフォローできるようにしたいのです。
ID出せ
要するに客を騙したいってことだな
829 :
nobodyさん :2012/01/15(日) 11:18:33.29 ID:5+piCYsS
830 :
nobodyさん :2012/01/15(日) 11:25:08.31 ID:5+piCYsS
>>829 の続きですが、
クッキー「accounts.google.com」の「GALX」の値がクセモノで、
このアクセスするたびに変わる値がサインイン時に必要なのですが、
この値の制御という利用の仕方がうまくいかず、どうしてもサインイン
できません
831 :
nobodyさん :2012/01/15(日) 11:32:23.84 ID:5+piCYsS
×この値の制御という利用の仕方がうまくいかず ○この値の制御というか利用の仕方がうまくいかず
>submitボタンを押すだけでサインインできるようになるのが理想です いろいろやばいだろ クライアント(自分のPCにApache入れる)ならともかくサーバじゃやらんほうがいいぞ でクライアントだと普通にブラウザのオートコンプリートでよくね?となるわけだが もしサーバでやるとしたらフィッシング詐欺幇助になるので教えてあげない
クッキーが必要なんだったら普通にブラウザと同じように対話式でやり取りすりゃいいんじゃないの 方法はググったほうが確実に早い
835 :
nobodyさん :2012/01/15(日) 12:34:59.06 ID:5+piCYsS
>>832 外部からはアクセスできない自分のPC+Apacheの環境で使います。
さすがにレン鯖等、インターネットで不特定多数に公開しているところには置きません。
>オートコンプリート
>OAuth
GMailのアカウントが5つぐらいあるんですよ。
本アド、サイトを2つ運営していてその連絡用アド、他、実家連絡用。
いちいちWebブラウザにID入れるの面倒だし、メーラー使うと
誰かがPCをいじった時に簡単に読まれてしまう。
だから(普通の人はまさかPCにApche+phpが入っているとは思わないだろうから)
自分だけわかるphpで簡単に複数アドにアクセスしたいな、と。
836 :
nobodyさん :2012/01/15(日) 12:45:04.85 ID:5+piCYsS
phpプログラムは好きで初心者ながらちょくちょく作ってるんです。 ただ、クッキーが必要なプログラムは今までその必要がなかったから作ったことが無い。 だからクッキーは苦手・わからないんです。 で、ちょっと作ってみたのがこれです。急ごしらえで下手ですが。。 (作った当時はクッキーが必要だと思わなかったのでPOSTのみで作ろうとしていました)↓
837 :
nobodyさん :2012/01/15(日) 12:47:26.29 ID:5+piCYsS
<?php
$a=file_get_contents("
http://accounts.google.com/ServiceLogin?service=mail ");
preg_match("/name=\"GALX\"[^v]+value=\"[^\"]+\"/is",$a,$match);
$match[0] = ereg_replace("name=\"GALX\"[^v]+value=\"", "", $match[0]);
$match[0] = ereg_replace("\"$", "", $match[0]);
$test='
<!DOCTYPE html>
<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>Google サインイン</title>
</head>
<body>
<form id="gaia_loginform" action="
https://accounts.google.com/ServiceLoginAuth " method="post" name="a" id="a">
<input type="hidden" name="continue" id="continue" value="
http://www.google.co.jp/ ">
<input type="hidden" name="hl" id="hl" value="ja">
<input type="hidden" name="GALX" value="'.$match[0].'">
<input type="hidden" id="pstMsg" name="pstMsg" value="1">
<input type="hidden" spellcheck="false" name="Email" id="Email" value="ここにID">
<input type="hidden" name="Passwd" id="Passwd" value="ここにパス">
<input type="submit" class="g-button g-button-submit" name="signIn" id="signIn" value="アカaサインイン">
<input type="checkbox" name="PersistentCookie" id="PersistentCookie" value="yes" checked="checked">
5つのアドを一箇所でうければいいだけじゃね gmailは複数アドを統合できるじゃん
839 :
nobodyさん :2012/01/15(日) 12:48:23.76 ID:5+piCYsS
</form>
<form id="gaia_loginform" action="
https://accounts.google.com/ServiceLoginAuth " method="post" name="b" id="b">
<input type="hidden" name="continue" id="continue" value="
http://www.google.co.jp/ ">
<input type="hidden" name="hl" id="hl" value="ja">
<input type="hidden" name="GALX" value="'.$match[0].'">
<input type="hidden" id="pstMsg" name="pstMsg" value="1">
<input type="hidden" spellcheck="false" name="Email" id="Email" value="ここにID">
<input type="hidden" name="Passwd" id="Passwd" value="ここにパス">
<input type="submit" class="g-button g-button-submit" name="signIn" id="signIn" value="アカbサインイン">
<input type="checkbox" name="PersistentCookie" id="PersistentCookie" value="yes" checked="checked">
<input type="hidden" name="rmShown" value="1">
</form>
</body></html>
';
exit($test);
>>838 >gmailは複数アドを統合できるじゃん
そういえばそうか!
わざわざphpでアクセスしないでそうすればいいのか(汗
そもそも外部のフォームからのPOSTでログイン受け付けてくれるのか疑問 それを弾くくらいのセキュリティ対策はしてありそうだけど
googleさんつよすぎわろた
843 :
nobodyさん :2012/01/15(日) 12:59:28.34 ID:5+piCYsS
>>841 >外部のフォームからのPOSTでログイン受け付けてくれるのか疑問
自分は楽天でショッピングするのですが、楽天(https)だとPOSTで大丈夫なんですよ。
それ用のサインインphpプログラムも作りましたし・・・。
だからGMailサインインphpプログラムも楽天サインインphpプログラムと
同じindex.phpページにまとめて、1つのindex.phpページからなんにでもサインインできる、
そんな index.phpページを作ろうと思っていたのです
844 :
nobodyさん :2012/01/15(日) 13:21:27.83 ID:5+piCYsS
楽天()とGoogleのセキュリティを同列に扱うとかw
>>843 サーバー側から見ればクライアントがPHPだろうがブラウザだろうが関係ないさ
HTTP通信をトレースしてどんなものを送受信しているか確認して真似るのが近道よ
なんのためにGoogleはAPI提供してんだよ 素直にそれ使えよ
>>843 楽天なんて、セキュリティのセの字も無いサイトだぞ。
>>ID:5+piCYsS あぁ、なるほどね そのフォームのページ見てみたけど、 その手のはおそらく無理だよ 自分もGoogleではないけど昔同じような事をしてね 理由はそのうち試行錯誤していく内に分かると思うけど、 そのGoogleのフォームじゃかなり難しい ま、素直に諦めるべきだね 他の人の意見に従って俺は知らないけどAPIとか統合とか使った方がいい 今から1週間粘っても、ここで質問しても無理だと思う
850 :
nobodyさん :2012/01/15(日) 14:05:55.91 ID:5+piCYsS
ぶっちゃけ楽天はアドレスバーに
https:// 〜 ?u=ID&p=PASS を追加すればいいだけだからなぁw
で本題。
なんでクッキーGALXの値が必要だと判ったかというと、
準備としてWebブラウザを閉じてクッキー削除。
WebブラウザでGMail(
https://accounts.google.com/ServiceLogin?service=mail )にアクセス。
ソースを見てGALXの値を調べる。
下記のphpプログラムにGALXの値とIDとPASSをべた書き。
同じWebブラウザでphp実行。
以上でサインインできるからです。
(WebブラウザのクッキーGALXの値とPOSTのGALXの値を比較しているみたいです。)
851 :
nobodyさん :2012/01/15(日) 14:07:18.18 ID:5+piCYsS
<?php
$test='
<!DOCTYPE html>
<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>Google アカウント</title>
</head>
<body>
<form id="gaia_loginform" action="
https://accounts.google.com/ServiceLoginAuth " method="post" name="a" id="a">
<input type="hidden" name="continue" id="continue" value="
http://www.google.co.jp/ ">
<input type="hidden" name="hl" id="hl" value="ja">
<input type="hidden" name="GALX" value="ここにソースのGALXの値をコピペ">
<input type="hidden" id="pstMsg" name="pstMsg" value="1">
<input type="hidden" spellcheck="false" name="Email" id="Email" value="ここにID">
<input type="hidden" name="Passwd" id="Passwd" value="ここにPASS">
<input type="submit" id="signIn" value="ログイン">
<input type="checkbox" name="PersistentCookie" id="PersistentCookie" value="yes" checked="checked">
<input type="hidden" name="rmShown" value="1">
</form>
</body></html>
';
exit($test);
852 :
nobodyさん :2012/01/15(日) 14:15:46.68 ID:5+piCYsS
>>850 ×(WebブラウザのクッキーGALXの値とPOSTのGALXの値を比較しているみたいです。)
○(WebブラウザのクッキーGALXの値とPOSTのGALXの値が同一であるか比較しているみたいです。)
同一であればサインインできます
おまえもういいよ 的確な回答は複数出たんだからブログでやってくれ
おそらく俺が書いた記事を書いている最中に
>>850-851 を書いていたんだと思うけど、
マジでGoogleは不可能に近い
よほどのハッカー/クラッカーでなきゃ無理
フォームの構造からまず問題だけど、おそらくサーバ側にも細工してる
他のサイトならともかくGoogleはやっぱ一筋縄ではいかない
まぁ、もし君がそれでもやり遂げたときは堂々と公表してよ
尊敬する
855 :
nobodyさん :2012/01/15(日) 14:25:47.11 ID:5+piCYsS
1ヶ月ぐらい悩むと、それまで不可能と思われたプログラムが できてしまうものです。経験的にですが。 「PHP Google ログイン」で検索すると成功者もいるみたい?ですので、 チャレンジチャレンジでがんばってみます
856 :
nobodyさん :2012/01/15(日) 17:56:13.63 ID:oiGEKKkd
stripslashes 「クォートされた文字列のクォート部分を取り除く」 とマニュアルにありましたが、これの意味はバックスラッシュを 取り除くってことですか? クォートするとかがよく分かりません、教えてください。
これなんかの犯罪に使おうとしてないか?
>>856 指摘の通りクォート部分ではなくエスケープ部分とするべきだな
ちなみに
文字列 -> クォート -> "文字列"
859 :
nobodyさん :2012/01/15(日) 18:40:06.41 ID:oiGEKKkd
犯罪と聞いて飛んできました
>>860 ポリの方ですか?
このスレに怪しい人物がいるようです
そいうや、オレの変態の友達が、php勉強して、児童の裸写真集める掲示板 作ってるが、未だに逮捕されてないぜ。
「俺の友達が〜」という話の85%は、その人本人の話。 おまわりさん、この人です。
するどすぎわろた
おいポリ、こいつじゃ
このスレから逮捕者が出るとはなあ
868 :
862 :2012/01/15(日) 23:39:27.33 ID:???
オレのじゃねーよ、友人の話。 オレの変態の友人は未成年だから捕まっても実名報道されない って強気な態度です。友人の口癖は「来いよアグネス」
任意同行→事情聴取→家宅捜査→PC押収 まずは交友関係をじっくり説明することになるんだろうな 児童ポルノ禁止法違反で検挙とか恥ずかしすぎるw
>>862 本人だろうが、友人だろうが関係なく重要参考人として警察んとこ行くべきだな
>>862 が未成年なのはガチなようだな
この慌てようwwwww
>>868 実名報道されなかったとしても家族にはばれるけどね。
学生なら学校にも、バイトしてるならバイト先にも。
873 :
nobodyさん :2012/01/16(月) 02:25:18.83 ID:OeE4uuA7
<img src="thumbnail.php?image=1234&w=300&h=200" />
上記のようなリクエストを出すと、
DBに保存した画像テーブルからIDが1234のフィールドを参照し画像パスを取得して、
そのパスの画像を横幅300px、縦幅200pxで表示するというスクリプトがあるのですが、
毎回アクセスするたびに生成しては重いということで
1度リクエストがあった画像は所定のディレクトリへリクエストされたサイズで保存し、
そこに保存されている画像であれば生成せずに、それにアクセスさせることにしました。
この分岐(生成画像があるか?)をさせるにはどういった方法がありますでしょうか?
僕が思いつける範囲は以下のような処理です。
例えば、上記の例でいうと生成画像のファイル名は
image1234_w300_h200.jpg
というようにして、
1.<img src="
http://example.com/img/image1234_w300_h200.jpg " />
として.htaccess でファイルが存在しなければ生成プログラムにリライトする
もしくは、
2.最初と同じく<img src="thumbnail.php?image=1234&w=300&h=200" />としてアクセスさせ、
PHP内で
http://example.com/img/image1234_w300_h200.jpg が存在するか判断して、
存在すればそのままそれを返す、存在しなければ生成して表示させる、
上記のような方法が考えられますが、
他になにか良い方法などがあればご教示お願いできますでしょうか?
どっちでも問題ないよ。好きなほうでやりんさい。
876 :
873 :2012/01/16(月) 02:35:01.56 ID:OeE4uuA7
ありがとうございます。 フレームワークを使っていて1アクセスでも負担が大きいので なるべく画像に直接アクセスして完結させたいのですが、 1.の方法だと、生成画像があればPHPにアクセスせずに済むので こっちのほうが軽いですよね? それと、図々しいかもしれませんが、 1.の方法の.htaccess はどういう書き方をしたらいいか教えていただけませんでしょうか・・・。
>>873 毎回同じ処理をするならPHPのようなインタプリタ言語をやめる。
画像へアクセスするたびにインタプリタが走るのは完全にムダで
ユーザーがかわいそう。
>>876 RewriteCond %{REQUEST_FILENAME} !-f
PHPの質問じゃないけどね!
879 :
nobodyさん :2012/01/16(月) 17:40:20.70 ID:l7Fd5fgU
880 :
nobodyさん :2012/01/16(月) 20:49:09.11 ID:w74ctwP8
if (!$edit){ } この式って$editがどんな値の時にtrueですか?
0かnullかfalseか''の時true わかったかハゲ
ツンデレめ
なんだとハゲが じゃあこれも追加な array() あとは他のハゲどもに聞いてくれ
886 :
nobodyさん :2012/01/16(月) 22:27:47.15 ID:9eZbuHu2
887 :
nobodyさん :2012/01/16(月) 23:03:24.97 ID:guznNntQ
$lang[0] =$lang0; $lang[1] =$lang1; $lang[2] =$lang2; を、 for ($i = 0; $i < 4; $i++) { $lang[$i] =$lang.$i; } とするとうまくエラーがでます。どうすればいいのですか?
889 :
nobodyさん :2012/01/16(月) 23:12:27.38 ID:guznNntQ
間違えました、 for ($i = 0; $i < 4; $i++) { $lang[$i] =$lang.$i; } でうまくいかず、エラーが出ます。どうすればいいのですか?
>>887 $hoge = "lang" . $i;
$lang[$i] = $$hoge;
ループの終了条件
条件あるじゃん$i < 4だろ つまり$iが4まできたら終了じゃん
893 :
nobodyさん :2012/01/16(月) 23:41:54.01 ID:guznNntQ
894 :
nobodyさん :2012/01/17(火) 00:12:00.49 ID:EiaeWEuH
PHPで分散トランザクションはどのように行えばよろしいでしょうか?
また発作か
は、はっさく?
897 :
nobodyさん :2012/01/17(火) 04:03:01.94 ID:BgcdxtCD
PHPでアプリケーションスコープはどのようにしたら実装できますか?
898 :
nobodyさん :2012/01/17(火) 10:52:09.01 ID:46QLTXdT
2012年1月は、C#がC++を抜いて3位につけたことが特に注目される。C++は長期に渡って
緩やかな下落傾向にある一方で、C#は上昇傾向が続いており、特にここ数年は上昇傾
向が強くなっている。
今後しばらくは、C#とC++で順位の入れ替えを繰り返すものと見られるが、最終的には
C#が3位、C++が4位に落ち着く可能性が高い。また、Objective-Cも急成長を続けており、
この傾向が続いた場合には、C#、Objective-C、C++という順位に変わっていく可能性もある。
上記のほか20位以内に入ったプログラミング言語としては、Rが19位に、Luaが20位に
入った点が注目される。
特に、統計処理や統計データのグラフィック化などに利用されるRプログラミング言語は、
ここのところ注目が高まっている。Rの機能拡張が、Googleの支援によって実現したこと
などもその一因となっているものとみられる。
1 Java 17.479 (-0.082) 18ヵ月連続1位
2 C 16.976 (-0.081)
3 C# 8.781 (+0.576) 3位へ浮上。上昇傾向
4 C++. 8.063 (-0.189) 4位へ下落
5 Objective-C 6.919 (+0.114) 上昇傾向
6 PHP 5.710 (-0.291) 下落傾向
7 (Visual)Basic 4.531 (-0.226)
8 Python. 3.218 (-0.274)
9 Perl. 2.773 (+0.301)
10 JavaScript 2.322 (+0.123)
11 Delphi 1.576 (+0.331)
12 Ruby. 1.441 (-0.053)
http://news.mynavi.jp/news/2012/01/12/058/
でっていう
900 :
nobodyさん :2012/01/17(火) 11:56:51.84 ID:5qimSQwE
PHPによるWebアプリケーションスーパーサンプル第二版で、PHPを勉強中のものです。 P.54 でPOST送信されたデータを受け取るという話の中で、$_POSTで受け取るほかに 「$HTTP_POST_VARSという変数も使用できますが、PHP5の設定ファイルのテンプレートである php.ini-recommendedでは $HTTP_*_VARS 変数は無効(register_long_arrays=OFF)と なっているので注意しましょう。」 と書いてあります。この意味がわからないのですが、register_long_arrays=OFFの場合 $HTTP_POST_VARS は使えないということですか?
重要でもないしそんな変数使わないから気にしないでいい $_POST使いな
902 :
900 :2012/01/17(火) 11:59:30.14 ID:5qimSQwE
ちなみに、別な本についてきたxamppで一緒にPHPをインストールしたのですが C:/xampp/php/php.ini-recommended をエディターで開いてみると register_long_arrays = Off になっていますが、サンプルコードを書いてみると $HTTP_POST_VARS でも、POST送信されたデータを受け取れています。 どこか、勘違いしているのでしょぅか。
903 :
nobodyさん :2012/01/17(火) 12:00:19.53 ID:5qimSQwE
>>901 あっ、素早いお返事ありがとうございました。
おすすめのとおり、気にしないで進むことにします。ありがとうございました。
$HTTP_POST_VARSでマニュアル見ればすごくわかりやすく書いてあるのになぜマニュアルを読もうとしない しかも$HTTP_POST_VARS [非推奨]っておもっくそ書いてある マニュアルマニュアルマニュアルマニュアルマニュアルマニュアルマニュアル マニュアルマニュアルマニュアルマニュアルマニュアルマニュアルマニュアル マニュアルマニュアルマニュアルマニュアルマニュアルマニュアルマニュアル マニュアルマニュアルマニュアルマニュアルマニュアルマニュアルマニュアル
905 :
900 :2012/01/17(火) 16:54:57.24 ID:???
>>904 本家マニュアル(日本語ページで)検索したけど、英語のページになっちゃったんです。
それで挫折しました。
こういうのとか、みつかりませんでした、とか 自分は検索がヘタクソですって公言すると何かいいことがあるのか?
>>906 能力不足で見つけられなかったけど、努力はしたんです。
それでもわからないので、ここに質問にきたんです。できたら検索のコツなどを
ご教示いただけると、自分も含め、今後の参考になるのでぜひお願いします。
まぁこのスレ的には
>>905 位の手順踏んでたら質問して問題ないでしょ
くだらない質問スレ(=初心者スレなんだし)
$HTTP_POST_VARSでググったら1ページ目に公式日本語マニュアル出てるんだが どんだけ検索音痴なんだよ
ページ上部に言語設定のフォームがあるのに… あとはURLのenをjaに変えてみるとか。英文を機械翻訳にかけるとか。手は色々あるね
英語が出てきた瞬間に頭が読むことをやめるんだろ だから簡単な言語設定にすら気付けない でも言い訳だけは一人前 >能力不足で見つけられなかったけど、努力はしたんです。 明らかにしてねーよ
912 :
900 :2012/01/17(火) 17:59:56.39 ID:???
みなさん、ありがとうございます。 googleでいきなり検索するというのは思いつきませんでした! 翻訳も考えてもみませんでした。 orz 次回もう少し高度な質問ができるようよにがんばります。
>>911 あああ、すみません。英語ももっと勉強します・・・
努力ってなにかね?
ところで、
>>900 、902 のそもそもの質問は、
「register_long_arrays=OFFの場合 $HTTP_POST_VARS は使えないということですか?
(受け取れているようですが) 」だったんですが
>>914 さん、ご存知でしたら教えてください。
>>1 読めやハゲが
教えてやってもいいけどおまえあとで体育館の裏な
なんだ、わかんないのか
そしてこの態度である
えっ、釣り?
920 :
900 :2012/01/17(火) 19:17:39.12 ID:RFWc5FPN
>>916 偽者がまざっているようですが、
【OS名】windowsXP
【PHPのバージョン】PHP Version 5.2.4
【連携ソフトウェア】なし
【質問内容】
>>900 と
>>902 に書いたとおり
あと、どんな情報が必要ですか?
>>920 答えてやろう
>「$HTTP_POST_VARSという変数も使用できますが、PHP5の設定ファイルのテンプレートである
> php.ini-recommendedでは $HTTP_*_VARS 変数は無効(register_long_arrays=OFF)と
> なっているので注意しましょう。」
この通りだろ
おまえの環境のregister_long_arraysはどんな値になってるのさ
いずれにしても$HTTP_POST_VARSは非推奨な上、スーパーグローバルではないとマニュアルにある
$_POSTとは別の変数とも書いてある
ちなみに
>PHPによるWebアプリケーションスーパーサンプル第二版
こんなもん窓から投げ捨てちまえ
コーディングのやり方だけ覚えたら本なんか足枷にしかならんぞ
ネットから情報を得てプログラミングしていく方法を身につけたほうが早く伸びる
922 :
900 :2012/01/17(火) 20:07:58.18 ID:RFWc5FPN
>>921 ありがとうございます。
register_long_arraysの値は、
>>902 に書いてあるとおり
register_long_arrays = Off です。 だから$HTTP_*_VARS 変数は無効だと
思ったのに、POST送信されたデータを$HTTP_POST_VARSで
受け取れてしまい、とても混乱しました。そこで質問させていただきました。
923 :
900 :2012/01/17(火) 20:10:11.06 ID:RFWc5FPN
PHPは今日から勉強しはじめたもので、不明な点がいろいろあり、これからもっと 勉強していこうと思います。ありがとうございました。
え?解決したの? てか君の環境のApacheはphp.ini-recommendedを読み込んでるの?
>register_long_arraysの値は、
>>902 に書いてあるとおり
>register_long_arrays = Off です。
本当かよ
ini_get()してみろよ
926 :
900 :2012/01/17(火) 21:08:57.26 ID:RFWc5FPN
>>924 読んでくれてるつもりだったんですが・・・
>>925 echo 'register_long_arrays = ' . ini_get('register_long_arrays')
で、register_long_arrays = 1 と表示されます。
1 ってことは true?つまり on ってことですか?
>>926 つもりというと?どこでどう設定したの?
928 :
nobodyさん :2012/01/17(火) 21:16:11.03 ID:RFWc5FPN
>>927 あああああああ、そういうことかーーー!
やっとわかりました!もう一度読み直してやってみます!
いや、聞いてるんだけど
931 :
900=928 :2012/01/17(火) 22:05:54.75 ID:RFWc5FPN
わかったつもりで、c:/xampp/apache/bin/php.ini の register_long_arraysを確認してきたら、onになっていました で、それをoffに変更して保存したのですが、 echo 'register_long_arrays = ' . ini_get('register_long_arrays') は、まだ、register_long_arrays = 1 と表示されます。 orz
934 :
900=928 :2012/01/17(火) 22:10:15.34 ID:RFWc5FPN
明日、もうすこし頭を冷やして、やり直してみます。 みなさん、ありがとうございました。
とりあえずそんなの放置でもかまわんよ 使わなきゃいいだけ
いいってことよ
いつもの人の釣りでしょ
940 :
昨日の900です :
2012/01/18(水) 12:25:21.19 ID:0vYhYlXk >>932-938 あれこれ、ちょっとずつ変えてつつテストしていたので、再起動したつもりでしたが
再起動していなかったのかもしれません。
今日テストしたら register_long_arrays = 1 にならなくなりました(null?)
そして、$HTTP_POST_VARS の値も取れなくなりました!(希望していた結果)
結局設定の間違いだったんですね。みなさん、ありがとうございました!