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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2008/02/24(日) 21:03:17ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 64
http://pc11.2ch.net/test/read.cgi/php/1202536271/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0837813 2008/03/13(木) 15:27:05ID:OwBZy3+J
沢山のアドバイスを頂きまして、どうもありがとうございました。
バージョンは書き忘れてしました。すみません。5.2.5です。

>>822さんへ
>>php.iniのメモリ使用量が少ないんじゃねぇの?
>>4と5じゃ大違いだし。

php.iniでメモリー使用量というのは、
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)
のことでしょうか?

とりあえず、これを上げてみて様子をみてみます。

>>814さんへ
パフォーマンス向上のためコネクションプールを使っていますが、
メモリーに常住するといういみではこれも怪しいですね。
一回解除してみます。

>>836
apcheのログを見ると、リスタートしているログが残っていますし、
Apache Server Statusのrestar timeとも合致します。

MRTGでリソース監視していますが、httpdのプロセス数やCPUの使用率をみても、
強制再起動と因果関係がなさそうです。

>>819さんへ
>singleton実現するためにmemcached入れたりとか。キャッシュ系だな。
phpにキャッシュする実装はしていないです。代わりに、MySQLのMEMORYテーブルを作って高速化はしています。

設定を変えて1日、2日様子を見て、またご報告させて頂きます。
障害の切り口がお陰で分かりました。どうもありがとうございました。
0838nobodyさん2008/03/13(木) 16:49:31ID:???
ログにリスタートする理由が書いてない?
実はlogrotateとか、MaxRequestsPerChildとかで殺されてるってことは無いの?

可能ならgdbをサーバプロセスにアタッチして監視するとかしたら?
0839nobodyさん2008/03/13(木) 18:37:21ID:9PIbKVj5
class Hoge
{
public function TEST()
{
}
}

これでpublic functionの部分で、
Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION
とエラーが出てしまいます。
function TEST()
{
}
にするとエラーはなくなりました・・・。
publicは使えないのでしょうか?
0840nobodyさん2008/03/13(木) 18:39:06ID:9PIbKVj5
ちなみに
new Hoge();
でこのエラーが出ます・・・。
0841nobodyさん2008/03/13(木) 18:40:16ID:???
>>839
PHPのバージョンが4以下だったりしない?
public宣言とかが出来るのはPHP5からだった気がする。
0842nobodyさん2008/03/13(木) 18:42:31ID:9PIbKVj5
あー、環境忘れてました、すみません。

PHP 5.5.2
Apache 2.2

何かすごく初歩的なミスをしているような気がしなくもないですorz
0843nobodyさん2008/03/13(木) 18:45:08ID:???
PHP5.5?
0844nobodyさん2008/03/13(木) 18:46:06ID:???
>>843 訂正
ぐぐったらあるみたいだね。ごめん。
0845nobodyさん2008/03/13(木) 18:46:24ID:9PIbKVj5
ごめ、5.2.5
0846nobodyさん2008/03/13(木) 18:49:11ID:???
分からないなぁ。
publicとfunctionの間が全角スペースになってたとかない?
0847nobodyさん2008/03/13(木) 18:50:59ID:9PIbKVj5
ありがとうございます、そのとおりでしたorz

今後気をつけます・・・。

Eclipseって全角半角わかりづらいっすね
0848nobodyさん2008/03/13(木) 18:55:13ID:???
>>844 再訂正
β版でもあるのかと思ったけど、やっぱりないっぽい。
googleでヒットしたのはただのタイプミスか。orz
0849nobodyさん2008/03/13(木) 19:33:19ID:Mmit1vUp
アクセスランキングなどを貼ってあるブログにリファラスパムをして
アクセスランキングをぐちゃぐちゃにする方法があるようですが、
あれってどういうことをやっているのか教えてもらえませんか
0850nobodyさん2008/03/13(木) 19:36:51ID:???
>>849
君が書いてる通りのことをすれば良いだけだと思うが
0851nobodyさん2008/03/13(木) 19:39:22ID:Mmit1vUp
>>850
すいません書き方が悪かったですね
リファラスパムそのものの方法を聞いているのです
0852nobodyさん2008/03/13(木) 19:43:25ID:Mmit1vUp
>>850
いま必死に調べてるのかな?
もう少しだけ待ってあげるからね
俺に質問を訂正させる手間かけさせたんだからきちっと答えろよ
無理なら許すけどさ
0853nobodyさん2008/03/13(木) 19:51:28ID:???
任意の深さの階層のXML文書を再帰的にぬるぽする方法は?
0854nobodyさん2008/03/13(木) 19:53:59ID:Mmit1vUp
>>853
ぬひんおでおk
0855nobodyさん2008/03/13(木) 21:10:20ID:Kk2Hpxcb
QuickFormにて手動でerrorsに追加するにはどうすればいいですか?
0856nobodyさん2008/03/13(木) 21:25:53ID:???
>>847
JStyleってプラグインいれとけ
0857nobodyさん2008/03/13(木) 22:11:44ID:???
   ∩___∩
   | ノ      ヽ !
  /  ●   ● |   こいつすげぇアホ
  |    ( _●_)  ミ
 彡、   |∪|   / .\
