トップページphp
1001コメント290KB

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2012/01/20(金) 05:43:23.62ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 114
http://kohada.2ch.net/test/read.cgi/php/1325437405/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0808nobodyさん2012/02/22(水) 02:41:22.45ID:???
>>807
>>804の1行目は理解できる?
0809nobodyさん2012/02/22(水) 02:43:20.60ID:HjiaSrjv
>>808
PHPは分散オブジェクトは対応していないのですか?
0810nobodyさん2012/02/22(水) 02:46:14.38ID:???
>>809
Javaのスコープの話が出てきた時点でこうなりそうな気はしていたが。

今後の話をわかりやすくするために「分散オブジェクトに対応する」というのがどういうことか伝えてもらえるかな。
0811nobodyさん2012/02/22(水) 02:50:27.92ID:HjiaSrjv
>>810
複数のコンピュータ間で同じオブジェクトを同一マシーン上で処理が済むことと同じようにすることですよね。
0812nobodyさん2012/02/22(水) 02:53:35.00ID:HjiaSrjv
OpenPNE,WordPress、CakePHPはセッションへオブジェクトを格納する設計になっていないのでしょうか?
0813nobodyさん2012/02/22(水) 02:54:02.25ID:???
>>811
それでいいのなら、対応してる。
0814nobodyさん2012/02/22(水) 02:55:12.88ID:???
>>812
ソースコードリーディングは諦めたの?
0815nobodyさん2012/02/22(水) 02:56:50.78ID:HjiaSrjv
>>812
なぜ同じクエリを何度も発行しているのでしょうか?
OpenPNE3.6系です。
0816nobodyさん2012/02/22(水) 03:00:29.37ID:???
いらなクエリをコメントアウトすればいいんじゃね?
0817nobodyさん2012/02/22(水) 03:02:33.49ID:HjiaSrjv
>>816
その論法で行くと全部コメントアウトになりますが・・・。

私の質問はPHPでは答えにくのでしょうか?
0818nobodyさん2012/02/22(水) 03:04:26.65ID:???
そろそろしんどい。

