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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/04/29(金) 17:11:00.40ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 105
http://hibari.2ch.net/test/read.cgi/php/1300302034/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0348nobodyさん2011/05/13(金) 15:51:38.57ID:TvKhtBYV
EUC-JPの文字列で機種依存文字だけ削除しようとしたけど
思ったより難しすぎてワロタwwwwwwwwww

ごめん質問しようと思ったら仕事入った後で質問します
0349nobodyさん2011/05/13(金) 20:38:09.99ID:???
>>348
http://ja.wikipedia.org/wiki/EUC-JP
このバイト列だけ削除すればいいのでは?
0350。2011/05/13(金) 21:20:16.97ID:???
それが難しいんだろうよ。
mb_substitute_character('none');
$str = mb_convert_encoding(mb_convert_encoding($str, 'utf8', 'EUC'),'EUC','utf8');
0351nobodyさん2011/05/14(土) 03:05:48.85ID:???
いや、機種依存文字だけを削除したいんじゃないの?
0352nobodyさん2011/05/14(土) 14:58:50.42ID:???
簡単。
delete 文字 from EUC文字コード表 where 文字 = 機種依存文字
0353nobodyさん2011/05/14(土) 14:59:52.26ID:???
文字コード表の文字を消してどうすんだよw
0354nobodyさん2011/05/14(土) 15:14:32.38ID:???
>>353
IDを出さない人には答えません。
0355nobodyさん2011/05/14(土) 15:33:40.63ID:???
>>348

未だに仕事が入ったままなのか?
0356nobodyさん2011/05/14(土) 17:34:51.53ID:92HPTgqh
テスト�@あいうえおかきくけこ
a5c6 a5b9 a5c8 ada1 a4a2 a4a4 a4a6 a4a8 a4aa a4ab a4ad a4af a4b1 a4b3

特殊文字の
�@である「ada1」を空白に置き換えた場合、
「きく」のようにつながっている「a4ad a4af」の「a4 "ada4" af」も置き換わってしまいます。

この部分だけ対処しても恐らく他で同じような不具合が起きそうです。

なので、一度UTF-8に変換して置き換えようと思ったのですが、
mb_convert_encoding($text, "UTF-8", "EUC-JP"); にした場合

e38386 e382b9 e38388 3f e38182 e38184 e38186 e38188 e3818a e3818b e3818d e3818f e38191 e38193

と、�@が3f(003fが「?」になる)になってしまって�@の文字コードではなくなります。

EUC-JPの場合、機種依存文字を削除する術はあるのでしょうか

>>355
ごめんなさい、ちょっと色々仕事が・・・。
0357nobodyさん2011/05/14(土) 17:43:44.20ID:92HPTgqh
一度、sjis-winに変換する方法があるのか!
試してみる!
0358nobodyさん2011/05/14(土) 17:54:31.72ID:???
mb_convert_encoding($v, 'UTF-8', 'eucjp-win');
で大丈夫だったと思うが、好きな方法でやればいいよ。
0359nobodyさん2011/05/14(土) 18:01:31.93ID:ucsP9ViJ
Webサーバー複数台のシステムで、全鯖で同じPHP5.2.16使ってるんだけど
最近不具合を追っていたら、preg_replaceの結果が鯖毎に違うことが原因と判明。
最近追加した鯖のみ異なるようなんだが、preg_replace内部の動きは何に依存するの?
具体的には\p{Ll}\p{Lm}などUnicode系?を置換するとおかしくなる(もしくは以前おかしかった?)模様。
0360nobodyさん2011/05/14(土) 18:29:52.13ID:???
>>359
libpcreのバージョン
0361nobodyさん2011/05/14(土) 18:37:42.27ID:???
PHP5.2系はPHP5.2.17でサポート終了したのでPHP5.3に乗り換えましょう
0362nobodyさん2011/05/14(土) 18:50:27.65ID:ucsP9ViJ
>>360
phpinfoで確認した限りでは、同じでした。
どちらも
PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 6.6 06-Feb-2006
0363nobodyさん2011/05/14(土) 19:26:08.36ID:???
>>356
だまされたとおもって 350
0364nobodyさん2011/05/14(土) 19:48:44.79ID:JKTyqoMu
とあるログインページにPHPでログインしたいのですが POST送信がうまくできません

