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

【PHP】質問スレッドpart26【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/12/21 22:34:55ID:???
のフリをした糞スレ
0756nobodyさん05/02/13 09:24:12ID:???
改造する際に質問ならわかるが、
何でここで聞くかな…
0757はじめまして05/02/13 09:26:38ID:u/FwX+Jy
スレ違いだったみたい???
丸投げの方がいいでしょうか?(^^ゞ
0758nobodyさん05/02/13 09:38:27ID:???
( ゚Д゚)ポカーン
0759はじめまして05/02/13 09:47:31ID:u/FwX+Jy
おわさがせしました<(_ _)>
どっか、行きます・・・
0760nobodyさん05/02/13 12:39:21ID:???
AAAはセンドメール禁止
0761nobodyさん05/02/13 14:02:36ID:???
あはははは!
0762nobodyさん05/02/13 14:57:17ID:???
$_SERVER["REQUEST_URI"]に http://からのアドレスが入って
いたのですが、これはfopenとかでURLページをアクセスした時に
入るのでしょうか?
0763nobodyさん05/02/13 16:45:25ID:???
PHPでの認証について質問させて下さい。

FORM認証を使った場合、PHPスクリプトに対しては確かに認証の可否によって、
実行の可否ができるのですが、
例えば、ディレクトリ構造など知られている場合、
PHP以外のファイル(画像など)を直接URL指定されると
認証の有無に関わらず表示されてしまいます。

特定のディレクトリ以下の全ての種類のファイルを認証によって閲覧権限を付ける場合、
やはりBASIC認証しか無いのでしょうか?
0764nobodyさん05/02/13 17:05:13ID:???
どうしてもPHPでやりたいとなると、
ディレクトリ内の全てのファイルを外部から不可視にしておいて、
PHP経由でそれらのファイルを読み込んで表示かな。
ちょっとしたミスが命取りになるけど。
0765nobodyさん05/02/13 19:00:50ID:K/AbDSop
PHP4のXMLパーサについて教えてください。

xml_set_character_data_handler()でセットしたハンドラに渡される文字列が
たとえば "ABC & DEF" だったとき、"DEF"しか渡されないみたいなんですが
どうしてでしょう?
0766nobodyさん05/02/13 19:00:55ID:???
どうしてもPHPでやりたいなら、>>764の方法だろうね。確実に隠すならDBにぶっこむとか。
でも、そういう使い方したいならBASIC認証でやったほうがスマートだと思うんだけど、次の人どう思う?
0767nobodyさん05/02/13 19:10:13ID:???
データディレクトリをDocルート外におけば無問題。denyを忘れることもない。
複数の認証がダブったり権限付与が必要なケースではBASIC認証等は不向きなので、
この場合はPHPの認証機構に一元化することが多いかな。

>>765
質問の仕方を勉強して出直してくれ。
0768nobodyさん05/02/13 22:14:09ID:???
教えて下さい。
PHP4からPHP5に移行する際に、コーディングで特に注意が必要な点はありますか?
0769nobodyさん05/02/13 22:17:02ID:???
くだスレでやれよ
http://jp.php.net/manual/ja/migration5.php
0770nobodyさん05/02/13 23:51:10ID:???
>>765
「ABC」「&」「DEF」と複数回ハンドラが呼ばれてるのに
最後に呼ばれてるときにしか貴方の作ったプログラムが見て無いから。
もしくは「ABC」を「&」で、その次は「&」を「DEF」で上書きというプログラムの作りだから。
0771nobodyさん05/02/13 23:58:21ID:???
>>765
>>770
セミコロンが区切りとして扱われているものと思われ。

>>767
おまえも回答の仕方を勉強してこい。
0772nobodyさん05/02/14 00:23:46ID:???
ExpatはSAXだということを忘れとらんか。
無効なエンティティとして扱われてるなら"ABC "までがCDATAとして渡されるはずだろ。
"DEF"ってことはコード上の問題としか考えられないが、質問文にはコードもXMLのサンプルもないからな。
テストコードやコピペのミスかどうかも判断つかん。
回答することで自分のスキルを実感するのを否定はしないが、質問の仕方は覚えてもらったほうが
本人のためにもなるし、同僚さんの幸福にもつながると思うよ。
>>771には何かローカルな心情があるのかしらんが、「回答の仕方」というのは俺にはよく分からん。
0773nobodyさん05/02/14 00:32:19ID:fzJwBWF6
>>772
どんな回答しようが自由だと思うが。少なくとも乞食にどうこう言われる筋合いはない
質問の仕方で能無しかどうかすぐ分かる
質問の仕方でにそれにぶら下がるレスのレベルもある程度決まってくる
0774nobodyさん05/02/14 00:34:04ID:fzJwBWF6
そーいや&amp;とかいて投稿して&に変換されてるのにほったらかしの奴とかもいるよなw
正規スレだっけ?分かる奴には分かるつー文脈なら別にいいんだが
0775nobodyさん05/02/14 00:53:46ID:???
自演もたいへんだな。今日はもう寝ていいぞ。プ
0776nobodyさん05/02/14 01:07:31ID:???
peardocの生成に失敗します。
peardocのCVSをチェックアウト後、
# autoconf
# configure --with-lang=ja
# make test
を実行後エラーがでて止まります。
エラーの解決方法をご存知の方が居ましたら、教えてください。

環境はFreeBSD5.3Rで、portsから
textproc/sp
textproc/openjade
textproc/docbook-310
textproc/iso8879
textproc/dsssl-docbook-modular
を導入しています。

configure、make testのログを以下にアップしています
http://www.uploda.org/file/uporg43768.zip
0777nobodyさん05/02/14 01:14:49ID:???
777get, zuzaa
0778nobodyさん05/02/14 01:35:57ID:???
>>776
>./phpdocxml.dcl:179:1:E: end of document in prolog

179行1列目って何?prologなんてワカンネ。タグ不整合とか?
077977005/02/14 01:38:45ID:???
>>770
言いたい事はいっしょなのだが
「ABC 」「& 」「DEF」が正しい。
つまり>>772が言ってること。

0780nobodyさん05/02/14 01:39:38ID:???
>>775
そのエスパー脳を回答に生かせよ
0781nobodyさん05/02/14 01:44:41ID:???
>>777
オレのESP能力によるとお前はこいつと同一人物に間違いない
http://www.google.co.jp/search?hl=ja&q=%22777get%2C+zuzaa%22&lr=
078277605/02/14 01:46:07ID:4jK1nMAE
>>778
phpdocxml.dclの内容は以下のURLの内容と同じです。
http://cvs.php.net/annotate.php/peardoc/phpdocxml.dcl?rev=1.1.1.1

179行目は最終行の > になります。
078376505/02/14 02:02:44ID:8mFM3xsp
レスくれた方々、ありがとうございます。

ハンドラに渡されたものを全部array_push()して、それをダンプしてみましたが、
"ABC & DEF"とくるはずのものは、"DEF"としか渡されていませんでした。
"ABC"とか"&"とかはまったくハンドラに渡されていません。
xml_parseの仕様でしょうか?
0784nobodyさん05/02/14 02:14:53ID:???
>>783
とりあえず上で言われているとおり&のせいかと
実体としてパースされるのでPCDATA領域に&書いたらダメよ
情報不足なのでこれ以上の回答は望めないかと
0785nobodyさん05/02/14 02:43:43ID:???
一番星は見つかったかい?
0786nobodyさん05/02/14 02:47:26ID:???
俺が思うにexpatはかなり頑固な奴だよ
0787nobodyさん05/02/14 03:16:39ID:???
>>786
厨房相手じゃ肩もこります。
0788nobodyさん05/02/14 04:24:51ID:???
>>786
確かに。DEFの頭の方にスペースがくるとは思わなかった。

サンプル1:<test>ABC &amp; DEF</test>
結果1:
startElement[TEST]
charData[ABC ]
charData[&]
charData[ DEF]
endElement[TEST]

サンプル2:<test><![CDATA[ABC & DEF]]></test>
結果2:
startElement[TEST]
charData[ABC & DEF]
endElement[TEST]
0789nobodyさん05/02/14 04:27:44ID:???
ついでにコード
<?php
// $text = '<test>ABC &amp; DEF</test>';
$text = '<test><![CDATA[ABC & DEF]]></test>';

$parser = xml_parser_create('UTF-8');
xml_set_element_handler($parser,'startElementHandler','endElementHandler');
xml_set_character_data_handler($parser, 'charDataHandler');

$result = xml_parse($parser,$text);
if(!$result) {
die(xml_error_string(xml_get_error_code($parser)));
}
xml_parser_free($parser);

function startElementHandler($parser,$name,$attribs) {
echo "startElement[$name]\n";
}
function endElementHandler($parser,$name) {
echo "endElement[$name]\n";
}
function charDataHandler($parser,$cdata) {
echo "charData[$cdata]\n";
}
?>
0790nobodyさん05/02/14 04:46:55ID:???
default_handlerをセットしていると、&amp;などはそっちがコールされるようだ
0791nobodyさん05/02/14 07:31:39ID:pVfR11DE
PHP4ですが、以下のようなエラーがでてしまいます。

Warning: No ending delimiter '^' found in /home/www/dbusf000/public_html/seminar.php on line 147


147行目は以下の通りです。
if ( (!preg_match("^[ァ-ヶ?・]*$",$_REQUEST["company_name_kana"])) or strlen($_REQUEST["company_name_kana"]) > 100){


正規表現がまちがってるんでしょうか?
「正規表現メモ」のサイト見ても、どうもマチガイがわからなくて。
お助け願えれば幸いです。
0792nobodyさん05/02/14 07:37:23ID:???
>>791
正規表現以前にpreg_matchの使い方が間違ってる。
マニュアルを良く見直してみ
079379105/02/14 07:48:39ID:???
>>792さん

あう、おはずかしい。ありがとうございました。
0794nobodyさん05/02/14 18:06:20ID:???
latin-1 のアクセント付文字を"&egrave;"のような文字列に変換する関数ってありますか?
0795nobodyさん05/02/15 00:02:35ID:FkUTlorq
セッションハンドラ書き換えて
MySQLに保存するようにしたのですが、
時々何かのタイミングでエラーになります。
非常に再現性に乏しいので凹みます。
バージョンは4.3.10です。
ハンドラ書き換えはバギーなのでしょうか?
オリジナルのセッション機構を書いた方が良いのでしょうか…。
0796nobodyさん05/02/15 01:18:37ID:???
>>795
DB(MySQL/PostgreSQL)にも、ネットワークファイルにも
書き込んでるけど全然問題ないよ。

貴方のシステム環境が安定してないだけじゃ。
0797nobodyさん05/02/15 02:30:29ID:???
>>796
ありがとうございます。
あやうく書き直すところでした。
Unexpected character in input: '
というエラーなのですが、わりと良くある障害のようで、
MLを検索したところ原因はmbstring周りのようです。
セッションハンドラを書き換えたあたりから出始めたので
それが原因と思いこんでいました。
0798nobodyさん05/02/15 03:36:05ID:???
>>512
だからまずパンツを脱いで左足で冷蔵庫しめたらいいじゃん
0799nobodyさん05/02/15 03:44:33ID:???
寝る前に>>798がどこの誤爆か探してみるとするか
0800nobodyさん05/02/15 03:56:19ID:???
          ,, -,,' ´ ̄" ` ''ー`、 `ヽ.
   ___ ,,.. -' "/ { ` -一-ヾ ヽ.  ヽ    ☆
 /      ▽ / ∧ ヽ、, _,,  }}_} ・  ii /