>>815, 817
繰り返すが、それが本当に無駄なら報告すれば多方面から感謝されるからそうしたらいい。
0819nobodyさん2012/02/22(水) 03:08:04.96ID:HjiaSrjv
>>818
そんなに大げさなことでしょうか?
OpenPNEを試されたことがありますよね?
デバックモードで起動するとSQL発行数がわかりますが、すごい量です。
これはなぜですか?と言っているだけです。だから遅いんじゃないでしょうかと。
0820nobodyさん2012/02/22(水) 03:09:29.52ID:HjiaSrjv
セッションにオブジェクトを格納しない理由があるのでしょうか?
昔はシリアライズのバグの話は聞いたことがありますが、さすがに今は解消しているはずです。
0821nobodyさん2012/02/22(水) 03:09:46.81ID:???
>>819
デバッグモードじゃなければ発行されないの?
何のために使われるクエリなのかは調べてないの?
OpenPNEは使ったこと無いよ。使ったこと無いならレスしないでっていうことなら喜んでレスやめる。
0822nobodyさん2012/02/22(水) 03:09:49.44ID:???
セッション切れるまでリソース保持とかどんな罰ゲーム
0823nobodyさん2012/02/22(水) 03:09:54.82ID:???
x86命令セット渡しても文句言いそうだな
0824nobodyさん2012/02/22(水) 03:11:44.08ID:???
どういう学び方をしたらこんなこじらせた頭になるんだ?
0825nobodyさん2012/02/22(水) 03:11:56.60ID:HjiaSrjv
>>821
デバッグモードで起動するとSQLクエリの発行数がわかります。
0826nobodyさん2012/02/22(水) 03:13:20.43ID:HjiaSrjv
>>822
それならそれでいいんです。
PHPでは罰ゲームレベルという理解でよろしいのですね。
0827nobodyさん2012/02/22(水) 03:13:21.46ID:???
こんなとこで使ったこと無い人相手にがんばるくらいならコード読み進めてみたら?
0828nobodyさん2012/02/22(水) 03:14:30.57ID:HjiaSrjv
結局のところ、
PHPではセッションにオブジェクトを格納するのは一般的ではないという結論ですね。
0829nobodyさん2012/02/22(水) 03:15:13.92ID:???
>>826
Javaだと放置セッションのリソースはいつ破棄されるの?
0830nobodyさん2012/02/22(水) 03:15:30.89ID:???
>>826
だから言っただろ
一人だけで使うなら別にいいんじゃね
って
0831nobodyさん2012/02/22(水) 03:15:45.98ID:HjiaSrjv
よくわかりました。道理でセッションが使用されていないわけだ。
0832nobodyさん2012/02/22(水) 03:16:55.71ID:HjiaSrjv
>>829
アプリケーションサーバーの設定による。
ただし、プログラムレベルでは細かく殺してリソースのムダ遣いを減らします。
0833nobodyさん2012/02/22(水) 03:17:02.95ID:???
他人のコードを読む時の絶望感といったら言葉にならない
らーらーらー ららーらー 言葉になら〜ない
0834nobodyさん2012/02/22(水) 03:17:23.17ID:???
PHPだけの問題じゃないでしょうに
Javaだって同じ事
0835nobodyさん2012/02/22(水) 03:17:48.03ID:???
>>832
PHPも一緒だよ。
0836nobodyさん2012/02/22(水) 03:18:45.31ID:???
基礎知識が足りなさすぎるだろ
もっと幅広く勉強しろよ
0837nobodyさん2012/02/22(水) 03:19:08.08ID:HjiaSrjv
もう大丈夫です。
PHPではセッションにオブジェクトを格納するのは一般的ではないということが
よくわかりました。
0838nobodyさん2012/02/22(水) 03:20:04.33ID:???
どういたしまして。
0839nobodyさん2012/02/22(水) 03:24:16.48ID:HjiaSrjv
セッションにオブジェクトを格納するのはPHPでは一般的では
ないとわかりましたが、それはPHPプログラマにとって尺に触ることでしょうか?
0840nobodyさん2012/02/22(水) 03:27:56.08ID:HjiaSrjv
尺に触ったのであればすみまんでした。特に悪気はありません。
0841nobodyさん2012/02/22(水) 03:30:45.46ID:???
癪に障るかってどういうことだろ。
たとえば一般的ではないことを強要されたら癪に障るかも知れないけれど。
0842nobodyさん2012/02/22(水) 03:38:58.82ID:???
もしかして煽ろうとしていたのか…?
0843nobodyさん2012/02/22(水) 03:57:13.25ID:???
>>840
キレてないっスよ
ペチパーキレさせたら大したもんスよ
0844nobodyさん2012/02/22(水) 04:52:15.14ID:???
PHPでC言語の実装するとか言ってたのはどうなったんだ?
0845nobodyさん2012/02/22(水) 06:32:14.02ID:???
PHPだからとかJavaだからとか関係ないから。
Webアプリケーションの設計の話でしょ。
0846nobodyさん2012/02/22(水) 07:41:18.69ID:???
>>795
JavaとPythonで比較してるなら、OpenPNEに相当するJavaとPythonで実装されたもので
機敏に動くものを知りたい。
0847nobodyさん2012/02/22(水) 08:55:42.21ID:???
もう大丈夫です。
PHPではセッションにオブジェクトを格納するのは一般的ではないということが
よくわかりました。
0848nobodyさん2012/02/22(水) 09:00:26.08ID:???
PHPでなくても一般的ではない
0849nobodyさん2012/02/22(水) 09:03:48.77ID:???
>>848
嘘つくなw
0850nobodyさん2012/02/22(水) 09:10:04.74ID:???
コネクションプーリングってのはそもそもアプリケーション鯖が対応してなければ使えない
0851nobodyさん2012/02/22(水) 09:13:27.28ID:???
>>850
当然。だからphpではコネプール不可。
0852nobodyさん2012/02/22(水) 09:15:30.80ID:???
セッションの話はどうでもいいが、openpneが激重なのは同意。
かなりヤバイレベル。バージョン2の時代はマシだった。
0853nobodyさん2012/02/22(水) 09:17:48.11ID:???
んでコネクションプーリングを実現するのにセッションが必要なんて
そんなヴァカな話があるのか
0854nobodyさん2012/02/22(水) 09:24:03.91ID:???
>>853
たしかに、唐突にコネクションプーリングの話は変だとは思った。
その逆も必要ないかと。
話の流れとは関係ないw
0855nobodyさん2012/02/22(水) 10:49:21.91ID:???
>>852
可能です。
以上。
↓次どうぞ
0856nobodyさん2012/02/22(水) 11:04:16.02ID:yvJnpOho
>>783
CGIじゃなくてモジュールで動作させれば早いと書いてあった。
今のところはCGIで動作の仕様になってる。
0857nobodyさん2012/02/22(水) 11:17:37.00ID:???
頭大丈夫 ?
0858nobodyさん2012/02/22(水) 11:27:57.48ID:???
もう手遅れかと
0859nobodyさん2012/02/22(水) 15:35:04.94ID:???
コネクションプーリングは言語レベルのサポートは無い。
0860nobodyさん2012/02/22(水) 15:37:33.90ID:???
Javaのようなオブジェクト指向言語では普通にオブジェクトをセッションへ格納する。
0861nobodyさん2012/02/22(水) 17:05:21.76ID:???
いいえアプリケーションで管理するのが普通です
0862nobodyさん2012/02/22(水) 17:34:31.83ID:???
setcookie();の挙動について悩んでいます
a.phpで
echo $_COOKIE['testvar1'];
var_dump($_COOKIE);
---
b.phpで
setcookie('testvar1', 'bbb') //a.phpでbbbが出力される
---
c.phpで
setcookie('testvar1', 'ccc') //a.phpでcccが出力されない
setcookie('testvar2', 'xxx') //a.phpでtestvar2自体が確認出来ない