IDは送信できているのですが パスワードが送信できません

IDのinputにはvalueがあるのですが パスワードのinputにvalueがなく JavaScriptのgetElementByIdで取得しているようなんです

そこで JavaScriptの変数名.value=""; にパスワードを入力して送信したいのですがどうしたらいいでしょうか?
0365nobodyさん2011/05/14(土) 19:51:42.33ID:???
人様が用意してくれたページからログインしろクズ
0366nobodyさん2011/05/14(土) 21:37:11.42ID:???
>>364
PHPなのかJavaScriptなのか。後半の文章を読むとJavaScriptのようだけど、それなら無理だしスレ違い。
PHPでのPOSTなら、Socket使えばパスワードも送信できる。
0367nobodyさん2011/05/14(土) 21:43:25.37ID:???
そもそも、IDのinputにvalueがあって、 パスワードにない理由が分かってないので
いらんことしてる気がするな
0368nobodyさん2011/05/15(日) 01:59:57.56ID:pSpByQ/a
はじめまして。
sessionでログインを実装しているのですが、ログインを継続したいです。
session.gc_maxlifetime等を変更したりしたりとか、
cookieのPHPSESSIDの有効期限を無理やり伸ばしてみたりとか、
いろいろ試してみたのですが、うまく実装が出来ません。。。
クッキーの有効期限が優先される等もみたのですが、実際そうでもないみたいですし。。。
どの様にしたら、ログイン継続を実装可能でしょうか?よろしくお願いします。
0369nobodyさん2011/05/15(日) 02:38:51.72ID:???
>>368「うまく実装が出来ません」では何で困ってるのかわからん
0370nobodyさん2011/05/15(日) 07:12:45.64ID:???
>>368
ログイン後の各ページでsession_start();を忘れているだけ、とエスパーしてみる
0371nobodyさん2011/05/15(日) 12:43:24.25ID:???
まずはクッキーをONにすることですねハイ
03723642011/05/15(日) 18:01:04.59ID:???
>>366
無理ですか・・・分かりました  回答ありがとうございました

Socketについて調べてみることにします
03733682011/05/15(日) 21:09:21.05ID:p35+GTTU
>>369
「うまく実装が出来ません」では何で困ってるのかわからん

ログインの継続という言い方がまずかったですね。
ブラウザを閉じた後や一定時間が経った後でも、1〜2週間くらいログインを継続したいのですが、SESSIONでは実装方法がうまく行かずという感じです。
よろしくお願いします。
0374nobodyさん2011/05/15(日) 21:15:53.51ID:???
セッションの持続時間を2週間にすればいいのでは?
0375nobodyさん2011/05/15(日) 21:18:07.23ID:58gt7XbJ
session.cookie_lifetime
0376nobodyさん2011/05/15(日) 22:10:07.55ID:JT6jB8NJ
【OS名】CentOS 5.5
【PHPのバージョン】5.2.17
【連携ソフトウェア】MySQL 5.04
【質問内容】
PHPのMySQLに大量のレコードをINSERTしていく処理をしているのだけど、
5百万レコード辺りで勝手に止まります。
以下設定済み。

/etc/php.ini
max_execution_time=86400

/etc/ssh/sshd_config
ClientAliveInterval 60 (sshからPHP実行してるので切断防止)