/ __  ヽノ / \ ...\
(___)   /   .│ ..│
            │ │
            /  ヽ
            l..lUUU
            .U
0858nobodyさん2008/03/13(木) 22:21:49ID:???
   ∩___∩
   | ノ      ヽ !
  /  ●   ● |   ?
  |    ( _●_)  ミ
 彡、   |∪|   / .\
/ __  ヽノ / \ 
0859nobodyさん2008/03/13(木) 23:52:30ID:???
たわしねこ見て餅つけ
0860nobodyさん2008/03/13(木) 23:57:20ID:KzoZRqtO
しつもんですがPHP6はIE7.0にたいおうしてますか?
0861nobodyさん2008/03/14(金) 00:20:41ID:CVUKE/w5
>>860
php6はIE6までしか対応していない。
IE7であればphp7が出るまで待つしかない。
0862nobodyさん2008/03/14(金) 00:25:13ID:TU1K9tdo
>>861
教科書的な答えありがとうございました
0863nobodyさん2008/03/14(金) 00:37:28ID:???
流石だな>>861はっ
0864nobodyさん2008/03/14(金) 00:53:19ID:???
え、じゃあみんなIE7に対応したサイト作るときどうするの?
なんかプラグインとか入れなきゃダメなの?
0865nobodyさん2008/03/14(金) 00:56:31ID:???
>>864
そのくらいのプラグインはみんな自作してるよ。
0866nobodyさん2008/03/14(金) 01:02:38ID:???
>>865
うわ、マジかよ…orz
IE7でも問題なく見れてたからこれでいいのかと思ってた・・・
ちょっとググってくる。ありがとう。
0867nobodyさん2008/03/14(金) 01:07:22ID:???
なんだこの展開は・・・笑
0868nobodyさん2008/03/14(金) 01:34:38ID:mBxJ6iKU
関数の引数に a-b-c という引数を渡したら
$array['a']['b']['c']という値を返したいと思っています。

-をexplodeして一つ一つの要素に分解するまでは良いのですが、
渡される引数の数が決まっていません。よって a もあれば a-b-c-d もあります。
これをうまい具合に解決する方法はありませんでしょうか?
わかりにくい文章ですみません。
0869nobodyさん2008/03/14(金) 01:35:46ID:???
IEのバージョンなんて関係ねぇ
.netじゃないんだからw
0870nobodyさん2008/03/14(金) 02:06:18ID:???
>>868
可変長引数で可能
0871nobodyさん2008/03/14(金) 02:10:24ID:???
へっ、おまいらが遊んでる間に再帰的ぬるぽを書き上げたぜw
0872nobodyさん2008/03/14(金) 03:07:34ID:???
>>868
$array['a']['b']['c']
これって3次元配列って意味?それとも
$array = array("a","b","c");
の事?

とりあえず3次元だった場合のあれ

function hoge($str, $delimiter = "-")
{
    $ary = explode($delimiter, $str);
    if (is_array($ary) == false)
    {
        return false;
    }
   
    $ret = array ();
    $cnt = 0;
    do
    {
        $ret = array(array_pop($ary) => $ret);
    }
    while (0 < count($ary));

    return $ret;
}

0873nobodyさん2008/03/14(金) 03:26:01ID:???
>>868
これでどう?
$list = array(1,array(2,3,array(4,5)),6);

echo getValOf($list, '1-0').'<br/>'; // 2 が表示される
echo getValOf($list, '1-2-1').'<br/>'; // 5が表示される

