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

【PHP】下らねぇ質問はここに書き込みやがれ 22

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/08(木) 05:09:28ID:5gGJKVO4
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0072202006/06/09(金) 15:21:56ID:???
>>66
以下をforeach($logs as $value)に入れたらログにきちんと書き込むことが出来ました。
$fp = fopen("log.csv", "w");ですと1行しか書き込めなかったのですがfopenのオプションを
"a"にしたらきちんと全部書き込んでくれました。

$fp = fopen("log.csv", "a");
flock($fp, LOCK_EX);
fputs($fp, implode(",", $line) . "\n");
flock($fp, LOCK_UN);
fclose($fp);
0073nobodyさん2006/06/09(金) 15:26:10ID:???
>>71

iterationでどない

http://sunset.freespace.jp/smarty/SmartyManual_2-6-3J_html/language.function.foreach.html
0074軟式PHP2006/06/09(金) 15:46:03ID:???
>>72
まぁ、「動くレベル」ならそれでもいいけどループ毎にfopenしてたらボトルネックになるし、ロックも怪しくならんかね。
1行しか書き込まれなかったのは"w"で書き込んでたからだろうと思ったから
最後にfopen,fcloseはforeachの外で行うことと補足してたんだが。
>>67にあるようにバッファをためて最後に書き出すのが一番いいと思うぞ。
0075nobodyさん2006/06/09(金) 17:07:05ID:5EGQXMwm
>>71
section
0076nobodyさん2006/06/09(金) 17:14:26ID:???
引き継いだプログラム全体をmysql_connectでgrepしたら598個出てきやがった('A`)

こんなとき、手早く共通モジュールに移す方法ってどうやってます?
ウチだと普段はDB関係は独自クラスかpearを共通クラスで一発読みなんだけど…。
0077nobodyさん2006/06/09(金) 18:06:32ID:???
>>76
全部置換すれば一発だろ。
0078nobodyさん2006/06/09(金) 18:27:31ID:96A8iKx8
>>77
何を使ってですか?
秀丸では開ききれないくらいのファイル数です。

しかも、中の書き方もめちゃくちゃだし。
接続して、何か処理をはさんでデータベース選択したり…。
0079nobodyさん2006/06/09(金) 18:42:24ID:???
>>78
っ[ファイル置換]
0080572006/06/09(金) 21:46:36ID:???
>>58
ありがとうございます。できました。
0081nobodyさん2006/06/09(金) 21:55:08ID:???
基本的な質問ですいませんが、定数の再定義って出来ないのでしょうか?
例えば

define('DATA','123');
define('DATA','456');
echo DATA;

とすると最初に定義した'123'が表示されてしまいます。
後からクリアしたり再設定出来ないのでしょうか?
0082nobodyさん2006/06/09(金) 22:07:18ID:???
変更するようなものを定数で定義しちゃいかんよ。
0083nobodyさん2006/06/09(金) 22:10:55ID:???
>>82
レスありがとうございます。
変数に変えるようにします。
0084nobodyさん2006/06/09(金) 22:25:15ID:???
本当にくだらない質問ですみません。

http://localhost/というのは、
C:\Program Files\Apache Group\Apache2\htdocs\ですよね。

それを、他の場所で(例えばマイドキュメント)で実行したいのですが
どうすればよいですか?
0085nobodyさん2006/06/09(金) 22:27:50ID:???
スレ違いだけど
つhttpd.conf
0086nobodyさん2006/06/09(金) 22:29:57ID:???
>>84
http://localhost/というのは、
C:\Program Files\Apache Group\Apache2\htdocs\ではない
0087nobodyさん2006/06/09(金) 22:30:08ID:???
そりゃあんさん、apacheの設定のお話でっせ。
設定ファイルのhttpd.confを良く読んでごらん。分からん場合は適当な板へGo。
0088nobodyさん2006/06/09(金) 22:55:23ID:uli7/Tc4
>>85-87
すみません、解決できました。
httpd.confのDocumentRoot "E:/Web"に設定しなおしました。
その下に、
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
とあるのですが、これも変更する必要はあるのでしょうか?
0089軟式PHP2006/06/09(金) 23:01:00ID:???
>>88
みんながスレ違いって優しく教えてくれる間にApacheスレ探したほうがいいよ。
0090nobodyさん2006/06/09(金) 23:29:05ID:???
思ったんですが、hostやUAで判別して検索エンジン専用ページを
NOARCHIVEで書き出すようにしたら誰かに怒られますか?
0091nobodyさん2006/06/10(土) 00:02:37ID:3lMQcCFE
>>88
俺優しいから教えてやるよ

【Windows】Apache初心者質問スレ 3鯖目【専門】
http://pc8.2ch.net/test/read.cgi/mysv/1128473338/
0092nobodyさん2006/06/10(土) 00:11:34ID:BKZjDDwv
GETでもPOSTでもリクエストが発生するときに、いちいち判定するのが
めんどくさいんですが、下記のコードでいいんでしょうか。
本当にGETかPOSTか判定したいときはそのときに$_SERVER['REQUEST_METHOD']
を見るつもりです。
$_REQUESTはCOOKIEまで混ざっちゃうみたいなんでやめとこうかな、と。
NULLバイト攻撃への対策のためNULL文字列は除去しています。

if ($_SERVER['REQUEST_METHOD']=='POST') {
 $GET = $POST;
}
$_GET = remove_nullchar($_GET);
$_COOKIE = remove_nullchar($_COOKIE);

//NULL文字列の除去
function remove_nullchar( $arr ) {
 if ( is_array( $arr ) ) {
  return array_map( 'remove_nullchar', $arr );
 }
 return str_replace( "\0", "", $arr );
}

0093nobodyさん2006/06/10(土) 00:17:25ID:???
PCと携帯で表示内容の違うページがあります。
そのページがどのような中身か判断する為に、
fileやfopenで調べようとしたのですが、
携帯で、作成したPHPにアクセスしても、
fileやfopenで中身を調べるとPC版を見に行ってしまいます。
携帯版の中身を調べる方法はありませんでしょうか?
0094nobodyさん2006/06/10(土) 00:25:59ID:OH+eichS
phpスクリプトの著作権表示を消した場合どのように調べられるのでしょうか?
そんなことはしないけどずっと疑問に思っているので教えてください。
0095nobodyさん2006/06/10(土) 00:48:42ID:???
PHPも少しなれて、データベースに手を出そうと思っています。
MySQLが多いようですが、他のとは何か違うのでしょうか?
0096nobodyさん2006/06/10(土) 00:59:08ID:???
include('file.php') を実行したときに、file.phpでパースエラーがあるとinclude()がエラーになりプログラムが終了しますが、
これをcatchすることはできますか。
try {
 include('file.php');
}
catch (Exception $ex) {
 ..処理..
}
でキャッチできるかと思いましたが、できませんでした。
0097nobodyさん2006/06/10(土) 01:51:42ID:akgzroAU
$array = array('1' => 'x', '2' => 'x');
array_shift($array);
print_r($array);

最初に連想配列のキー名に文字列の1を渡してるのですが、
array_shiftすると'2'=>'x'が返ってくると思いきや
'0'=>'x'になってしまいました。

数値として認識されてしまうのかもしれませんが、どうにか
'2'=>'x'として返す手段はないでしょうか。
0098nobodyさん2006/06/10(土) 02:22:26ID:rIPxBbNz
気長に待ちますが解答者があまりいないようですね・・・・
0099nobodyさん2006/06/10(土) 02:33:33ID:???
>>98
さっさと失せろ
0100nobodyさん2006/06/10(土) 02:36:24ID:???
>>97
本当だ、普通に添え字(数値の)として判断されるっぽいな。
俺にはどうしたら言いか分からん買った・・・
ただ、もしどうしてもそれでやりたいというのなら、array_shift関数を実行した
回数を変数に持っといて、取り出したい値(添え字)にそれを足すってやったらおkじゃない?
0101nobodyさん2006/06/10(土) 02:40:49ID:???
>>97
unset($a['1']);
0102nobodyさん2006/06/10(土) 03:09:03ID:???
>>97
マニュアル-配列より引用
>あるキーが、整数の標準的な表現形式である場合、 そのように解釈されます
>(つまり、"8" は 8 として解釈されます。一方、 "08" は "08" として解釈されます)。
http://jp.php.net/manual/ja/language.types.array.php

面倒だけど$array = array('01' => 'x', '02' => 'x'); みたいにキーの最初にゼロとかつければいける
取り出さなくてもいいなら101かな
0103nobodyさん2006/06/10(土) 03:16:20ID:3lMQcCFE
>>98
てかあんたどの質問したの?
0104nobodyさん2006/06/10(土) 04:02:04ID:???
>>78
http://akky.cjb.net/download/speeeeed.html
0105nobodyさん2006/06/10(土) 07:20:30ID:???
>>93
UAで振り分けてるなら偽装すれば可能
IPで振り分けてれば不可能
0106nobodyさん2006/06/10(土) 09:16:24ID:???
>>97
キーの型(数値、文字列)をどのように解釈するかはこの場合関係なくて、
array_shift/array_unshift/array_push/array_popは
「常に配列のキーを連番に振り直す」ので、
array_shift/push系を使う限り、キーを利用する事は不可能

キーも利用したければarray_slice/+演算子/array_mergeを使うべき
0107nobodyさん2006/06/10(土) 12:21:23ID:???
>>95
導入してるレンタルサーバーが多い。
お手軽。検索早め。
読み込みメインのDBならmySQLがお勧め。
更新メインのDBならPgがお勧め
かな><
0108nobodyさん2006/06/10(土) 12:47:08ID:???
前に、CGIをやっていた物なのですが、
PHPでこのような処理を行うにはどうしたらいいでしょうか
$sr[$i] の部分が原因のようなのですが、この先の手がかりがありませんorz
for ($i = 0; $i <= 21; $i++) {
if ( $st[$i] == "6" ) { $stt1 = "<font color=red><b>$st[$i]</b></font>" }
else{ $stt1 = $st[$i] }
$i++;
if ( $st[$i] == "6" ) { $st[$i] = "<font color=red><b>$st[$i]</b></font>" }
else{ $stt2 = $st[$i] }
$i++;
if ( $st[$i] == "12" ) { $st[$i] = "<font color=red><b>$st[$i]</b></font>" }
else{ $stt3 = $st[$i] }
array_push($st2, "$stt1", "$stt2", "$stt3");
}
0109962006/06/10(土) 12:59:26ID:???
>>96ですが、どなたかヒントいただけませんか。
include()したファイルにsyntax errorとかがあった場合、それをcatchしたいのですが。
0110nobodyさん2006/06/10(土) 12:59:48ID:???
>>108
です 自己解決しました。
orz
0111nobodyさん2006/06/10(土) 13:17:40ID:???
>>109
try,catchは実行時例外を捕捉する構文。
       ~~~~~~~
パースエラーは「実行」以前に、コードを解析した時点で発生するエラー。
          ~~~~~~~~~~~~~~
どうしても希望するような動作をさせたいなら
http://jp2.php.net/manual/ja/function.runkit-lint-file.php
こういうのを使って構文エラーがあった場合、
例外を投げるような関数でも作ればいいんじゃないかい。
0112nobodyさん2006/06/10(土) 13:22:47ID:???
>>109
・includeはエラーにならない。
・try-catchは例外を受け取るためのものなので、エラーやウォーニングは直接には関係しない
0113nobodyさん2006/06/10(土) 13:31:38ID:???
ttp://www.accessup.org/anime/j_jpmovie_best.html

このような、すばらしいレビューサイトを作るには
何について勉強していけばいいですか?

「html」と「css」以外のことは、ど素人で何もわかりません。
自分の考えでは、PHP+データーベースについて
勉強すればいいのかな、と感じたんですが、
何分、無知なもので、その考えが合っているかもわかりません。

PHPの基礎を勉強するのは、当たり前ですが
具体的な勉強課程というのが、見えてこないのが現状です。
0114962006/06/10(土) 15:31:25ID:???
>>111,112
さんくすです。結局は補足できないというのが答えということですか。
runkit_lint_file()なる関数を教えてもらいましたが、戻り値がbooleanで
エラーがあったかどうかしか分からず、構文エラーメッセージがわからないので
今回の目的では使用できないです。残念。
やろうとしているのは、PHPコードを自動生成して一時ファイルに書き出し、
それをincludeするこで実行時にクラスを作成することでした。
一時ファイルはすぐに消すんですけど、生成されたPHPコードに構文エラーがあると
include()したときにPHPが終了してしまい、一時ファイルが残ってしまうため、
なんとかエラーをcatchして一時ファイルを削除したいと考えていました。
またinclude()じゃなくてrequire()やeval()だとエラーがあっても分からないので、
これはこれで問題あるし。
なかなかうまくいかないもんですね。
0115nobodyさん2006/06/10(土) 15:55:22ID:???
>>105
UAで分けているとしたら
例えばどのような形でUAを送信すればよいのでしょうか?

$url='http://www.yahoo.co.jp';
$ua='DoCoMo/2.0 F900i(c100;TB;W18H10)';

fopen,file,headerなどを利用するのでしょうか?
0116nobodyさん2006/06/10(土) 16:03:29ID:???
下のJavaScriptでをPHPで書きたいのですがどうしたらいいでしょうか。
parseIntをPHPでどう書けばいいかわからず迷ってます。

for (var i = 0; i < x; i++)
a = parseInt("0x" + b.substr(1 + (i + 1) * 2, 2));

for (var i = 0; i < k; i++)
c[i] = d.charCodeAt(i);

c[0] = parseInt("0x" + b.substr(1, 2));
0117nobodyさん2006/06/10(土) 16:10:59ID:???
ちょっと待っててくれ。
JavaScriptスレでparseIntがどういう動作をするものか聞いてくる
0118nobodyさん2006/06/10(土) 16:18:30ID:???
>>116
hexdec()
01191162006/06/10(土) 16:30:42ID:???
>>118
サンクスです。助かります。
>>116の2行目の場合だと
$a = hexdec(substr($b, 1 +($i +1) * 2, 2));
という感じでいいのでしょうか。
0120nobodyさん2006/06/10(土) 16:35:11ID:???
>>119
コードのデバッグまで人にやらせるな
012136=392006/06/10(土) 17:59:40ID:???
ど、どなたか>>39の疑問に答えを頂けませんか…(;´Д`)ノ
0122nobodyさん2006/06/10(土) 18:18:25ID:???
foreach ($hage as $k => $v) { $_SESSION[$k] = $v; }
では不満だということ?
関数を定義するぐらいしかないような。
012336=392006/06/10(土) 18:43:20ID:???
いえ、Array = Array;という書き方に問題があるのかということです。

$_SESSION = $hage;

この書き方自体にはPHPの文法上は問題は無いが、
現在の$_SESSIONの仕様上$_SESSION['hage']=云々と書く必要がある、
という解釈で良いのでしょうか?
0124nobodyさん2006/06/10(土) 18:55:59ID:???
>$_SESSION = $hage;
できるよ。
0125nobodyさん2006/06/10(土) 18:57:26ID:???
ああ、問題化といったら問題ないんじゃない。
セッションID強制的に変える場合とかやらないといけないし。
0126362006/06/10(土) 19:44:18ID:???
>>124
工エエェェ(´д`)ェェエエ工

これでもセッションとしてちゃんと動くんですか!

でも>>36の通り、この方法で入れた$_SESSIONは少なくとも私の環境では
ページを移った時に保持されていないんですが…もしかして
私のPHP環境が異常なんでしょうか。
0127nobodyさん2006/06/10(土) 20:57:53ID:???
>>115
ttp://jp2.php.net/manual/ja/ref.filesystem.php
マニュアル嫁
0128nobodyさん2006/06/10(土) 20:59:04ID:???
>>126
session_start()してる?
0129362006/06/10(土) 21:17:57ID:???
>>128
以下のように書いてチェックしました。

<?php
session_start();
if ($_SESSION) { print_r($_SESSION); } else { print "はげ\n"; }
$hage = array('a' => "あむろ", 'b' => "ぶらいと", 'c' => "きゃすばる");
$_SESSION = $hage;
?>

Cookieを読めるブラウザでこのスクリプトを何度かリロードすると
$_SESSIONがあるならその中身が表示されるはずですが、
実際には何度やっても"はげ"としか表示されません。

一方で

<?php
session_start();
if ($_SESSION) { print_r($_SESSION); } else { print "はげ\n"; }
$hage = array('a' => "あむろ", 'b' => "ぶらいと", 'c' => "きゃすばる");
$_SESSION = $hage;
$_SESSION['a'] = $hage['a'];
?>

このように書いた場合は$_SESSIONの中身(3つ)が全て表示されました。
0130nobodyさん2006/06/10(土) 21:29:35ID:???
>>107
すみません遅くなりました。回答ありがとうございます。
なるほど、いろんなレンタルサーバーで使われているのですね。
掲示板がメインだったらMySQLのほうが良いのかな?
ちなみに、最終的にはFFAのようなゲームを作ってみたいと思っています。
ttp://www.pc-house.net/free/ffa/cgi-bin/ffa/others.cgi

最初はどんなことから勉強すればよいのでしょうか?
0131nobodyさん2006/06/10(土) 22:13:12ID:???
Hellow World
0132nobodyさん2006/06/10(土) 22:15:29ID:???
>>114
今はなんでもかんでも続行できなきゃFatal Errorで終了で、
他の言語みたいにevalでcompile errorをcatchしたりはできないけど、
PHP5以降のバージョンが普及すればevalが例外を投げてくれるように
書き直されるかも。

なんでもかんでもエラーなら終了ってのも動的言語としては微妙だよね。
PHP5以降が普及する前に他の言語に今の座を奪われなければいいけど。

>>130
とりあえず似たような機能を実装してるオープンソースのアプリのコードを読むのがいいんじゃない?
0133nobodyさん2006/06/10(土) 22:53:40ID:???
>>130
とりあえずこんなとこで下らない質問してないで自分で調べたらいいんじゃない?
0134nobodyさん2006/06/11(日) 03:29:00ID:???
MySQLのデータを外部からPHPを使って更新しようとしています。
フォームに書いた文字をデータとしてデータベースに入れているのですが、
データの中にタグ(「<」や「>」など)がある場合はPHPに送ることもできません。
どうすればちゃんと送れるでしょうか?
0135nobodyさん2006/06/11(日) 03:59:04ID:???
「<」や「>」でもちゃんとリクエスト受け取れるよ
0136nobodyさん2006/06/11(日) 06:09:55ID:???
>>134
とりあえずお前が作ったwebアプリには重大なセキュリティ・ホールが
存在することだけは確実に分かった。
0137nobodyさん2006/06/11(日) 07:51:12ID:???
>>136
0138nobodyさん2006/06/11(日) 12:27:15ID:VeszItwI
自分のリンクページから何人、他へ飛んで行ったか調べる逆アクセス解析みたいなのは無いんでしょうか?
0139nobodyさん2006/06/11(日) 12:32:46ID:???
間に入れなきゃダメ

ぜんぜn逆アクセス解析じゃねーし
0140nobodyさん2006/06/11(日) 12:49:00ID:VeszItwI
なるほど、アドバイスありがとうございます。

ちなみに、正しい逆アクセス解析って、どんなんでしょうか?
0141nobodyさん2006/06/11(日) 13:04:14ID:???
>>140
自分のコンテンツが、自分以外のどのコンテンツから参照されているかの調査解析。
つか無理して理解が不十分な言葉を使う必要はないよ。その分冗長にはなるけど。
0142nobodyさん2006/06/11(日) 15:20:00ID:???
少し質問させてください。 

現在ファイルのアップロードが行える掲示板系のシステムをPHPで作成しています。 
プログラム自体はそんなに苦労していないんですが、ひとつ付け加えたいものがあって悩んでいます。 

大容量のファイルをアップロードする際、アップロードが終わらないと別の処理ができません。 
そこで、「現在アップロードをしている」ことをわかりやすくするために、HTML_Progressを使ったポップアップウインドウで実現しています。 
しかし、サンプルサイトをみても「総容量に対し、どれだけアップロードできたか」の進捗状況を表示するのではなく、 
アップロードが終わるまでアニメーションを行い、アップロードができたらストップさせる形でした。 
これを、「総容量に対し、どれだけアップロードできたか」の進捗状況を表示するようには、どうすればいいのでしょうか。 

また、アップロードを行うフォームはHTML_QuickFormを使っているのですが、 
アップロード中にブラウザを中止させたり、閉じたりした場合、進捗バーが止まらず、見かけ上常にアップロードしているように見えます。 
できることなら、アップロード中にブラウザ側でなんらかのエラーが起きてアップロードができなくなったとき、 
進捗バーを止め、エラーを表示したいのです。 

アップロードに使っている関数はHTML_QuickForm_File::moveUploadedFileです。 
この関数ではアップロードが「できた」か「できなかった」かの状態が取れるはずなのですが、 
ブラウザからの中断には対応していないのでしょうか。 

長くなりましたが、お答え願えれば幸いです。 
最後に、もうひとつ質問なのですが、同システムをPerlでやろうとした場合、 
PHPで行うより簡単になりますか? 
0143nobodyさん2006/06/11(日) 15:23:36ID:???
PHPは仕組み上そういう事ができない。perlやJavaならできるよ。
「php progress file upload」あたりでググってみそ。
0144nobodyさん2006/06/11(日) 15:43:05ID:???
>>129
上の試したけど、2回目からちゃんと配列が表示されるよ。
0145nobodyさん2006/06/11(日) 16:56:49ID:???
>>142
PHPの標準では、そのものの機能がないので工夫が必要。
tmpディレクトリのアップロード途中のファイルの
サイズを読んで返すという仕組みで実現する。
143のキーワード以外に「PHP upload progress-bar」とか。
0146nobodyさん2006/06/11(日) 16:58:13ID:???
ファイルのbyte数を計るのはどうすればいいの?
Content-Lengthでこまってるんだけど。。。
0147nobodyさん2006/06/11(日) 17:30:53ID:???
>>146
http://www.php.net/manual/ja/ref.filesystem.php
0148nobodyさん2006/06/11(日) 17:49:05ID:???
>>136
そうでもないけど・・・? 釣りか...
0149nobodyさん2006/06/11(日) 20:21:21ID:???
>>145
それ無理でしょ。
途中のサイズは分かっても、総容量はアップ完了するまで分からない。
したがって進捗表示は無理。
0150nobodyさん2006/06/11(日) 21:00:27ID:???
まったく同じものをAJAX+PHPで実現してる人がいるよ。
http://tomas.epineer.se/archives/3

このぐらいの事で「無理でしょ。」って言い切るレベルのヤツしかいないんだな、ここは。
0151nobodyさん2006/06/11(日) 21:14:42ID:???
あー、>>150みたいなつまんねぇ揚げ足取り厨がいることを忘れてたぁ〜〜〜

「PHPでは」無理でしょ。

って言えば良かったのかな??
あぶねーあぶねー、つまらない難癖をつけてくるクズには気をつけないと・・・
0152nobodyさん2006/06/11(日) 21:16:43ID:???
言語は分かっても日本語分からないヤツは沢山いるって
0153nobodyさん2006/06/11(日) 21:27:57ID:???
>>152
うむ、>>150はきっとAJAX覚えたてで嬉しかったのだろうww
0154nobodyさん2006/06/11(日) 21:30:33ID:???
すみません、セッションを使ったログイン処理で、ブラウザを閉じたら
セッションが切れるような設定にしてあります。

ところが、サーバ側でセッション・ファイルを保存しているtmpフォルダを見てみますと、
数日前〜1週間くらい前にログインした分のファイルがいくつか消えずに残っています。
ためしにいまログインして新しいセッション・ファイルが出来たのを確認したあと
すぐにログアウトしてみると、そのファイルはきちんと削除されました。

では、なぜ残っているファイルがあるのでしょうか? これは消えないのでしょうか?
01551542006/06/11(日) 21:34:32ID:???
追記です。
さらに実験したところ、明示的にログアウト処理(セッションクッキーの削除やセッションの破壊)を
した場合はきちんとセッション・ファイルも削除され、
単にブラウザを閉じるだけでログアウトしてしまうとセッション・ファイルが
ゴミとして/tmpフォルダに残ってしまうようです。

このゴミを自動で消すことは出来ないのでしょうか?
一週間も前のが残っていると気持ち悪いし、セキュリティ的にも問題がある気がします。
0156nobodyさん2006/06/11(日) 21:47:31ID:BO/wu1ch
>>154-155
セッションのことだとわかっているのに
http://www.php.net/manual/ja/ref.session.php
を見ていないの?

ブラウザを閉じたのかどうかはサーバには解らないからセッションファイルが残る。
気になるならsession.gc_maxlifetimeを短く設定しろ
0157nobodyさん2006/06/11(日) 21:48:33ID:???
$info[0]['name'] = 'aaa';
$info[0]['value'] = 1;
$info[1]['name'] = 'bbb';
$info[1]['value'] = 2;
$info[2]['name'] = 'ccc';
$info[2]['value'] = 1;
$info[3]['name'] = 'ddd';
$info[4]['value'] = 2;

こんなデータがあるんですが、valueでソートして
aaa, ccc, bbb, ddd のようにしたいと思っています。
しかし usort()+strcmp() でソートすると、valueではソートしてくれるんですが,
ccc, aaa, ddd, bbb のように同じvalue内で逆順になってしまいます。
これを希望通りにソートするにはどうすればいいですか?
0158362006/06/11(日) 21:54:05ID:???
>>144
Σ(´Д`)ズガーン

…スクリプトをAAACAFEに置いて試したところ、
確かにセッションが保持されてました。
つまりうちのローカル環境が異様だという事ですね。
わざわざありがとうございました…トホホ
01591542006/06/11(日) 22:17:03ID:???
>>156
session.gc_maxlifetimeはデフォルトの1440秒のままです。
それなのに1週間も前のセッション・ファイルが消えないのが
おかしいと思いまして・・・
0160nobodyさん2006/06/11(日) 22:47:54ID:???
>>159
セッションファイルはセッションが開始されるごとに
gc_probability/gc_divisorの確率でgc_maxlifetimeより古いものが消される。
デフォルトでは1%の確率でGCが起こる。
gc_divisorを「gc_maxlifetime秒間のアクセス数」に設定しておけ。

ただし、「確率」の実装がどうなってるかは知らないが、本当に確率的に消されているなら、
100年分のセッションファイルが残る確率もある。限りなく0に近い確率だけど
01611452006/06/11(日) 22:48:31ID:???
>>151
揚げ足でもなんでもなく、素でjavascript前提で考えてたよ。
PHPだけでも、クライアントにファイル容量を入力させれば可能だけどね。
# これは本当に揚げ足取りw

さくっとFlashでやるのが一番楽。
0162nobodyさん2006/06/11(日) 22:50:08ID:???
香ばしい。
0163nobodyさん2006/06/11(日) 23:01:31ID:???
どうみてもperlです。
本当にありがとうございました。
01641542006/06/12(月) 01:53:44ID:???
>>160
なるほど・・・

ところで「gc_maxlifetime」で設定する秒数って、何を基準に数え始めるのでしょうか??
セッション・ファイル作成時刻からの秒数? それとも最終アクセス時刻からの秒数??
もし前者だとすると、24分ごとにセッションが切れちゃう可能性があって不便ですね・・・
0165nobodyさん2006/06/12(月) 02:01:34ID:???
>>151みたいな、PHP単体で考えるヤツとかって、
仕事で使ってる訳でもない素人レベルなんだろうな。

ブラウザに表示する内容をブラウザリロード無しに書き換えるには、
JavaScript(+DHTML)は必要。
そうであれば、AJAXも普通に視野に入れて考えるべきだと思うが。

単純に>>151が>>150の上手な煽りに釣られただけにしか見えない。
0166nobodyさん2006/06/12(月) 02:27:28ID:???
>>165
そういう問題じゃない。
>>142からの流れをよく嫁、バカ。
PHPで出来るかどうかの話をしてるんだよクズ。

JavaScriptだのFlashだの、ローカルでの処理を加えれば
ほとんど何だって実現出来るに決まってんだろアホ。
0167nobodyさん2006/06/12(月) 02:36:24ID:???
>>165
流れ的にPHPでのみ、って話だろ?
お前仕事で必要のない機能や処理を突っ込んでるタイプじゃないか?
0168nobodyさん2006/06/12(月) 02:38:30ID:???
仕事でプログラミングやってるやつが多いのはよく分かった。
0169nobodyさん2006/06/12(月) 02:39:40ID:???
まぁまぁ。
ここは質問者と解答者のいるスレだよ。

質問には色々な解答があって良いと思うよ。

では、次の方質問どうぞ↓
0170nobodyさん2006/06/12(月) 02:51:42ID:???
PHP6っていつ出るの?
何かもう開発してるんだよな?
0171nobodyさん2006/06/12(月) 02:53:39ID:???
Cookieの流れとかいろいろモニタしたいのですが、
HTTPヘッダを解析すれば良いのでしょうか?

だとしたら、みなさんどのソフトがオススメですか?
ベクターとかでちょっと探したけど、どれもイマイチな感じでした。。。
0172nobodyさん2006/06/12(月) 03:10:05ID:???
>>171
Fxのプラグインで良いのがあるよ。
■ このスレッドは過去ログ倉庫に格納されています