スクリプト内のテキスト出力を、ob_startして
最後にテキストファイルに書きだすようにしてるので、
メモリ溢れとかでしょうかね?
phpのエラーログは出てなかったぽいのでよくわからず…。
0377nobodyさん2011/05/15(日) 22:29:49.42ID:???
insertの度に何か出てるんじゃね?
0378nobodyさん2011/05/15(日) 23:42:40.15ID:JT6jB8NJ
ですかねー。
ob_startでメモリ喰われてそうなので、この辺り直してみます。
0379nobodyさん2011/05/16(月) 02:22:40.22ID:XnN75Tph
>>376
こういうのたまに遭遇するんですけど、メモリ溢れ特定するうまい方法ありますか?
0380nobodyさん2011/05/16(月) 02:23:34.89ID:???
topコマンドでも叩けばいいんじゃね
0381nobodyさん2011/05/16(月) 09:49:41.50ID:???
>>379
http://www.php.net/manual/ja/errorfunc.configuration.php#ini.log-errors
http://www.php.net/manual/ja/errorfunc.configuration.php#ini.error-log
03823682011/05/16(月) 09:57:16.20ID:0KSOaR/a
>>374
継続時間は2週間にしてるんですが、なぜか2週間もたないんですよね。
>>375
cookie_lifetimeでも、うまくいかなかったです。。。
0383nobodyさん2011/05/16(月) 11:12:27.58ID:???
ログイン継続ってブラウザを2週間ひらきっぱなしにして試したわけ?
03843682011/05/16(月) 11:25:18.37ID:0KSOaR/a
>>383
2週間どころか、1日もたないんですよ。
@ini_set('session.gc_maxlifetime','10368000');
@ini_set('session.gc_divisor','1000');
@ini_set('session.cookie_lifetime','10368000');
@session_start();
超伸ばしてみたりしてますw

ブラウザひらきっぱなしでスリープ状態から復帰すると、ログアウトしてるのが現状です。
0385nobodyさん2011/05/16(月) 11:46:52.01ID:???
session.gc_probabilityとsession.gc_divisorを1にして
切れた頃に他ブラウザからアクセスして
サーバ側のセッションファイルが削除されてないようなら
ブラウザ側で切っちゃってるのかもね
0386nobodyさん2011/05/16(月) 16:14:56.62ID:???
>>384
複数のブラウザや複数のPCでも同じ現象になるのならコードに問題がある
03873682011/05/16(月) 16:26:42.69ID:0KSOaR/a
>>385
あとで試してみます。結果報告しますね。
>>386
コード内で$_SESSIONは特にいじってないんですけどね^^;
上記sessionは、共通でincludeしてあるファイルの一番先頭に書いてます。
0388nobodyさん2011/05/16(月) 16:29:24.37ID:???
$_SESSIONはこの際関係ないだろ
03893682011/05/16(月) 16:32:32.57ID:0KSOaR/a
>>388
コード内でsessionに関係するのは、$_SESSIONだけかなと思ったんですが、
それ以外でsessionに影響することってあるんでしょうか?
0390nobodyさん2011/05/16(月) 16:33:39.26ID:???
当たり前のことだけど、再現する最小限のコードを作ろう。
それから、それを貼ろう。
0391nobodyさん2011/05/16(月) 16:39:44.84ID:???
こんなPHPスクリプト探してます、はここで良い?
0392nobodyさん2011/05/16(月) 16:45:19.62ID:???
>>384
スリープする時に通信が切断されているんじゃないの
0393nobodyさん2011/05/16(月) 16:49:10.51ID:???
>>392
通信が切断されてセッションがクリアされんのかよw
httpはリクエストの都度通信切断してるだろうが
0394nobodyさん2011/05/16(月) 17:05:27.61ID:???
ブラウザを再起動してもセッションを回復出来るんだっけ
0395nobodyさん2011/05/16(月) 17:06:57.90ID:???
>>394
ブラウザの設定によるよ
03963682011/05/16(月) 18:09:44.51ID:0KSOaR/a
>>390
sessionに関する最小限のコードは >>384 だけです。全ページ共通です。
ログインしたときは、$_SESSION['hoge']にユーザーIDを入れます。
ページ表示時に$_SESSION['hoge']の値でログイン判断してます。
とりあえず、説明だけでも。
0397nobodyさん2011/05/16(月) 18:42:04.62ID:???
>>396
その後半がないから最小限のコードになってないってことじゃね。
再現する最小限のコードを作ってみなよ。その過程で穴が見つかることってよくあるよ
0398nobodyさん2011/05/16(月) 19:16:20.58ID:???
>>396
サーバー側でいくらセッションを維持しようと、ブラウザがセッションIDをクリアしてしまえばどうしようもない
どのタイミング(ブラウザを閉じる、スリープになるetc)でIDをクリアするかはブラウザによって動作が微妙に違う