function getValOf($list, $path) {
foreach(explode('-',$path) as $key) {
$list = $list[$key];
}

return $list;
}
0874nobodyさん2008/03/14(金) 04:08:44ID:???
>>868
>a-b-c
こんな変な引数渡すよりfunc_get_args使ってやったほうがいい
0875nobodyさん2008/03/14(金) 04:30:15ID:???
>>874
呼び出される側はそれで良いだろうけど、呼び出す側も可変に出来るの?
0876nobodyさん2008/03/14(金) 04:36:37ID:???
>>875
874ではないが
call_user_func_arrayってーのを使えばできる
第1に関数名、第2にパラメータの配列

まぁこんな事するなら普通に配列渡せって感じだし
こんな変な設計になるのは何かが間違ってるとしか思えんがw
0877nobodyさん2008/03/14(金) 04:52:38ID:???
>>876
ありがとう。
自分も、その通りだと思う。
0878nobodyさん2008/03/14(金) 09:05:03ID:???
     テスト
08798682008/03/14(金) 12:27:35ID:mBxJ6iKU
将来的に第二引数に値を渡す仕様のため、func_*系の関数は使えませんでした。
また、第一引数にはarrayも渡せる仕様にしました。
オブジェクト的な配列にアクセスするために -> のような視覚的効果が欲しかったって言うだけです。

皆様有り難う御座いました。
0880nobodyさん2008/03/14(金) 13:31:04ID:DyyjdTiB
ABCDEFG
10010010

1にマッチする場所のアルファベットを取得したいんですが、
そんな感じの変数ってありませんでしたっけ・・・?
何か以前に近いことができたような・・・
0881nobodyさん2008/03/14(金) 13:33:53ID:???
意味がわからん
08828802008/03/14(金) 13:37:21ID:DyyjdTiB
ABCDEFG
10010010

ADFを出力
0883nobodyさん2008/03/14(金) 13:53:21ID:???
>>880
多分ない

var_dump(hoge("avc","010"));
function hoge($str1,$str2)
{
    $ret = '';
    foreach (str_split($str2) as $key => $value) {
        if ($value != 1) {
            continue;
        }
        $ret .= $str1[$key];
    }
    return $ret;
}
0884nobodyさん2008/03/14(金) 13:55:28ID:DyyjdTiB
おおー、わざわざ作ってくれてありがとー
0885nobodyさん2008/03/14(金) 14:30:09ID:???
そういうことか。
だったら、数字とアルファベットの桁数を揃えないと分かりずらいだろ。
0886nobodyさん2008/03/14(金) 14:48:15ID:???
0と1ならビット演算子使ったほうがスマートじゃね?
0887nobodyさん2008/03/14(金) 15:29:59ID:???
スレ違いかもしれませんけど
周りにエロい人がいないので
ここでアドバイスを願います。

PHPのSESSIONIDを推測して同時にアクセスしている人に
なりすますことは可能でしょうか?偶然を除いて。
0888nobodyさん2008/03/14(金) 15:38:37ID:???
>>887
>>1
0889nobodyさん2008/03/14(金) 15:45:40ID:???
CSRFとかセッション固定化攻撃とかって類か
まぁ一応可能っちゃ可能かな?
0890nobodyさん2008/03/14(金) 16:00:45ID:drEqqpJQ
mod_deflateで圧縮するのとPHPの設定で圧縮するのどっちがいい?
0891nobodyさん2008/03/14(金) 16:11:32ID:???
>>887
不可能である事は証明できないだろうけど、オライリーの「入門PHPセキュリティ」には、それは現実的なリスクでは
ないと書かれてる。もっともほかの事を気にしろと。

とりあえず見つけたページも貼っとく。
http://tdiary.ishinao.net/20061120.html
0892nobodyさん2008/03/14(金) 16:32:13ID:???
>>891
sessionidの生成ロジックから、
同一ホスト同時アクセス時のユニーク性も証明できないって、
なんちゃって技術者か。