と、以上のようにしてる時、b.php → a.php の順番でアクセスするとechoもvar_dumpも正常な結果を返すんですが、その後
c.php → a.php の順番でアクセスするとechoはbbbを返し、var_dumpは追加したtestvar2自体を返さずtestvar1のみbbbとして返します
※c.php自体の中で echo $_COOKIE['testvar1'];すればcccを返します。また、c.phpのsetcookie();の返り値は1です
※また、b.phpの中でクッキーに入れる値を変更した場合はa.phpで変更後の値が確認出来ますが
c.phpの中で値を変更しても上書きされません(c.phpの中での確認です)

ドメインは全て同じで、原因が全くわかりません
何か考えられる対処法やチェック箇所あるでしょうか?
申し訳ないですが、どなたかご意見お願いします
0863nobodyさん2012/02/22(水) 19:09:47.20ID:???
ブラウザを初期化する
0864nobodyさん2012/02/22(水) 19:28:43.76ID:???
ありがとうございました!
0865nobodyさん2012/02/22(水) 19:35:22.61ID:???
最近は、ID出さなくても答えて貰える様になったのか。
これがゆとりか。
0866nobodyさん2012/02/22(水) 19:44:07.26ID:???
ID指摘したかったら、回答しつつ、ID出すように促せよ。
IDID言うやつ、回答しないんだよな。
0867nobodyさん2012/02/22(水) 19:46:05.87ID:???
>>1
0868nobodyさん2012/02/22(水) 19:46:44.23ID:???
昨日のチェリーボーイが居ますね
08698622012/02/22(水) 20:41:14.26ID:culdIBNJ
すみません、今気づきましたID出してなかったです。すみませんでした
その後もブラウザ再起動などしてやったんですが
やはりc.phpでsetcookie();した値はc.php以外で確認出来ません
なんなんでしょうか?
0870nobodyさん2012/02/22(水) 20:44:30.18ID:???
>>869
問題が再現するコード出して
0871nobodyさん2012/02/22(水) 20:50:21.88ID:???
>>869
たぶんpath
0872nobodyさん2012/02/22(水) 21:49:26.94ID:???
HTTPのヘッダも確認してみれば
0873nobodyさん2012/02/22(水) 22:14:17.30ID:???
fastcgiの動作確認なのですが
php-cgi -b 127.0.0.1:9000 &
として
telnet 127.0.0.1 9000
とかでなんか叩いて動作チェックって出来るものでしょうか?