ログイン状態を長期間維持する仕組みは、例えばこうして実現する

1)ログイン時にチケット(uniqidとか色々組み合わせた予測されづらい数字)を発行する
2)サーバー側のDBでユーザーIDとチケットおよびログイン時間を関連付ける
3)チケットをクッキーで食わせる
4)次回ログインページを開いた際、クッキーにチケットがあればログイン時間と見比べてログイン認証を通過
 ※当然同じチケットを使い続けるのは危険なため、このとき再発行してクッキーを上書きする
03993682011/05/16(月) 20:17:12.44ID:0KSOaR/a
>>398
ありがとうございます。
セッションでやらずにクッキーとDB(or ファイル)でログイン状態を維持するように判断させたほうがいいってことですね。
セッションではログインの維持は出来ないって考えてもよろしいんでしょうか?
0400nobodyさん2011/05/16(月) 20:32:18.26ID:???
ログインの維持なんてセッション管理の目的と逆行するようなことやろうとしてるからな
出来ないというよりやるべきでないといったほうが正解か
0401nobodyさん2011/05/16(月) 21:11:28.46ID:???
いやもうアホは回答すんなってw
0402nobodyさん2011/05/16(月) 21:36:36.21ID:???
半分ニートのような生活をしつつweb制作に興味を持ち、HTML+CSS+XHTMLを学び、これじゃスタートラインにも立ってないなと分かりつつも面接に行きました

勿論採用されるはずもなく(というか採用されれば超ラッキーくらいで、なにか話を訊ければ良いくらいのつもりでした)、話を聞くに、PHPを覚えれば実務経験がなくても突破口にはなると言われました
そこでPHPを勉強しようと思い、参考書、入門書を買おうと思うんですが、何かお勧めの本はありますか?自分のレベルは上記の通り何も知らないです