最近、この手のコンピューターの基礎理論や数学的な教養もない技術者が増えていて嘆かわしい。
業界人口が急速に増えると、人材の劣化が激しいことの証左だな。
0893nobodyさん2008/03/14(金) 16:37:39ID:???
数学的教養
0894nobodyさん2008/03/14(金) 16:49:29ID:???
>>892
だれがユニーク性の話をしているの?
予測の困難さの問題だと思うんだけど。
0895nobodyさん2008/03/14(金) 17:03:31ID:???
>>894
ユニーク性の証明から、予測の困難性を演繹的に証明できるだろ。
お前は、どういうアプローチで予測の困難性を証明しようとしているの?
0896nobodyさん2008/03/14(金) 17:12:12ID:???
よーするに、気にする必要も無い程非常に困難、でおk?
0897nobodyさん2008/03/14(金) 17:15:11ID:???
>>896
今のところは、多分、そう。
0898nobodyさん2008/03/14(金) 17:32:17ID:???
PHPのくだすれで今更言うことでもなくないか?
0899nobodyさん2008/03/14(金) 17:56:48ID:???
SessionIDの成りすまし簡単だぜ?
ターゲットにしているユーザーのパソコンに外部から接続して、乗っ取りが成功すれば
ブラウザが使用しているメモリ領域から情報を引き出せる
それを元にすれば早いだろw
0900nobodyさん2008/03/14(金) 17:59:56ID:???
SessionIDを発行している鯖をハッキングした方が早くね?
0901nobodyさん2008/03/14(金) 18:02:37ID:???
>>900
不正アクセス禁止法の教唆で通報した。
0902nobodyさん2008/03/14(金) 18:08:04ID:???
>>901
私は捕まるのですね
捕まるぐらいなら死んだ方がマシです
さようなら
0903nobodyさん2008/03/14(金) 18:10:01ID:MYksIzGY
SSL使えば、クライアントが入れ替わってないか判別できるんだよね。
その場合でも、同じセッションID使われたら、特別な処理をしないかぎり、セッションハイジャックってできたりするの?

とりあえず環境は Apache2.x + PHP5.x あたりと仮定して。
0904nobodyさん2008/03/14(金) 18:10:42ID:???
     *      *
  *  うそです   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
09059032008/03/14(金) 18:12:09ID:???
そもそも、SSLってクライアント側に証明書いれておかないと、クライアントの認証はしないんだっけ?
0906nobodyさん2008/03/14(金) 18:13:21ID:???
PHPのSessionIDが特別仕様というわけではなく、PerlやJAVAなどが使用している使い古された手法
そこは古いApache側のセキュリティホールを利用とかじゃなければ、PHPだからというのはないな
0907nobodyさん2008/03/14(金) 18:14:45ID:???
>>903
> セッションハイジャックってできたりするの?
分からん。SSLのレベルの定義されていないし、解読に掛かる時間も定義されていない、
解読に要するリソースの制約条件も定義されていない。

条件が全くといっていいほど定義されていないのに、答えられる訳がない。
0908nobodyさん2008/03/14(金) 18:25:14ID:???
>>889

> ターゲットにしているユーザーのパソコンに外部から接続して、乗っ取りが成功すれば

ネタですよね? もはやセッションIDの乗っ取りとは関係ない話。
09099032008/03/14(金) 18:27:02ID:???
>>906
Servletの場合、SSLじゃなくてIPアドレスチェックの話だけど、APサーバによっては途中でIPが変わると
セッションが切れた気がする。AirH"がユーザが気がつかないうちに接続しなおすものだから、突然ログアウト
してしまうという現象が発生した記憶がある。

だから、同じような話で、SSL使ってチェックしたりする設定がないかなぁという期待。
もしくはデフォルトでそうなっているとか。

どうなんだろ。
0910nobodyさん2008/03/14(金) 18:30:52ID:???
>>909
ipアドレスが変わるたびにセッションが切れていたら、docomoは全然だめだな
0911nobodyさん2008/03/14(金) 18:30:59ID:???
ドアに鍵をかけていても、その鍵を簡単に取れるところに
おいていたら意味はない。
また、その鍵が机の鍵のようなちゃちい鍵だと余り意味は無い。

そういう問題外の状態は論外として取り扱わないとして
ちゃんとした使い方をしていれば、他人のセッションIDを
推測することは不可能。
09129032008/03/14(金) 18:37:31ID:???
>>910
IPアドレスが変わったとき、Servletならばセッションが存続しないって話じゃないから。
そういう環境があったというだけで。だから、それは別問題。
0913nobodyさん2008/03/14(金) 18:44:51ID:???
俺は知らないけど、SSLの仕様を調べれば済む話じゃないの?
「〜なき気がする。どうなんだろう。」とか言ってても仕方ないと思うんだがww
0914nobodyさん2008/03/14(金) 19:03:54ID:???
>>908
他人のSessionIDが知りたいだけなら間違いではなかろう
セッションハイジャックをして何がしたいんだ?
0915nobodyさん2008/03/14(金) 19:15:24ID:???
>>913
そもそもSSLは関係ない話。