08748622012/02/22(水) 22:42:10.50ID:culdIBNJ
>>870-872
その後、全てのsetcookie()を setcookie('time', date('Y-m-d H:i:s'), 0, '/', 'example.com');として
有効時間、パス、ドメインを指定したところ解決しました
質問して良かったです、助かりました
本当にありがとうございました
0875nobodyさん2012/02/22(水) 22:51:44.23ID:???
いいってことよ
0876nobodyさん2012/02/22(水) 22:55:02.14ID:???
ほい
0877nobodyさん2012/02/22(水) 23:24:44.58ID:qmf6D6+H
get_included_files()に含まれてないファイルがrequire_onceで読み込まれないんですが、
原因としては何が考えられますか?
0878nobodyさん2012/02/23(木) 00:42:33.05ID:???
>>877
パス間違ってるとかパーミッションがマズイとか。
ちょっと情報少なすぎ。
warningかnoticeも出てないの?
08795532012/02/23(木) 01:24:46.92ID:???
含まれていないんだから、読み込まれないのは問題無いだろw
0880nobodyさん2012/02/23(木) 02:36:14.38ID:???
CakePHPは重いですね
0881nobodyさん2012/02/23(木) 02:52:55.61ID:???
マシンパワーアップしようぜ
i7っでサックサクにしようぜ
0882nobodyさん2012/02/23(木) 07:04:30.49ID:???
>>879
ん?
0883nobodyさん2012/02/23(木) 11:23:14.79ID:???
>>880
同意。WordPressも激重。
0884nobodyさん2012/02/23(木) 11:28:18.18ID:???
スレチ
0885nobodyさん2012/02/23(木) 11:29:42.88ID:???
チッ
0886nobodyさん2012/02/23(木) 11:35:04.06ID:GMJguUp1
セッションを利用したログイン認証について質問です。
ログインページでは、ID(メアド)とパスワードの一致をもって、認証OKとしています。
その後、各ページでは何をもって認証OKとすれば良いのでしょうか?

入門書では、
1.ログイン時に、各ユーザー情報をセッションに保持し、各ページでは、それがあれば認証OKとする。
2.ログイン時に、暗号化した認証キーを作成してセッションに保持し、各ページで再度、認証キーを作成し、セッションの認証キーと照会する。
3.ログイン時に、セッションID(session_id())をセッションに保持し、各ページでは、そのページでのsession_id()と照会する。

などの方法を確認しました。個人的には、1の方法で足りると思うのですが、2や3の方法のほうがセキュリティーは高まるのでしょうか?
0887nobodyさん2012/02/23(木) 12:26:00.63ID:???
ログインフラグだけで十分
08888772012/02/23(木) 13:56:23.63ID:QQ9YytJp
>>878
パスは間違ってないようです パーミッションもちゃんと644になってます
直接関わるwarning・noticeは出ていないようです

情報が少なすぎるとのことなので問題の背景を説明します

レンタルサーバでXOOPSを使いサイトを運用しています
ある日すべてのページが500 Internal Server Errorになるようになりました
"php_flag magic_quotes_gpc Off"とだけ書かれたXOOPS_ROOT_PATH/.htaccessがあったのでこれを削除したところ、
だいたいのページは元通り見られるようになりました

しかし、管理メニューの互換モジュールで
Fatal error: Class 'Legacy_ActionFrame' not found in XOOPS_ROOT_PATH/modules/legacy/admin/index.php
とエラーが発生します
該当する.phpファイルではそのクラスを定義しているXOOPS_ROOT_PATH/modules/legacy/class/ActionFrame.class.phpをrequire_onceしているようなので、
このファイルにでたらめな文字列を書き足してSyntax errorを期待したのですが結果は変わりませんでした
また、require_onceの下にvar_dump(get_included_files());を書き足しても、このファイルは含まれていませんでした
以上にもかかわらず、require_onceの戻り値は1( != FALSE)でした

どうすればこのファイルはrequire_onceで読み込まれるようになるでしょうか?
よろしくお願いします
0889nobodyさん2012/02/23(木) 14:11:01.61ID:???
>>886
どんな入門書読んだのか知らんが、2と3は明らかにおかしなこと言ってるぞ。
もう一回しっかり読め。
セッションとクッキーは別物だということを頭に置いてな。
0890nobodyさん2012/02/23(木) 15:06:37.39ID:pOv6kBFH
smp.tsv
あああ\\t2012.01.23\\tききき\\n
いいい\\t2012.01.23\\tくくく\\n
ううう\\t2012.01.23\\tけけけ\\n
えええ\\t2012.01.22\\tこここ\\n
おおお\\t2012.01.22\\tさささ\\n
かかか\\t2012.01.21\\tししし\\n

今日 = 3
昨日 = 2
一昨日 = 1

このような値を取り出したい場合はどのような手順になるのでしょうか?
よろしくおねがいします。
08918862012/02/23(木) 15:11:52.08ID:AL17q7mx
>>887 889 レスありがとうございます。
3.のコードです。関数化されてます。
これは間違いなのでしょうか?

