1 名前:nobodyさん [2009/03/09(月) 02:14:28 ID:HyrthkeE] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 81 pc11.2ch.net/test/read.cgi/php/1234958956/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
830 名前:nobodyさん mailto:sage [2009/04/03(金) 02:26:52 ID:???] hiddenとか過去の産物だろ。更新ボタンとか戻るボタンとかでgdgdになるのが目に見えてる
831 名前:nobodyさん mailto:sage [2009/04/03(金) 02:29:07 ID:???] >>827 試してないけど、javascriptでformのactionを変更できるんじゃないの。 msdn.microsoft.com/ja-jp/library/cc409726.aspx このへんは趣味の問題かもしれんが、セッションに値を保持するのは、 同じセッションで複数タブ開かれた場合に動作がおかしくなりやすいから、 あんまりお勧めはできん。
832 名前:nobodyさん mailto:sage [2009/04/03(金) 02:30:00 ID:???] >>830 戻るでグダグダになるのはセッションじゃないかい?
833 名前:nobodyさん mailto:sage [2009/04/03(金) 02:38:12 ID:???] とりあえずhiddenを批判するやつはどこにでもいる
834 名前:nobodyさん mailto:sage [2009/04/03(金) 03:42:37 ID:???] 入力、確認を違うファイルにするとエラー処理がめんどい
835 名前:nobodyさん mailto:sage [2009/04/03(金) 04:07:02 ID:???] php5.3rc1使ってる人に質問です。 php.iniに書いたmb_string系の設定って反映されてますか? あと何故かapcも動かない、、、 いくら設定を見直してもなにが悪いのかわかりません。 解決策をご存知の方いましたら、教えてください。
836 名前:835 mailto:sage [2009/04/03(金) 06:55:01 ID:???] 解決しましたすみません;ケアレスミスでした・・・
837 名前:nobodyさん mailto:sage [2009/04/03(金) 07:27:17 ID:???] >>783 ありがとうございます。それでいってみたいと思います。
838 名前:nobodyさん [2009/04/03(金) 07:28:49 ID:b3GlDVd8] クエリの時のプリペアドステートメントって、どういう効果があるんですか? 一応本では読んだんですがいまいちよくわかりません 簡単に説明お願いします
839 名前:nobodyさん mailto:sage [2009/04/03(金) 08:01:16 ID:???] >>838 繰り返し使われる場合はパフォーマンスが上がることもあるみたいだけど、一番大きいのは SQLインジェクションみたいな攻撃を受けにくくなることじゃないの。
840 名前:nobodyさん mailto:sage [2009/04/03(金) 08:43:25 ID:???] そんなのクオートすりゃ済む話だろ
841 名前:nobodyさん mailto:sage [2009/04/03(金) 08:45:48 ID:???] >>819 もうプリペアでやってるかもしれないけど $a = ""; $var = "'".$a."'"; $query = "insert into test (id, comment) value ($val, 'test')";
842 名前:nobodyさん mailto:sage [2009/04/03(金) 10:01:31 ID:???] NULLと空文字は違うだろw
843 名前:nobodyさん mailto:sage [2009/04/03(金) 10:05:52 ID:???] 昔Oracleしか知らなくてnullとブランク何が違うか客先で質問して大恥かいたことあるぜ
844 名前:nobodyさん mailto:sage [2009/04/03(金) 11:18:56 ID:???] 根拠レスな「このコードはセキュリティがダメだね」発言は居酒屋での「大したことねえなマツザカ(笑」みたいな会話に近い neta.ywcafe.net/000974.html
845 名前:nobodyさん mailto:sage [2009/04/03(金) 11:26:15 ID:???] 俺も思う サンプルコードにこれ見よがしにつっこむ奴なんなの ある側面から切り取ってるんだから瑕疵がないほうがおかしいだろ
846 名前:nobodyさん mailto:sage [2009/04/03(金) 11:29:51 ID:???] 高木先生大の批判は辞めて下さい
847 名前:nobodyさん mailto:sage [2009/04/03(金) 11:45:02 ID:???] >>844 また宣伝か
848 名前:827 mailto:sage [2009/04/03(金) 15:07:28 ID:???] 返事が遅くなりすいません。 フォームの件ですが色々試しましてSESSIONでいくようにしました。 色々とアドバイス本当にありがとうございます。 それでもう一つ質問なんですが、 フォームのチェックボックスの内容をhtmlに直に書かず、 config.phpなどに$val=array("aaa","bbb","ccc"); みたいな感じで記述しhtmlでforeachを使い 全て書き出すみたいな事をしたいんですが、参考書などを確認したら 配列で記述するのではなくfunctionで function val(){ $val = array("aaa","bbb","ccc"); return $val; } という書かれ方がされてました。 関数にせず配列だけが記述すると何かマズイんですか? 質問が少しわかりにくいですがもしよければ アドバイスよろしくお願いします。
849 名前:nobodyさん mailto:sage [2009/04/03(金) 15:17:48 ID:???] >>848 $valの中身を将来的にコードからいじる可能性があるならfunction、 可能性がないなら定数のままでいい
850 名前:nobodyさん mailto:sage [2009/04/03(金) 15:40:20 ID:???] 最近、他人のブログを批判しながら2ちゃんで宣伝してアクセス数稼ぐのが流行ってるのか?
851 名前:827 mailto:sage [2009/04/03(金) 15:41:11 ID:???] >>849 返信ありがとうございます。 例えばこれから先チェックボックスの値dddが増えた場合、 $val=array("aaa","bbb","ccc","ddd"); でも function val(){ $val = array("aaa","bbb","ccc","ddd"); return $val; } でも変わらない気がするんですが・・・ 素人質問本当にすいません。 今から考えてみます。
852 名前:nobodyさん mailto:sage [2009/04/03(金) 15:48:11 ID:???] >>851 いい例が思いつかないのだけどこんな感じ。条件によって変わる場合だな function val(){ $val = array("aaa","bbb","ccc","ddd"); // 天気が雪の場合のみ配列にeeeを追加する if( $this->weather == "snow" ){ array_push( $val, "eee" ); } return $val; }
853 名前:nobodyさん mailto:sage [2009/04/03(金) 15:49:16 ID:???] >>851 前者でおk
854 名前:827 mailto:sage [2009/04/03(金) 16:12:12 ID:???] >>852 >>853 返信ありがとうございます。 今後、配列を元に何か条件をつけるなどの機会がある場合は 関数にしておく方が好ましいという事ですね。 例文まで書いていただき本当にありがとうございました!
855 名前:nobodyさん [2009/04/03(金) 18:24:43 ID:ZpjcrZDP] 文字列のシングルクォーテーションのみを エンティティに変換したいのですが、どうすればいいのでしょうか? htmlspecialcharsはダブルクォーテーションも変換しますし・・。
856 名前:nobodyさん mailto:sage [2009/04/03(金) 18:32:47 ID:???] vs php(VS2005評価版)でデバッグ実行しようとすると 次のエラーが出てしまいます。 何が原因なのでしょうか? Fatal error: Unknown: Failed opening required 'C:/Documents and Settings/繧イ繧ケ繝育畑縺ョ繝ヲ繝シ繧カ/My Documents/Visual Studio 2005/Projects/PHP_TEST/PHP_TEST/index.php' (include_path='.;C:\php5\pear') in Unknown on line 0 文字化けしちゃってますが C:\Documents and Settings\ゲスト用のユーザ\My Documents\Visual Studio 2005\Projects\PHP_TEST\PHP_TEST\index.php のところで何かエラーが発生している様です。 ※phpのコード <?php /* TODO: Add code here */ print("テスト"); ?>
857 名前:nobodyさん mailto:sage [2009/04/03(金) 19:08:16 ID:???] >>855 strtr
858 名前:nobodyさん [2009/04/03(金) 19:44:58 ID:2mI6CRy6] 【OS名】debian linux 【PHPのバージョン】5.2.0 参照渡しで変数を送り 変数が未定義なら空の文字列を返し 変数が定義済みならそのまま返す関数を考えました。 $test = hoge_variable($v); function hoge_variable(&$v) { if(! isset($v) ) { return ''; } return $v; } テストに入る内容は望みのものですが、 変数$vが未定義だった場合、定義されて(?)NULLが入るようです。 この挙動について、どういった理由でそうなるのか、 また$vを未定義のままにする方法はあるのかご教示いただけませんでしょうか。
859 名前:nobodyさん mailto:sage [2009/04/03(金) 20:02:31 ID:???] >>858 &$vのとき、参照を張るには、参照される側のアドレスが必要だから、そこで定義される。値はNULL &$vにしなければよい。
860 名前:nobodyさん mailto:sage [2009/04/03(金) 20:14:47 ID:???] return ''; を return $v=''; でよくね? 定義されてないからNULLだぜ?
861 名前:nobodyさん [2009/04/03(金) 20:15:15 ID:2mI6CRy6] >>859 やはりそんな感じだったんですね。 関数はエラーレベルによっては出るNotice: Undefined variable の対策だったんですけど、&$vでなく$vにするとそこでUndefined variable がでてしまう感じで…。 定義されたくない時は直接issetをしていくしかないということですかね。 というかそもそもUndefined variable回避に対するアプローチが違っているでしょうか…?
862 名前:nobodyさん mailto:sage [2009/04/03(金) 20:18:37 ID:???] 宣言すりゃいいじゃん
863 名前:nobodyさん [2009/04/03(金) 20:35:14 ID:2mI6CRy6] 状況的には例えばこういう未定義かもしれない所からひっばってくる時で、 $flag = $_POST['flag']; そういう意味で先の $flag = hoge_variable($_POST['flag']); だったんですけど、 例えNULLでも配列に定義されてしまうと、 foreachとかする時に邪魔になったりとかそういう感じのことでした。 やはり基本的には $flag = ''; if (isset($_POST['flag'])) { $flag = $_POST['flag']; } みたいなことで行くのがいいのですかね。
864 名前:nobodyさん mailto:sage [2009/04/03(金) 20:46:30 ID:???] フレームワークには用意されてたりするけどね
865 名前:nobodyさん mailto:sage [2009/04/03(金) 22:15:46 ID:???] >>856 文字コードがUTF-8でBOMが入っているとか? UTF-8Nにしてみたら?
866 名前:nobodyさん mailto:sage [2009/04/03(金) 22:53:01 ID:???] >>863 > $flag = ''; > if (isset($_POST['flag'])) { > $flag = $_POST['flag']; > } 自分はそうしてる 変数が増えてくるとコードがのびがちなので 三項演算子使って $flag = isset($_POST['flag'])?$_POST['flag']:null; といった感じにしてる
867 名前:nobodyさん mailto:sage [2009/04/03(金) 23:35:31 ID:???] >838-840 クォートで処理していると、インジェクションが無いか処理を注視しないといけない。 プリペアドステートメントは、インジェクションが無い事が一目で分かる。 SQLの構文と変数が分離されるので見やすくなるって利点もある。 >863 functon getPostedVariable($key){ return isset($_POST[$key])?$_POST[$key]:null; } とかやると楽なのでオススメ。 プログラムの開始時に$_GETと$_POSTとかを丸ごとメンバに持つクラスのインスタンスを生成して、そいつにこの関数を定義する手もある。 メリットが思いつかないレベルならとりあえず忘れておいてもいいけどな。テストが非常にしやすくなる。 $request = new Request($_POST, $_GET); echo $request->post('flag');
868 名前:nobodyさん mailto:sage [2009/04/03(金) 23:36:22 ID:???] Zend_Request使えよ
869 名前:nobodyさん mailto:sage [2009/04/03(金) 23:49:57 ID:???] 宗教上の理由によりお断りします
870 名前:nobodyさん mailto:sage [2009/04/04(土) 01:03:53 ID:???] PHPを勉強し始めたのですがphpではクラスを宣言する場合に、 public private とかって宣言する事は出来ないのでしょうか? public class Test { public function TestMessage() { print("あいうえお"); } }
871 名前:nobodyさん mailto:sage [2009/04/04(土) 01:54:48 ID:???] >>870 classはできない。functionや変数は可能。
872 名前:nobodyさん mailto:sage [2009/04/04(土) 01:54:55 ID:???] >>870 他言語の素養があるおまいさんはまずマニュアルを読みなはれ。
873 名前:nobodyさん mailto:sage [2009/04/04(土) 02:00:30 ID:???] privateなclassってどんなん?
874 名前:870 mailto:sage [2009/04/04(土) 02:00:58 ID:???] >>871 サンクス >>872 .Net(C# / VB.net) & C++とかでこれまで開発をして来ましたが何かばれちゃいましたか。 マニュアルをちょっと読む事にします。 というより一つ疑問なんですけどC#とかC++とかだと次のパターンAでみんな記述しているのに PHPとかだとパターンAの書き方をする人が多いのはなぜでしょうか? C#だと今まで私が関わって来たプロジェクトは100%パターンAで記述されています。 【パターン@】 if( 1 == 1) { } 【パターンA】 if(1 == 1{ }
875 名前:nobodyさん mailto:sage [2009/04/04(土) 02:04:36 ID:???] >>874 両方ともパターン1かよ
876 名前:nobodyさん mailto:sage [2009/04/04(土) 02:05:23 ID:???] まちがえた 両方ともパターン2かよ
877 名前:nobodyさん mailto:sage [2009/04/04(土) 02:08:21 ID:???] VisualStudioのコード補完のデフォルトがそうなってるだけだろ JavaやPHP使いはMSみたいに無駄に行数消費するのを嫌うよ
878 名前:nobodyさん mailto:sage [2009/04/04(土) 02:09:00 ID:???] @とAに見える俺は目がおかしい・・・? てかA括弧閉じてないけど、スペースのことを言ってるのか・・・?
879 名前:874 mailto:sage [2009/04/04(土) 02:11:43 ID:???] ああすまん俺の頭が混乱してた >>874 がどちらのこと言ってるのか良く分からないけど 俺は@はメソッドの時に使う。 一応Zendのコーディング規約に則ってやってるけど 個人の作業なら別にそんなの君の価値観でやればいいだろ
880 名前:878 mailto:sage [2009/04/04(土) 02:13:15 ID:???] あああ俺は874じゃなくて878
881 名前:nobodyさん mailto:sage [2009/04/04(土) 02:14:37 ID:???] >874 PHPの「標準」なコーディング規約には2つの流儀がある。ひとつはZend、ひとつはPEAR。 で、どっちも1番の括弧スタイルを採用してるんだ。 C++で言えば、MSDNの規約とGNUの標準スタイルが一致しているような状況をイメージすればいいかな。そりゃ合わせるだろ? PHPが初めての言語です、って奴が多いのも影響していると思う。 勿論、PHP以前に他の言語を学んでいた奴の中には別のスタイルで書く奴もいる。 俺も2番のK&Rスタイルで書くしな。
882 名前:nobodyさん mailto:sage [2009/04/04(土) 02:16:56 ID:???] >>881 framework.zend.com/manual/ja/coding-standard.coding-style.html#coding-standard.coding-style.control-statements.if-else-elseif if ($a != 2) { $a = 2; } 知ったか乙
883 名前:nobodyさん mailto:sage [2009/04/04(土) 02:18:31 ID:???] >882 悪い、寝ぼけてた。 関数定義とクラス定義の箇所を読んでたわ。 PEARもifはそのスタイルだな。 if ((condition1) || (condition2)) { action1; } elseif ((condition3) && (condition4)) { action2; } else { defaultaction; }
884 名前:nobodyさん mailto:sage [2009/04/04(土) 02:21:18 ID:???] MS厨はfunction名を大文字で始めとけ
885 名前:nobodyさん mailto:sage [2009/04/04(土) 02:25:13 ID:???] classの修飾子にはpublic、final、abstractが使えるよ
886 名前:870 mailto:sage [2009/04/04(土) 02:37:49 ID:???] >>878 >> 879 >> 880 【パターン@】 if( 1 == 1) { } 【パターンA】 if(1 == 1){ 0} の間違いです。括弧が抜けてましたね。 >>877 そう言われれば確かに勝手に整形されちゃいますね。 >>881 なる程2通りの書き方があったんですね。 いずれにせよ@番で統一されているみたいなのでちょっと安心しました。 今後も@で書いて行こうと思います。 (C#)と同じなのでこちらの方が気分的に見やすいです。 PHPでの実務経験が無いので実際の開発現場ではどちらが主に使われているのでしょうか?
887 名前:870 mailto:sage [2009/04/04(土) 02:39:20 ID:???] うーん、どう考えても↓の方が見易いのですが、、、、 皆さんも↓の方が見やすくないですか? >>883 if ((condition1) || (condition2)) { action1; } elseif ((condition3) && (condition4)) { action2; } else { defaultaction; }
888 名前:nobodyさん mailto:sage [2009/04/04(土) 02:39:35 ID:???] 書き込むボタン押す前に見直ししろ
889 名前:nobodyさん mailto:sage [2009/04/04(土) 02:41:13 ID:???] 俺だったらこれだな。極めて合理的だ if ( (condition1) || (condition2) ) { action1; } elseif ( (condition3) && (condition4) ) { action2; } else { defaultaction; }
890 名前:nobodyさん mailto:sage [2009/04/04(土) 02:48:19 ID:???] >>889 うげぇー
891 名前:nobodyさん mailto:sage [2009/04/04(土) 02:51:50 ID:???] >>889 オナニーコード
892 名前:nobodyさん mailto:sage [2009/04/04(土) 02:53:10 ID:???] >887 そのスタイルはないな。見づらい。 インデントスタイルでガタガタ抜かすお前にはPythonが合っていると思う。 Pythonにはどのインデントスタイルが見やすいとかいう議論が一切存在しないぞ。
893 名前:nobodyさん mailto:sage [2009/04/04(土) 03:03:22 ID:???] >>887 視点移動が多くなって見づらい
894 名前:nobodyさん mailto:sage [2009/04/04(土) 03:25:39 ID:???] >>892 >>893 本気で言ってますか? コードを詰めまくって書くよりゆとりを持たせたコードの方が見易いし、 メンテナンス性もあがる気がするのですが。
895 名前:nobodyさん mailto:sage [2009/04/04(土) 03:30:54 ID:???] それはひらがなだけで書かれた文章の方が読みやすいってのと同じレベルの主張だと思う。 まぁコーディングスタイルは宗教論争なんで、不毛なダケなんだけどさ。
896 名前:nobodyさん mailto:sage [2009/04/04(土) 03:31:20 ID:???] ZendとかPEARとか使ってるなら、逆効果だろ 統一させた方が見やすい
897 名前:nobodyさん mailto:sage [2009/04/04(土) 04:00:44 ID:???] 見やすいのはいいけどスクロールしないと下のほうが見えなくなるのが無理
898 名前:nobodyさん mailto:sage [2009/04/04(土) 04:11:29 ID:???] >>887 そんなとこより括弧と条件式の間のスペースを空けろってな
899 名前:nobodyさん mailto:sage [2009/04/04(土) 05:30:26 ID:???] オレ竜で書くのがいちばんさ
900 名前:nobodyさん mailto:sage [2009/04/04(土) 05:58:30 ID:???] >>887 EclipseでJavaとPHPをやってる俺からいうと if (condition) { } のほうが見やすい 他の人も同じようなこといってるが 最初に使い慣れたIDEの標準の補完機能によって どちらが使いやすいか分かれるんだろう あとはコーディング規約の問題
901 名前:nobodyさん [2009/04/04(土) 07:35:04 ID:+rg3YxkW] fopenってロックの引数がないんですが ちゃんとロックされるんですか? 同時書き込みでファイル壊れたりしませんか?
902 名前:nobodyさん mailto:sage [2009/04/04(土) 07:37:06 ID:???] fopenはリソースを指定してるだけ 書き込みを行う関数はfwrite
903 名前:nobodyさん mailto:sage [2009/04/04(土) 07:39:05 ID:???] マニュアルのちょっと上にflockってあるだろ
904 名前:nobodyさん mailto:sage [2009/04/04(土) 07:43:24 ID:???] ロックは別にするんですね ありがとうございました。
905 名前:nobodyさん [2009/04/04(土) 11:05:08 ID:UT159Z4L] winでは動かない関数があるのでこのさい仮想マシン上にlinuxを入れることにしました ノートPCなので容量を抑えたいのですが、linuxしてる方でおすすめのものがございましたら教えて下さい
906 名前:nobodyさん mailto:sage [2009/04/04(土) 11:16:09 ID:???] 俺、クラスや関数は>>874 でいう@、条件文なんかはAで書いてる・・・・
907 名前:nobodyさん mailto:sage [2009/04/04(土) 11:42:14 ID:???] @の書き方って、昔ならではのC言語の関数書くときの引数の型宣言の名残なのかね
908 名前:nobodyさん mailto:sage [2009/04/04(土) 12:46:42 ID:???] 現在Apache+PHP5+MySQL5を使用してWEBサイトを作る練習をしているのですが、 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ hogehoge.html tomato.php に各WEBページ(phpファイル)を置いて localhost/ でアクセスしているのですが、これを C:\Work hogehoge.html tomato.php でアクセス出来る様にするにはどうすれば良いでしょうか・ ※デフォルトのパスをC:\Workにしたいと思っています。
909 名前:nobodyさん mailto:sage [2009/04/04(土) 12:47:32 ID:???] php関係ない apacheのdocument root あと>>1
910 名前:908 mailto:sage [2009/04/04(土) 13:04:00 ID:???] >>909 ありがとうございます。 document root を 【httpd.conf】 DocumentRoot "C:/htdocs" に変更しApacheを再起動したのですが Web サイトによってこのページの表示を拒否されました というエラーが出て一向にページを見る事が出来ません。 なぜでしょうか?
911 名前:nobodyさん mailto:sage [2009/04/04(土) 13:13:06 ID:???] ファイルをC:/Workにおいてるのになんでhttpd.confのほうは「C:/htdocs」にしたん?
912 名前:nobodyさん mailto:sage [2009/04/04(土) 13:41:34 ID:???] >>910 >>1 読め糞野郎
913 名前:nobodyさん mailto:sage [2009/04/04(土) 13:43:54 ID:???] ていうかPHP関係ないって言ってんだろカス
914 名前:nobodyさん mailto:sage [2009/04/04(土) 13:58:00 ID:???] DocumentRoot を C:/Work にすればいいんじゃねーの。 あとID出せよ
915 名前:nobodyさん mailto:sage [2009/04/04(土) 15:00:42 ID:???] documentrootだけ変えても意味ないよ documentrootのディレクトリ設定のパスも書き変えないと意味ないよ
916 名前:908 mailto:sage [2009/04/04(土) 15:19:05 ID:???] >>911 ファイルは、C:/htdocsに配置しました。 >>914 IDを出す、 というのは所謂 fusianasan ですか? >>915 ありがとうございました。 設定ファイル系を色々といじってみたところ無事動作する様になりました。 ありがとうございました。
917 名前:nobodyさん mailto:sage [2009/04/04(土) 15:27:18 ID:???] ルールも守れないような奴は二度と来んな
918 名前:858 [2009/04/04(土) 15:39:59 ID:Q5CHJrya] 遅レスすみません。 >>866 氏>>867 氏他皆様ありがとうございます。 いろいろ試してみたいと思います。
919 名前:nobodyさん mailto:sage [2009/04/04(土) 20:31:48 ID:???] 慇懃無礼なやつだなw
920 名前: 220x151x2x6.ap220.ftth.ucom.ne.jp mailto:sage [2009/04/04(土) 20:44:31 ID:???] ◆質問用テンプレ 【OS名】WindowsXP 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql5 【質問内容】 セッションが破棄されるタイミングがいまいち分かりません。 セッションファイルの数を数える事により、現在サイトにアクセスしている人の 大まかな数を数えているのですが、ブラウザを終了してもセッションファイルは残ったままです。 理想を言えば、ユーザにログインボタンを押してもらい session_destroy を呼ぶ 事によりセッションファイルを削除するのが良いとは思いますが、 如何せんブラウザなのでログアウトボタンが必ず押される保障はありません。 ブラウザが閉じられてから5分したらセッションファイルを削除する、といった事は可能なのでしょうか? 通常セッションは一定時間経てば破棄されるらしいのですが、phpの場合はどこで設定すれば良いのでしょうか?
921 名前:nobodyさん mailto:sage [2009/04/04(土) 20:48:04 ID:???] >>920 >>1
922 名前:nobodyさん mailto:sage [2009/04/04(土) 21:11:33 ID:???] >>920 頑張ってfusianasanしたのはいいんだが君が表示してるのはIPだ IDを出してくれたまえ
923 名前:nobodyさん mailto:sage [2009/04/04(土) 21:12:45 ID:???] ID出てないが一応マジレスするとブラウザが閉じられたという情報は送られません
924 名前:nobodyさん mailto:sage [2009/04/04(土) 21:39:31 ID:???] ttp://jp2.php.net/manual/ja/session.configuration.php いつ消えるかはsession.gc_maxlifetimeで決まる。 集計は、閉じられた情報は取得できないので、セッション変数に「最終利用日時」を記録しておく。 画面を表示するたびにこれを更新して、集計時はその数字を見て判別する、という手がある。 例えば、5分以内にサイトにアクセスした人の人数を「現在サイトにいる人数」と見なすとかな。 ファイルだと大変なので、DBなどの集計しやすい場所にセッション情報を格納するとやりやすい。
925 名前:nobodyさん mailto:sage [2009/04/04(土) 22:06:27 ID:???] >>924 荒らすな
926 名前:nobodyさん mailto:sage [2009/04/04(土) 22:18:43 ID:???] 俺はセッション使わないでアクセスログでオンラインカウンターをやってる
927 名前:920 ◆gRDEQwu9i2 mailto:sage [2009/04/04(土) 22:21:55 ID:???] >>922 これの事だったんですねw 勘違いしてました。 >>923 そうですよね。 >>924 ちょっと色々といじってみます。 >>925 別に荒らしてはいない気がしますが・・・ >>926 DBにアクセス情報を記録させてそこで判定した方が確実で簡単かもしれませんね。
928 名前:nobodyさん mailto:sage [2009/04/04(土) 22:25:35 ID:???] 死ねカス
929 名前:nobodyさん mailto:sage [2009/04/04(土) 22:34:25 ID:???] 春だなw
930 名前:nobodyさん mailto:sage [2009/04/04(土) 22:34:35 ID:???] >>927 まじれすすると、それはトリップ ID表示はメール欄を空白にするかageと書く