/        {  {ゝ{__`ー-Y´f。Vハ'V } * ・ ii
! 〃      i  ハ ´{ ヽ   、ソ  } く  ☆ ii    氏ね
ヾ{{    ☆ `ヾ、_`ヽ'^' ヽ   " ! ! i ゚ : ii
  ヽ{{  * .      ハ  く) /.l、! !  ; .ii
   ヾ、.        { ` ーj‐'  {ムノ_   ノ
     ヾ       , '´  ̄ー‐‐- '   ` く
        ` ー---─,'         、   、}
            ,'   ,〈 , -ー‐-、i∠⌒ヽ
           ,'  ∧<=ニ二‐ノヽ、二ソ
           /  ./ }  `"''' ";  `7T´
080151205/02/15 03:57:28ID:???
残念だが俺はパンツ履いてない。
0802nobodyさん05/02/15 11:21:45ID:???
>>797
なんか良く判らないけどエラーが出るようになったつうのは
APCとかのPHPアクセラレータ入れてると出ることがあるので
もし入れてたら切ってみて暫く様子見するのもいい。
0803nobodyさん05/02/15 17:13:10ID:???
<?
// ランダムリンク設定(表示コメント|URL)
$banner = array(
'コメント1|http://***.com',
'コメント2|http://***.co.jp',
'コメント3|http://***.jp',
);

function rnd_banner($banner){
mt_srand((double)microtime()*1000000);
$num = mt_rand(0,(count($banner)-1));
//コメント,URL分割
list($comment,$url) = explode("|",$banner[$num]);
//タグ生成
$display_banner = '<a href="'.$url.'" target="_blank">'.$comment.'</a>';

return $display_banner;
}
?>
------------------
このソースを、表示したいphpに直接貼り付ける形式ではなく、
「random.php」などと名付けて別途保存し、
表示したいphp中に
<?include("random.php");?>
のように挿入して表示できるようにしたいのですが、
どの部分を書き換えれば想定どおりの処理ができるようになるでしょうか?
0804nobodyさん05/02/15 17:16:33ID:???
>>803
関数の定義をしているだけなので、それをどこかで呼び出さないと実行されない。
random.phpの中で、echo $display_banner; の一行を入れておけばよい
0805nobodyさん05/02/15 17:30:29ID:???
>>803のコードに

$display_banner = rnd_banner($banner);

これを加えて random.php としておく。


表示用のPHPのほうで、このファイルをincludeしておき、
表示させたい位置に、

<?=$display_banner?>

を入れる。
0806nobodyさん05/02/15 18:04:26ID:???
>>804>>805
アリガトウございます。できました。
include、require のどちらでも動作するみたいですね。
0807nobodyさん05/02/15 20:39:01ID:ELNssm3M
WDDXなしでXMLを連想配列にしたいんだけど、どっかにライブラリとかないかな。
0808nobodyさん05/02/15 22:01:04ID:???
フォーム送信(submitボタンを押した後)に自動でテキストファイルを
指定の箇所に作成する方法がわかりません。
イメージ的に

フォーム送信→ファイル作成(open)→ファイル書き込み(print)

というのはなんとなくイメージ出来るのですが、これを
どうやって毎回テキストファイルを作成するのかよくわかりません。。
すみませんが、ヒントをいただけないでしょうか?
080980805/02/15 22:21:44ID:???
ちなみに、下記のようなものは考えました。。
test.phpにアクセスするとファイルが作成されるという。。

<?php
$lombardia = fopen('test.txt', 'w');
fwrite($lombardia, 'test');
fclose($lombardia);
?>
0810nobodyさん05/02/15 22:36:14ID:???
だれか「lombardia」の意味を教えてください。
0811nobodyさん05/02/15 23:14:11ID:???
イタリア共和国北西部の州だよ
0812nobodyさん05/02/15 23:15:57ID:aGG3pDPg
現在PHP5を使用してpearをダウンロードしたのですが、
/usr/local/bin/pear install http://pear.php.net/get/DB
という具合に。そうしたらzlibが見つかりませんというような
エラーがでました。

調べたところPHPをインストールしたときにzlibなるものを
インストールしていなかったのが原因だと思うのですが、
zlibを組み込むには再度PHPをコンパイルしなおさないと
いけないのでしょうか?
0813nobodyさん05/02/16 00:24:48ID:???
一時間か。もうマニュアルも読んで再コンパイルも終わって解決してる時間だな
0814nobodyさん05/02/16 00:32:41ID:???
ちなみにSharedObjectを作ればオケ
0815nobodyさん05/02/16 23:11:51ID:kByGIo+t
uniqid() について質問です

Web上で多数のユーザーから同時アクセスが想定される状況で
ユニークな文字列を生成したいのですが、
uniqid()の信頼度はどの程度のものなんでしょうか?

サーバーが単一の場合はprefixを付与しただけで十分実用レベルでしょうか?
またホストが複数サーバーに分かれてる場合ではどうでしょうか?

マニュアルに載っているように
> $better_token = md5(uniqid(rand(),1)); // 推測が困難であり、より優れている。
とすればほぼ大丈夫と思って良いですか?

uniqid()の仕組みだけでも教えて貰えたら、と思います。
あいまいな質問で済みませんがよろしくお願いします。
0816nobodyさん05/02/16 23:26:24ID:???
マニュアルには、
ミリ秒単位でユニークな文字列が作成される。
複数のホスト上で同時に実行して同じ文字列が生成されるのを防ぐために、
ホスト別にprefixを付けると良い。
って書いてありますよ。
uniqidの仕組みについては、ext/standard/uniqid.c を参照。
cvsだと、ttp://cvs.php.net/co.php/php-src/ext/standard/uniqid.c?r=1.40 あたりかな。
0817nobodyさん05/02/17 13:56:50ID:???
>>816
「ホスト別に」というところを何故か見落としてましたw

ホスト毎のprefixと乱数の組み合わせで行けそうですね
ありがとうございました。
0818nobodyさん05/02/17 14:00:03ID:???
既存のリソースと比較しろ
0819nobodyさん05/02/17 22:47:38ID:3YY24TUD
配列の配列にはarray_unshift()は使えないの?

array_unshift( $n, array( "value", $v ) );

↑こうやると、↓こんな警告が出る。
Warning: array_unshift(): The first argument should be an array
0820nobodyさん05/02/17 23:08:56ID:???
$comに、下記のような複数行のレスを読み込んでいる状態です。

 >あいうえお<BR> >かきくけこ<BR> さしすせそ<BR>

このレスを表示する際、>(引用符)の行の文字カラーを変更したいです。

$com = eregi_replace("(^|/>)(>[^<]*)", "\\1<FONT COLOR=\"FF0000\">\\2</FONT>", $com);
ですと、実際に表示される際の一行目「>あいうえお」 …のみしか適用されません。
これをコメントの全ての行に適用するにはどのようにすれば良いのでしょうか。
0821nobodyさん05/02/17 23:17:13ID:???
>>819
int array_unshift ( array array, mixed var [, mixed ...])
0822nobodyさん05/02/17 23:23:36ID:???
>>820
正規表現を考える前に
引用符としての">"とタグ<BR>が混在しているのだが、
引用符のところは&gt;ってカキコしたものなのか?

&gt;あいうえお<BR> &gt;かきくけこ<BR>....
なのか、
>あいうえお\n >かきくけこ\n....
どっち?
0823nobodyさん05/02/17 23:31:43ID:3YY24TUD
>>821
マニュアルの一部をコピペしただけでわかるかよ。
0824nobodyさん05/02/17 23:40:48ID:???
>>823
変数に入ってる値も不明なソースの一部をコピペされただけでわかるかよ。
つか、そのソースとエラーの内容からだと>>821に適合して無いことが原因か、
適合しててもエラーが出るなら、それこそ具体的な値が判らんとわかんねぇよ。
バグの可能性があるんだから。
0825nobodyさん05/02/17 23:48:01ID:yKXCmIvo
>>821は割と的を得た回答だと思うけどな・・・
0826nobodyさん05/02/18 00:28:16ID:7WdjA1S7
>>824-825
わかりやすい自演の例…
0827nobodyさん05/02/18 00:31:52ID:???
>>822
返信が遅くなりすいません。
ログ(書き込み時)は、引用符の">"は>で格納されています。 (ユーザーが">"と書き込みしたものです)
\nは<BR>で格納されています。 (ユーザーが改行したものです)

読み出し時は、
list($no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico) = preg_split("/<>/",$line);
("<>"がセパレータ)で読み込みしていますので、
前レスの「レスを表示する際」には、書き込み時の形のまま(前者)が$comに格納されていると思います。

記事展開の周辺は、
# 記事を展開
$i=0;
$flag=0;
$lines = file($logfile) or error("Open Error: $logfile");
$top = array_shift($lines);
foreach ($lines as $line) {
list($no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico) = preg_split("/<>/",$line);
です。
0828nobodyさん05/02/18 00:53:39ID:???
英語の辞書がひけない奴はプログラム組むな
082982705/02/18 01:05:23ID:???
半分ですが解決しましたので書き込みだけしておきます。(回答不要です)
">"が、">"で格納される場合と">"で格納される場合に分かれていたようです。
(この部分の詳細は今は不明です)

最終的に、(>)で格納されているとした場合、下記で大丈夫…だと思います。たぶん。
$com = eregi_replace("(^|>)(>[^<]*)", "\\1<FONT COLOR=\"999999\">\\2</FONT>", $com);
0830nobodyさん05/02/18 01:06:46ID:???
>>829 修正です
&gtで格納されている場合
$com = eregi_replace("(^|>)(&gt;[^<]*)", "\\1<FONT COLOR=\"999999\">\\2</FONT>", $com);
0831nobodyさん05/02/19 19:52:30ID:???
その中の人数($num)/母体の人数($amount)で、
その中の人数の母体に対するパーセンテージを求めようと思い、
考えて下記のスクリプトを作ったのですが、改良案やもっといい方法が
あればアドバイス頂けないでしょうか。

$percent = substr($num/$amount,2,2);
$percent = preg_replace("/^0/","",$percent);

$num/$amountすると、例えば0.4056414とかいう割り切れない数字が出てくるので、
substrで小数点以降から2桁切り出して、(ここでいうと40)
一桁パーセントの場合は、08とかの結果になってしまうので先頭の0を取る
という処理にしました。

でも、substr(割り算,2,3)としたら、この場合結果が405で、40.5%のようにも
したいなと思っているのですが、そうすると、
substr($result(405が入ってる),1,2) . '.' .substr($result,3,3) . '%';
なんてしなければいけないのかと思うのですが、もっとスマートなやり方
とかありますでしょうか。
長文ですみません。
083283105/02/19 19:56:35ID:TVy8jZr4
上げるのを忘れてしまいました。すみません。
よろしくお願いします。
0833nobodyさん05/02/19 20:05:25ID:???
http://jp.php.net/round
http://jp.php.net/sprintf
0834nobodyさん05/02/19 20:05:52ID:???
つーかなんで 100 かけないの?小学校で習ったでしょ?
0835nobodyさん05/02/19 20:09:30ID:???
$foo = floor($n / $a * 100) / 100;
083683105/02/19 20:13:23ID:???
>>834,835さん。
そう言われてみるとそうでした・・・。
PHPは関数がたくさんあって、計算とかするより関数使わなきゃいけないんだと
強固に思い込んでしまってて、変なことしてました。
お恥ずかしいです。すみません、ありがとうございました。
0837nobodyさん05/02/19 21:03:02ID:5g9U41P6
質問があります。

URLに、?a=1&b=2&c=3ってパラメータを埋め込んだとして、
foreach($_GET as $value){
echo $value;

}

ってした場合、a、b、cの順序で出力されますか?

何がいいたいかというと
パラメータの順序通りに配列にはいってるのかなぁって
疑問に思ったのです。
0838nobodyさん05/02/19 22:47:47ID:???
ためせばいいじゃん・・・
パラメータの順序通りに入ってたよ
083983705/02/20 00:18:51ID:hvCabO8I
>>838
もうしわけありませんでした。
説明が悪かったです。

PHPのバージョンや環境に関わらず
常に順番どおりに入っているのかが
疑問点なのです。

よろしくお願いします。
0840nobodyさん05/02/20 00:36:12ID:???
>>839
仕様として明記されていない事は不定。
不定なことに対し一定であることを期待して
プログラムを組むのは、ドツボにはまる一要因ナリ。
0841nobodyさん05/02/20 10:19:13ID:???
一度ソートしてみたら?
0842nobodyさん05/02/20 10:36:02ID:???
class sortclass {
 function quickSort($arr,$left,$right){
    if ($left <= $right) {
     $p = $arr[($left+$right) / 2];
      $l = $left;
      $r = $right;
      while($l <= $r) {
        while($arr[$l] > $p){ $l++; }
       while($arr[$r] < $p){ $r--; }
        if ($l <= $r) {
         $tmp = $arr[$l];
          $arr[$l] = $arr[$r];
         $arr[$r] = $tmp;
          $l++;
         $r--;
       }
      }
   }
    $this->quickSort($arr, $left, $r);
   $this->quickSort($arr, $l, $right);
  }
}
見よう見まねで作ったソートなんですけど、実行すると
PHP has encountered a Stack overflow
ってエラーが出ます。
おかしな所があれば修正お願いします。
0843nobodyさん05/02/20 12:36:47ID:???
Stack OverflowだYo!
0844nobodyさん05/02/20 13:47:32ID:???
再帰的処理が永遠に終了しないから、スタックオーバーフローなんだよ。
0845nobodyさん05/02/21 08:25:16ID:???
>>842
sort関数使ったほうが早いよ
0846nobodyさん05/02/21 10:42:04ID:???
>>845
シーーーッ・・・
それを言っちゃ(ry
0847nobodyさん05/02/22 00:28:25ID:WO7XFPFB
呼び出され側の関数から、
呼び出し元の関数の名前を知る方法はないでしょうか?
0848nobodyさん05/02/22 00:35:54ID:???
あったような気はするけど、それが何だったのかは思い出せない
0849 ◆.jC7ANgFY. 05/02/22 00:36:41ID:???
>>847
ありますよ。無名な関数を使いますが。
私が即席で作った下の関数を研究してみてください。

この関数をどの関数から呼び出されたのかを知りたい
関数から呼び出してみてください。名前が返ります。

function whocall() {
$bt = debug_backtrace();
return $bt[2]['function'];
}
0850nobodyさん05/02/22 07:26:04ID:???
>>847
関数名を引数に追加して呼び出すようにすればいいじゃん
0851nobodyさん05/02/22 11:26:04ID:???
>>847 じゃないけど
めんどくさいやん。
エラー処理なんかする時、あると便利だなぁと思うね。
085284705/02/22 11:53:12ID:???
>>849
ありがとうございます!
$bt[1]ですよね?
こんな関数があるとは知りませんでした。
>>850
そうしていたのですが出来るなら省略したいなと思いました。
>>851
そうですよね。
085384705/02/22 11:54:59ID:???
あ、無名関数を使ったら$bt[2]になるということでしょうか。
失礼しました。
0854nobodyさん05/02/22 13:10:07ID:d7ashhNp
質問させてください。

電源が入ってたり入ってなかったりするサーバに対し、
いま電源が入っている(アクセスできる)かを確認し、
その結果によって [Online] / [Offline] のような文字または画像を表示したいと考えています。
(結果を表示するページのサーバは、常にアクセス可能とします)

file関数で情報を取ってこれるかというやり方をしようと考えましたが(以下にスクリプト)、
この場合は yahoo.co.jp など存在し、アクセス可能なドメインでは[オンライン]、
yahoo.co.jppなどの存在しないドメインは[オフライン]と即表示されます。
しかし、ドメイン登録してあるのにサーバ電源が落ちている場合にはすぐには表示されません。
(set_time_limit関数の使い方は間違っているのでしょうか・・・)

set_time_limit(3);

$a = (@file("http://www.hogehoge.jp/")) ? "オンライン" : "オフライン";

print $a;


何か良い考えが思いついた方は、ご教授頂けるとありがたいです。
環境はPHP4.3.3 on RedHatLinux 7です。
0855nobodyさん05/02/22 13:21:03ID:???
>>854
自分ならfsockopenを使う
■ このスレッドは過去ログ倉庫に格納されています