<?php
##### セッションの開始
function session_idset() {
  session_start();
  $_SESSION['auth'] = session_id();
}

##### セッションのチェック
function session_check() {
  session_start();
  $rtn = TRUE;
  if($_SESSION['auth'] != session_id()) {
    $rtn = FALSE;
  }
  return $rtn;
}
?>
08928862012/02/23(木) 15:23:33.04ID:AL17q7mx
2.のコードです。これもおかしいですか?

//セッションの開始
$_SESSION['login_id'] = $_POST['login_id'] ;
$_SESSION['auth'] = md5($salt . $_POST['login_id']) ;

//セッションの確認
function auth() {
  global $salt;
  if (md5($salt . $_SESSION['login_id']) == $_SESSION['auth'] ) {
    return TRUE;
  } else {
    return FALSE;
  }
}
0893nobodyさん2012/02/23(木) 16:00:34.17ID:???
1〜3は比較する情報が違うだけでやってること同じじゃん
0894nobodyさん2012/02/23(木) 16:26:52.69ID:???
おかしいというか、扉に同じ鍵で開く鍵穴が2つあるみたいなもん。
やるんであれば、例えば、ランダム文字列を生成してクッキーに保存
その文字列をハッシュかけてセッションに保存
確認のときはクッキーのデータにハッシュかけたものとセッションのデータが一致するか
ってやればセッションハイジャックに対して少しは強くなりそう。
0895nobodyさん2012/02/23(木) 16:36:47.58ID:???
>>891
本当にその入門書がその通りに書いているなら今すぐ燃やして他の本から学ぶべきだな

>>894
効果のないものを初心者に教えるな
0896nobodyさん2012/02/23(木) 16:40:30.49ID:???
>>888
requireでは読み込めるってこと?
08978942012/02/23(木) 17:08:07.42ID:???
>>895
何で効果がないのか教えてくれ
0898nobodyさん2012/02/23(木) 17:22:52.85ID:???
>>897
もしかして、セッションファイルを一般ユーザが見られる場所に
保存するシステムを前提に、ローカルユーザからの攻撃対策の話をしてる?
それだと、サーバの設定を見直した方がいいような……
0899nobodyさん2012/02/23(木) 17:29:45.68ID:???
>>897
sidについて触れない時点でハイジャックには何の効果もないんじゃないの?それ
0900nobodyさん2012/02/23(木) 17:31:23.55ID:sgcZLa3B
>>899
セッション固定攻撃に対しては効果があると思うけど。
0901nobodyさん2012/02/23(木) 17:38:14.99ID:???
何で効果があるのか教えてくれ
0902nobodyさん2012/02/23(木) 17:39:09.99ID:???
>>890
一行読んで、\tで分けて、二つ目の要素の日付調べて、該当する日のカウント増やす
09038862012/02/23(木) 17:59:29.91ID:+MEbH08X
1.のコードです。遅れてすみません。
やはり、このシンプルなコードが妥当なのでしょうか?

//$rowにDB取得データ代入済み
// ログイン情報を記録
$_SESSION["login"] = array("user_id" => $row["user_id"]," login_time" => time())

// ログインしているかどうか調べる関数
function is_logined() {
   return isset($_SESSION["login"]);
}
0904nobodyさん2012/02/23(木) 18:09:26.05ID:???
>>890
fgetcsv
array_count_values
09058942012/02/23(木) 18:21:05.98ID:???
>>898
仮にセッションIDが漏れた場合とか想定してるんだけど。
セッションIDだけじゃなくて、発行時のクライアントのチェックとして有効じゃない?
886の対案として出してるだけだから、ベストの方法とは思わんけど。

>>899
論点がぜんぜん違う
0906nobodyさん2012/02/23(木) 18:24:58.57ID:pOv6kBFH
$lines = file($tsv);
for($i = 0; $i < count($lines); $i++){
list(,$day,,)=explode("\t",$lines[$i]);
$today = date("Y.m.d");
$match_tday = preg_match("/$today/",$day);
}

今一歩前へ進めません。次のヒントお願いします。
0907nobodyさん2012/02/23(木) 18:41:27.89ID:???
PHPSESSID決め打ちでそれだけが盗まれたら〜ってこと?
レス数が900を超えています。1000を超えると表示できなくなるよ。