amazonでは「よくわかるPHPの教科書」がやたら評判が良いのでそちらを検討しているんですが、他に良書があれば是非教えてください
よろしくお願いします
0403nobodyさん2011/05/16(月) 21:57:46.33ID:???
突破口にはならんだろ・・・
どんだけ多いと思ってるんだPHP技術者()笑が
0404nobodyさん2011/05/16(月) 22:00:31.66ID:???
勉強の仕方も自分で決められない奴には無理
0405nobodyさん2011/05/16(月) 22:19:13.42ID:9d+tcru/
PHPでもPerlでもAndroidでもiPhoneでもなんでもいいからひとつでも動かせる程度できれば後はどうにかなる
だがこんなとこで聞いてるようじゃな…
0406nobodyさん2011/05/16(月) 23:22:02.14ID:???
ニートで暮らせるなんて裕福だなおい
0407nobodyさん2011/05/16(月) 23:30:22.48ID:???
複数できても地方じゃ実務経験ない時点で確実に無理だけどな(´・ω・`)
0408nobodyさん2011/05/16(月) 23:36:18.77ID:???
一応東京住みです。何の目標、目的意識もなく働いているだけなので半分ニートみたいなもんかなと思っています
こんな下らない質問なのでこのスレなら平気かなと思い質問しましたが、スレ違いだったようなので失礼します
0409nobodyさん2011/05/16(月) 23:39:00.78ID:???
>>402
どんなのでもいいから、Webサイト作って公開して、それ見てもらうのがいいかも。
Windows、Linuxの両方で構築していればなおよし。
ふーん、で終わるかもしれないけど、やってみないことにはわからん。
0410nobodyさん2011/05/16(月) 23:53:51.23ID:???
PHPメインのとこは弱小が多いから教育してやる余裕はない
25になってないなら未経験OKのところに突撃すればいい
JavaとかC#でやってるとこ
そのうちWebの案件もくるだろう
と楽観視できたのが3年ほど前までの話
ここ2・3年は新卒採用さえできない企業が多くなってきてる
PHPの本を探してるなら>>1読めばいいよ
0411nobodyさん2011/05/17(火) 00:29:04.44ID:???
俺はベンチャーに行って「今なんにも出来ないけど勉強します」っていったら採用された
勉強できるとこ証明すればおk
0412nobodyさん2011/05/17(火) 00:45:25.39ID:???
>>399
>>398が言ってる事は解決にならん
あんたのやるべき事は問題の切り分けから

<?php session_start(); echo session_id(), ' : ', @++$_SESSION['a'];
これを再現する状態でリロードして…
- IDだけ変わる : ブラウザがCookieを送っていない → HTTPレスポンスのSet-Cookieを確認
- IDもカウントも変わらない : セッションデータが破棄されてる → http://www.php.net/manual/ja/session.configuration.php
- カウントだけ変わる : 問題なし → やったねたえちゃん
04133682011/05/17(火) 01:24:57.53ID:uHRzMhgS
>>412
やったねたえちゃんでしたw
セッションデータもCookieも大丈夫みたいですね。^^;
0414nobodyさん2011/05/17(火) 01:50:08.87ID:p7ZABAr6
PHPに限らない質問かもしれないけど
DBのトランザクション処理って複数の更新処理がある場合のみにやればいいですか?
それとも更新処理が一つでもあればやるものですか?
04153902011/05/17(火) 01:58:30.02ID:???
>>413
だから言ったのに

>>414
複数の時だけでいいよ。DBアクセスクラスで勝手にトランザクションはるかもしれないけど
0416nobodyさん2011/05/17(火) 02:07:09.06ID:???
DBによる
0417nobodyさん2011/05/17(火) 08:40:42.15ID:???
>>414
データベース板に質問スレがあるからそっちで教えてもらう方がいい

これだけじゃあれなんで、更新以外でも必要になる場合がある
検索結果リストのページングに必要な件数とデータを2回のクエリに分けて取得する場面で
それぞれの取得の合間に他のプロセスがデータを更新・削除すると
データと件数が一致しなくなる
またある一つの条件を基に二つのテーブルからデータを削除する場面で
一方の削除は完了しもう一方のはエラーが発生して中断された場合にも不整合が起き得る
04183982011/05/17(火) 10:36:33.53ID:???
>>399
セッションIDのクリアタイミングがブラウザ依存である以上、セッションのみで実現するのは不可能と考えていいよ
0419nobodyさん2011/05/17(火) 11:13:48.31ID:???
ブラウザのみに依存するわけでもないけどな
04203682011/05/17(火) 11:20:39.08ID:KShR6cC9
>>418
ブラウザのセッションに対する有効期限は、セッションのクッキーで判断してるんですよね。
ってことは、クッキーのみで実装しようが一緒ってことですか?
0421nobodyさん2011/05/17(火) 11:26:09.78ID:???
セッションはデフォルトでCookieを前提にしてるんだから
>>398の俺俺セッションも無意味だしな
常識的に考えりゃセッションが意図した通りの寿命を持たない原因を突き止めるのが先だろ
0422nobodyさん2011/05/17(火) 11:30:11.97ID:???
>>398の期待する動作は自動ログインに近いものじゃない?
セッションは求める動作とはほど遠いと思うんだけど。
0423nobodyさん2011/05/17(火) 12:07:24.35ID:???
>>421
お前は>>373を読んでないだろ?

>>422
うん、>>368は自動ログインを求めているからセッションでは実現不可能
0424nobodyさん2011/05/17(火) 12:17:11.52ID:???
全くもって実現可能なんだが、なぜこんなに話が噛み合わないのか
04254212011/05/17(火) 12:18:03.71ID:???
>>423
> ブラウザを閉じた後や一定時間が経った後でも
これか、見落としてた悪い

でPHPのセッションもお前も同じCookieを使っているんだが
なんで結果が変わると思う訳?
04263682011/05/17(火) 12:21:23.06ID:KShR6cC9
>>424
そうなんですよ。いろんなサイトを見ても、バラバラなんで^^;
自分もよくわからなくなってきたんで、ココで質問してみました。
0427nobodyさん2011/05/17(火) 12:46:28.28ID:???
>>424
ブラウザを閉じたらセッションIDをクリアするのが一般的なブラウザの動作
話がかみ合わないのは「ブラウザを閉じてもセッションを継続」の部分を見逃してるからじゃないの

一部のブラウザではウィンドウをすべて閉じてもセッションIDを維持するようなオプションだか
プラグインがあるけど、それは例外でしょ
0428nobodyさん2011/05/17(火) 12:58:04.45ID:3Z0Fp5Ls
すみません、初心者の質問です。
http://fw.mk-style.com/main.php#/top/
↑はゲームのサイトで、ページを切り替えると、URLは「main.php」以降だけが変わるんですけども。
これの意味が良く分かりません・・。
04293682011/05/17(火) 13:07:18.80ID:KShR6cC9
>>427
オプションやプラグインとか関係なしに、
@ini_set('session.gc_maxlifetime','10368000');
@ini_set('session.gc_divisor','1000');
@ini_set('session.cookie_lifetime','10368000');
@session_start();
の設定で、ブラウザ閉じて、開いても、セッションは維持されています。
ただ、なんらかのタイミングでセッションが破棄されてしまうのも現状です。
その原因がよくわからないんですよね。

すいません。なんか話のポイントわかりづらいですよね。
・ログインの継続がしたい(ブラウザ再起動後も)
・上記設定でブラウザを再起動しても、ログインは維持される
・なんらかのタイミングでログインが維持されない(1日もたないことが多い)
・コード内でログアウト時以外、セッションをいじっていない

上記sessionの設定で、セッションが破棄される(ログアウトする)タイミングは、どんなケースが考えられるのでしょうか?
その部分が分かれば、セッションでも対応できるのかなと。
0430。 ◆oDupeixhZv52 2011/05/17(火) 13:30:21.60ID:???
セッションと、セッションIDとクッキーがめちゃくちゃになってるな。
セッション事体破棄できるのはサーバーだけだから、消されてるだけ。PHPじゃない話。
たとえば、セッションIDをgetにつっこむクッキーレスにすれば、ブラウザの問題は分離できるよ。
0431nobodyさん2011/05/17(火) 13:35:53.01ID:???
>>427
もういい。この件については一切レスしなくていい。
0432nobodyさん2011/05/17(火) 13:59:55.43ID:???
>>430
そのやり方だとセッションハイジャックのリスクがあるんじゃない?
有効期限の長いセッションでURLに埋め込むのはお勧めできない
ジャックされてもいいようなどうでもいいページなら別だけど。
0433。 ◆oDupeixhZv52 2011/05/17(火) 14:01:35.20ID:???
>>432
そらそうだろよw
0434nobodyさん2011/05/17(火) 14:06:48.75ID:???
>>433
ならハイジャックにも触れてあげなよ
0435nobodyさん2011/05/17(火) 14:14:24.62ID:???
どう見てもそれ以前のトラブルシュート段階だろ
だいたいブラウザ閉じてもセッション維持したいって言ってるのに
毎回ブックマークでもさせるのか?

つーかサーバ側のセッションデータとブラウザ側のクッキーぐらい覗けるようにしとけよ
どんだけこのネタ引っ張るつもりだ
0436。 ◆oDupeixhZv52 2011/05/17(火) 14:15:02.32ID:???
>>434
ブラウザのことについては、俺もいらんこと書いたな。どっちかというと質問者じゃなくて、
分かってない人向けのいらん一言だったわ。
聞かれてないこと書くのは要らぬお世話になって良くないのが分かったよ。ありがとう。
0437nobodyさん2011/05/17(火) 14:19:13.78ID:???
>>429
もう一度言うよ。
再現させられるコードを作成して、それを貼って、何が問題なのかを伝えてください。
0438nobodyさん2011/05/17(火) 15:07:06.72ID:???
>>429
共有サーバーで session.save_path が共有されている場合は
他人のスクリプトによって消されている可能性がある
あとは他の人が言うようにセッションIDやCookieヘッダのログを取って
ログアウト状態になった時に確認したりね

session_start();
$log = implode("\t", array(gmdate(DATE_W3C), session_id(), @$_SERVER['HTTP_COOKIE'], var_export($_SESSION, true))) . PHP_EOL;
file_put_contents('ここにログファイル名', $log, FILE_APPEND | LOCK_EX);
04393682011/05/17(火) 15:42:33.78ID:qipHoIvY
>>437
再現されるコードを書くとしたら、、、
■ログイン時
<?php
@ini_set('session.gc_maxlifetime','10368000');
@ini_set('session.gc_divisor','1000');
@ini_set('session.cookie_lifetime','10368000');
@session_start();
@session_regenerate_id();
@session_register('ID');
$_SESSION['ID'] = "id";
echo "login ok";
?>
■ページ表示時
<?php
@ini_set('session.gc_maxlifetime','10368000');
@ini_set('session.gc_divisor','1000');
@ini_set('session.cookie_lifetime','10368000');
@session_start();
if(isset($_SESSION['ID']) && $_SESSION['ID'] != null ){
echo "login";
}else{
echo "not login";
}
?>
実際のコードと少し違いますが、コレで再現されるはずです。

>>438
専用のサーバーなんで、パスは大丈夫です。
ありがとうございます。ログを吐き出してみますね。
0440nobodyさん2011/05/17(火) 16:32:03.90ID:JyZBkyIg
【OS名】fedora13
【PHPのバージョン】5.2
【質問内容】
// セッション開始
session_start();

// セッションデータを保存
$temp = $_SESSION;

// セッション変数を破棄
$_SESSION = array();
session_destroy();

// セッションを再作成
session_regenerate_id(TRUE);

// セッションIDを作成
session_id($this->makeSessionId("sha1"));

// セッションIDを再生成
session_start();

// セッションデータを元に戻す
$_SESSION = $temp;

【やりたい事】
自前のセッションID作成関数でワンタイムセッションを発行し続けたい
【問題点】
毎回セッションファイルが3つ増えていきます。
SESSIONに保存されたデータが渡されていません。
0441nobodyさん2011/05/17(火) 17:13:56.35ID:???
>>440
ウチのDebianのPHP/5.2.6-1+lenny10では問題なし。
ちなみにブラウザはIE6/7/8、Fx4。

リクエスト毎にちゃんとセッションID変わってる。
ゴミセッションファイルも残らない。
セッション変数も受け渡されてる。
レスポンスヘッダのSet-Cookieも重複なし。
0442nobodyさん2011/05/17(火) 18:13:15.25ID:JyZBkyIg
>>441
framework使ってた所為でファビコンアクセスで、余計なセッションが1つ出来てた。
デバックツールで更に1個余計だった

ただ、
session_id($this->makeSessionId("sha1"));
これ抜くと問題無いけど、入れると上手く動かなくなる。。。
0443nobodyさん2011/05/17(火) 19:48:13.04ID:???
>>442
>>437
0444nobodyさん2011/05/17(火) 20:09:37.08ID:???
どうせsession_start()前に何か出力しちゃってるとかでしょ
0445nobodyさん2011/05/17(火) 22:30:00.58ID:n5tnk9Oo
素直にsession_set_save_handlerつかえば
04463682011/05/17(火) 23:00:48.90ID:KShR6cC9
>>368です
ログを見てみたところ、なんとなく原因が分かりました。
/tmp/以下のセッションファイルが、あるはあるんですが、
空になってました。。。ブラウザのクッキーは生きてるみたいです。
なんか設定が足りないんですかね。。。
0447nobodyさん2011/05/17(火) 23:15:28.52ID:???
>>446
てことはログイン後の表示画面で常にnot loginが表示されるはずだよな
その時点で気づくだろ
04483682011/05/17(火) 23:25:28.48ID:KShR6cC9
>>447
最初はデータが入っていて、
-rw------- 1 hoge wheel 28 5 17 21:17 sess_de2115feb4047288c2d449474fe728de
と、loginになってるんですが、なんらかの原因で、
-rw------- 1 hoge wheel 0 5 17 21:17 sess_de2115feb4047288c2d449474fe728de
と、/tmp/以下のファイルの中身が空になるみたいです。
■ このスレッドは過去ログ倉庫に格納されています