セッションIDとSSLは関係ない技術
0916nobodyさん2008/03/14(金) 20:26:13ID:6wdnTdIf
例えば、hoge.txtの読み書きをする場合、

ロック専用ファイルをflockでロックして、
hoge.txtの読み書きをする。

hoge.txtをflockでロックして、
hoge.txtの読み書きをする。

どっちが普通ですか?
0917nobodyさん2008/03/14(金) 20:30:52ID:XPDryAhR
htmlspecialchars_decodeについて質問です。

php5を使用してるのですが
htmlspecialchars_decodeを1回目の使用の場合戻らなくて
2回かけると戻ることがあるのですが、これは何故なのでしょうか?
よろしくお願いします。
09189172008/03/14(金) 20:36:04ID:XPDryAhR
っんだよ、よくソース見たら&lt;とかになってんじゃねーか畜生

ありがとうだっつーの!
0919nobodyさん2008/03/14(金) 20:36:37ID:XPDryAhR
>>918
なん…だと…?
0920nobodyさん2008/03/14(金) 20:58:43ID:???
>>918
> ありがとうだっつーの!

どういたしまして。お役に立てて光栄です。
0921nobodyさん2008/03/14(金) 21:00:23ID:???
>>916
後者をfile_put_contentsでやるのがPHP5でのたしなみ
0922nobodyさん2008/03/14(金) 21:05:16ID:???
PHP4でPHP5の関数を使える互換ライブラリ
http://upgradephp.berlios.de/
0923nobodyさん2008/03/14(金) 21:50:36ID:???
>>922
古いしイラネ
0924nobodyさん2008/03/14(金) 21:53:10ID:???
古いことが何か悪いことでもあるのだろうか?
0925nobodyさん2008/03/14(金) 23:01:55ID:???
PHP4はセキュリティアップデートのサポートから除外されたからやばいんじゃねえ?
今年中にPHP6出るらしいし、PHP5に乗り換えときなよ
0926nobodyさん2008/03/14(金) 23:18:29ID:???
php6にしないと、IE6で動かなくなるよ
0927nobodyさん2008/03/15(土) 03:14:39ID:zI+80wWb
もうIE6なんて使っているやついねーよ
0928nobodyさん2008/03/15(土) 08:19:09ID:???
うちは未だにIE2
0929nobodyさん2008/03/15(土) 10:49:51ID:???
おれっちはIE4
0930nobodyさん2008/03/15(土) 15:32:04ID:???
このスレ前はいい人たちばかりで、私も色々助けてもらったけど、
もうこのスレには変な人間ばかりしかいないのかな。
0931nobodyさん2008/03/15(土) 15:40:42ID:???
>>930
まだ謝礼を貰っていなかったな。
ほれ、ケツあげろケツ。
0932nobodyさん2008/03/15(土) 16:04:03ID:???
激しく既出なのかもしれませんが...

スクリプトはEUC-JPで書いてます。
mb_internal_encodingもEUC-JPです。
htmlをはき出す時は、以下のようにしています。
header( "Content-type: text/html;charset=Shift_JIS" );
ob_start("mb_output_handler");
print $buf;
ob_end_flush();
これで、EUC-JPをSJISに変換して出しています。

ところが、xhtmlの場合、ヘッダーを
header( "Content-type: application/xhtml+xml;charset=Shift_JIS" );
とすると、文字コードが変換されません。

これはこういうものなんですか?
なんか間違ってますか?
0933nobodyさん2008/03/15(土) 16:10:36ID:???
>>930
今度はお前が助ける番だ
しっかりやれよ
0934nobodyさん2008/03/15(土) 17:15:33ID:???
>>931>>933
あなた達は、虫以下の脳みそしか持っていません。
ただ、体がでかいだけです。
0935nobodyさん2008/03/15(土) 17:29:19ID:???
>>934
虫の脳って、言語を扱える程に発達してたっけ?
0936nobodyさん2008/03/15(土) 17:34:17ID:???
代わりに高性能なマイクロチップが入っているんだよ
つまりこのスレにはザレムの住人がいる
レス数が900を超えています。1000を超えると表示できなくなるよ。