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

【PHP】くだらねぇ質問はここに書き込みやがれpart7

■ このスレッドは過去ログ倉庫に格納されています
00019662005/07/12(火) 01:47:09ID:qOoYFCn7
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/

立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
0482nobodyさん2005/07/25(月) 13:52:30ID:???
PHP入門ってみんな本で勉強した?サイトでお勧めあったら教えて下さいな。
0483nobodyさん2005/07/25(月) 13:57:14ID:???
>>481
enumねぇ・・・

foreach (array('MONDAY', 'TUESDAY', 'WEDNESDAY', ...) as $i => $name) define($name, $i);

・・・無理があるな・・・orz
っていうか「列挙型」なるものはありえないな。
だって変数に「型」自体がない。

$x = MONDAY; // $xは列挙型なつもりでも
$x = "うんこ"; // なんのエラーもなし。

結論:配列でガンガレ!(enumとは完全に別口なやり方になると思うけど)
0484nobodyさん2005/07/25(月) 15:38:13ID:???
素直にJavaを使っておけ、と
0485nobodyさん2005/07/25(月) 17:34:01ID:???
複数ユーザが使うページで
URLにユーザ情報を持たせるにはどうしたらいいでしょうか?
ちょうどdel.icio.usのような感じで。↓のoneとtwoがユーザ名
ttp://del.icio.us/one/
ttp://del.icio.us/two/

ユーザ登録したときにディレクトリ(one,two)を作成して
スクリプトをコピーしてもいいのですがメンテナンスが大変、というか間違っている気がする。。。
htaccessで転送をかけるとURLが変わってしまうし。

すごい初歩的なことかもしれないんですが、さっぱり解りません。
どうかよろしくお願いします。
0486nobodyさん2005/07/25(月) 19:32:09ID:???
>485
Cookieでも使えば?
04874852005/07/25(月) 19:47:06ID:???
>486さん
ありがとうございます。
ユーザの特定にCookieを使うのですよね?
それで、URLの最後のディレクトリと付き合わせる。
その認証自体は ttp://del.icio.us/one/ なら
/one/index.php で行わなければいけないわけで
全ユーザに対してそのスクリプトを用意するには
やはりユーザ登録したときに元となるスクリプトをコピーして?
プログラムに変更が生じたときの対処も解らなかったのですが
ユーザがログインするたびに
/one/index.php を上書きコピーすればいいのでしょうか。。。

ほんとうに初心者なもので、意味不明だったらすみません。orz
04884582005/07/25(月) 20:38:37ID:???
httpsへのPOST結果の取得方法をお願いします(>_<)
GETならいろいろな方法があるのにorz
0489nobodyさん2005/07/25(月) 23:49:32ID:???
テキストファイル「test.txt」に書かれているファイルの更新日時を取得しようと
「test.php」を以下の内容で作成しました。

--- test.txt --------------------
/tmp/hoge.dat


--- test.php --------------------
<?php
$line = file("test.txt");
$filename = "$line[0]";
echo date( 'Y/m/d (D) H:i:s', filemtime($filename) );
print "$keyword"."<br>";
?>

これを実行すると、
PHP Warning: filemtime(): Stat failed for /tmp/hoge.dat
(errno=2 - No such file or directory) in /tmp/hoge.dat
1970/01/01 (Thu)
とエラーが出て、正常に日付が取得できませんでした。

そこで上記のプログラムの2、3行目を
$filename = "/tmp/hoge.dat";
と変えて実行すると正常に日付が取得できたので、パーミッションの問題ではないと思っています。

上記の内容では何が問題なのでしょうか?
ご教授お願います。
0490nobodyさん2005/07/26(火) 00:02:31ID:???
>>489
echo bin2hex($line[0]);
echo bin2hex("/tmp/hoge.dat");
0491nobodyさん2005/07/26(火) 07:33:50ID:???
>>489
変数を""で囲むわけは?
0492nobodyさん2005/07/26(火) 08:52:10ID:???
表示したPHPの出力結果をHTMLファイルとして書き出し、保存する方法を探しているのですが。
PHPでの出力を一行一行書き出していくやり方しか分かりませんでした。
何か良い方法はないでしょうか?

初心者質問ですみません。。
0493nobodyさん2005/07/26(火) 09:03:03ID:???
ob_start()、ob_get_contents()あたりでできるんじゃないかな。
0494nobodyさん2005/07/26(火) 12:01:00ID:???
post_max_sizeを超えた場合、$_POSTの中身は空っぽになってしまうものでしょうか?
どうやったらpost_max_sizeを超えたかどうかをスクリプト中で判断する事が出来るでしょうか?
0495nobodyさん2005/07/26(火) 12:02:33ID:???
パラメータがあるクラスの関数を
パラメータを省略して呼び出した場合
NULLとなってくれるでしょうか?

$hoge=>Charge();

function Charge($p)
{
  echo is_null($p)?'NULL':'NON';
}

実際に何回かやってみたのですが、$pは期待通りNULLとなったのですが
PHPの仕様でNULLになっているのか偶然NULLになったのか判断できないのです。

どうぞよろしくおねがいします。
0496nobodyさん2005/07/26(火) 13:00:27ID:???
>>495
$hoge=>Charge()が何なのか不明だが引数を省略するなら
function Charge($p=NULL)
としないと「引数が足りないエラー」になるはず。
0497nobodyさん2005/07/26(火) 13:20:21ID:???
ありがとう
HTMLの構造上、表向きには表示されてませんでしたが
ソースを表示したらおっしゃるとおり
Warning・・・・・・・・エラーが出てました。
0498nobodyさん2005/07/26(火) 14:18:20ID:???
サーバでのファイルの扱い方について質問があります。
以下の流れで余分な処理・追加した方がよい処理はあるでしょうか?

ロックファイルをオープン リトライ処理
ロックファイルをロック リトライ処理
目的ファイルをオープン リトライ処理
目的ファイルをロック リトライ処理
目的ファイルを処理
目的ファイルをロック解除・クローズ
ロックファイルをロック解除・クローズ・削除


リトライ処理とは、失敗した場合に時間を空けて再挑戦し、また失敗したら終了する処理です
スレ違いな気もしますが一応phpで作ってるので・・・よろしくお願いします
0499nobodyさん2005/07/26(火) 15:43:02ID:2Byv/a8J
はてなのようにキーワードを[キーワード]みたいに囲うと
そのキーワードでグーグル検索できるようなリンクを自動的に生成したいのですが
どのようにすればよいのでしょうか?

全部教えてとは言いません
使う関数だけでも教えていただけたらと思います
よろしくお願いします
0500nobodyさん2005/07/26(火) 15:53:15ID:???
[]でくくられて単語の前後に
mb_ereg_replaceを使って<a>タグを追加。
0501nobodyさん2005/07/26(火) 16:22:24ID:???
>>499
urlencodeがいるので、こんな感じか
<?php
$str = '[キーワード]をググる';
echo preg_replace_callback('/\\[(.*?)\\]/', 'add_google_tag', $str);
function add_google_tag($m) {
  return '<a href="http://www.google.co.jp/search?q='
    . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[1] . '</a>';
//  return '<a href="http://www.google.co.jp/search?q='
//    . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>';
}
?>
下側のコメントアウトしたreturnはカッコを残しておくバージョン。
0502nobodyさん2005/07/26(火) 17:40:53ID:mEdDXXbK
皆様お知恵を拝借。配列から空の要素("")を取り除くには
どのような処理が最も単純でしょうか? お願いいたします。
0503nobodyさん2005/07/26(火) 18:34:05ID:???
>>502

・preg_grep で「空要素で無いもの」だけを抽出
・その配列を利用する段階で「空要素」を無視
・空要素が入ってしまう様な配列を生成しない

お好きなものをどうぞ。
05045022005/07/26(火) 18:49:59ID:???
>>503
回答ありがとうございます。一発で配列から空の要素を
取り除いてくれるような関数はないんですね。

やっぱり3番目になると思うので、質問の前の段階から
お話しますと、文字列を mb_split で分割してるんです。
PREG_SPLIT_NO_EMPTY みたいなオプションがあれば
いいんですが、mb にはありませんよね?

ですので、先に mb_ereg_replace で空白に置換した後、
PREG_SPLIT_NO_EMPTY で行くことにします。どうも
ありがとうございました。が、もしもっと(・∀・)イイ!方法が
ありましたら、どうぞご教示願います。
0505nobodyさん2005/07/26(火) 19:30:06ID:???
JavaScriptとphpを組み合わせてロールオーバーしたりonclickしたタイミングで
webページを静的なままphpを動作させる方法ってあるんでしょうか?
0506nobodyさん2005/07/26(火) 19:37:43ID:???
ワケワカラン
05074892005/07/26(火) 20:12:52ID:???
>>490
レスありがとうございます。
最後に改行が入るんですね。
改行を消してやれば期待した通りに動作しました。

>>491
元々使用していたtest.txtにはファイル名に半角スペースを含むものがあるので
それで誤動作していたのかと思い、""で括りました。
その後、>>489のような最低限のプログラムでテストをしたため、そのままになっていました。
0508nobodyさん2005/07/26(火) 20:17:07ID:???
>>505
夏休みだねぇ・・・
0509nobodyさん2005/07/26(火) 20:18:11ID:???
>>505
何をしたいのかがわからん。
0510nobodyさん2005/07/26(火) 20:26:54ID:DRNxxqTe
静的なまま動作したいんだよ!
05114992005/07/26(火) 20:29:15ID:???
>>500-501
ありがとうございます
思い通りの結果が得られました
0512nobodyさん2005/07/26(火) 20:37:55ID:???
>>510
停まったまま、歩きたいんだよ!
って事?

ドラえもんにでもお願いしてください。
0513nobodyさん2005/07/26(火) 20:40:11ID:dI24bXxa
今度うちの会社に20歳の高等専門学校卒業の、高専プログラミング大会に
出場したやつがはいることになった・・・はげしくできそうで、俺首の予感
・・・・レベル高いんだろうなきっと
0514nobodyさん2005/07/26(火) 20:44:13ID:???
今って、そういう系の仕事副業じゃない?
え、俺?趣味です。。
0515nobodyさん2005/07/26(火) 21:43:53ID:???
>>505 == >>510 ?

たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。

: スルーしてくれ。
0516nobodyさん2005/07/26(火) 21:44:39ID:???
>>505 == >>510 ?

たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。

: スルーしてくれ。
0517515 5162005/07/26(火) 21:59:10ID:???
スマソ、ミスった・・・
0518nobodyさん2005/07/26(火) 22:23:04ID:???
あれだ あれ。ajaxとか言うやつ。きっとあれをやりたいんだよ。
php用のライブラリも幾つかあった気がするなぁ。
0519nobodyさん2005/07/26(火) 22:24:41ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0520nobodyさん2005/07/26(火) 22:28:29ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0521nobodyさん2005/07/26(火) 22:30:03ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0522nobodyさん2005/07/26(火) 22:32:06ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
0523nobodyさん2005/07/26(火) 22:36:03ID:???
onMouseover とか onClick でアマゾンのXMLを読みに行って
展開するみたいな話だろ夏休みのアフィ厨めスレ違いだ死ね
0524nobodyさん2005/07/26(火) 22:45:05ID:???
うーん、重い。。
0525nobodyさん2005/07/26(火) 23:10:54ID:???
この夏休みからphpの勉強を始めたリアル厨房です。

function hoge(){
$hoge="ほげ";
}
echo $hoge;
functionの中にglobal $hoge;
っていれたらオーケーになった。

あと、
functionの中に
return $hoge;
って書く場合と上記の違いってなんでしょうか?
どっちにしろglobalはないとダメみたい。スコープ?

もう一つ、functionに与える引数
function syoukai($watashi,$syokugyou){
echo $watashi . "は" . $syokugyou . "です。";
}
って書く場合の$watashi,$syokugyouの部分の変数名は、functionの外側で使ってる名前は使っちゃうとまずいのでしょうか?
0526nobodyさん2005/07/26(火) 23:45:04ID:???
>>505
AJAXでも使えば?
0527nobodyさん2005/07/27(水) 01:11:12ID:???
>>525
>>この夏休みからphpの勉強を始めたリアル厨房です。

勉強終えてから来い!
0528nobodyさん2005/07/27(水) 01:16:36ID:???
厨房だったら夏休みは他にやる事があるだろうが。

筆おろしとか、筆おろしとか、筆おろしとか・・・・
0529nobodyさん2005/07/27(水) 01:40:52ID:???
みなさん、オススメの教本はありますか?
色々なサイトを見て回ったけど全く理解出来ないorz
0530nobodyさん2005/07/27(水) 01:49:33ID:???
>>529
お前がどの程度の知識があるのかわからんが
今日からつかえるPHPでもかえば?
0531nobodyさん2005/07/27(水) 02:45:40ID:l/k2RuR9
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
05325032005/07/27(水) 03:12:16ID:???
>>504
>ですので、先に mb_ereg_replace で空白に置換した後、

って、そんな事しなくても mb_split の段階で「mb_ereg_replace で空白に置換」
する対象を含めた区切り文字を指定すれば良いのだわ。多分出来る筈よ。
0533nobodyさん2005/07/27(水) 03:25:31ID:???
>>531
enable-zend-multibyte
0534nobodyさん2005/07/27(水) 04:33:43ID:???
通常の質問スレって無くなったの?
0535nobodyさん2005/07/27(水) 05:01:58ID:???
>>534
タイトルから質問が消えてるな
一応あるw

【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/
0536nobodyさん2005/07/27(水) 05:06:12ID:???
>>535
ああ、それでひっかからなかったのか・・・。
サンクス。
0537nobodyさん2005/07/27(水) 06:33:37ID:l/k2RuR9
>>533
レスありがとう。やってみます(`・ω・´)
0538nobodyさん2005/07/27(水) 06:46:02ID:???
>>534
そこでくだらない質問したら頃す
0539nobodyさん2005/07/27(水) 07:28:46ID:???
GDでjpegからサムネールを生成した際、imagecopyresized()を使うと
右側に黒い線が残ってしまうことがあるんですが、これを回避する方法ってあるんでしょうか?
imagecopyresampled()だとこのような線は出ないんですが、サーバがGDver2に対応していないため、
imagecopyresized()を使っています。
05405312005/07/27(水) 07:37:22ID:???
昨日重かったからか、めっちゃ重複してたのか、スレ汚しスマソ。携帯から見てたから今気付いたよorz
0541nobodyさん2005/07/27(水) 07:59:45ID:???
>>539
色々な写真でimagecopyresizedしてみたけど、黒い線みたいなものは出なかったな。
思いつく限りの原因は
・引数に指定した幅などがズレてる(少数点以下の丸めなど)
・jpegに元から黒い線が入ってる(スキャナから取り込んだか何かで手作業が雑だったとか)
あたりかな。でもimagecopyresampledだと線は出ないのか・・・。
まあ解決策としては、引数のdstWを1ピクセル余分にとるとか、srcWを1ピクセル少なくとるとか試してみては?
0542nobodyさん2005/07/27(水) 10:52:23ID:???
下の二つの処理(CGIのプロセスの立ち上げやPHPのプリコンパイルも含)にかかる時間を計測して比較したいのですが
・PHPをモジュールで動かす
・C言語のバイナリCGI
どのような方法がありますか?
RedhatLinux、Apache、PHP5.0.4、gccを使っています。
0543nobodyさん2005/07/27(水) 11:41:03ID:???
>>485
mod_rewrite or pathinfo
0544nobodyさん2005/07/27(水) 11:55:53ID:???
>>541
引数に+1したらいけました。
ありがとうございました。
0545nobodyさん2005/07/27(水) 12:44:07ID:v2TCvlCU
Apache2 + PHP5をWindows2000にインストールしました。
web用のディレクトリにphpファイルを置いてブラウザで見ると
ちゃんと表示されることを確認したんですが、
それ以外のローカルフォルダに置いたphpファイルをIEに直接
放り込んでもphpが正しく表示させるにはどうしたらいいでしょうか?
05465452005/07/27(水) 12:45:27ID:???
> web用のディレクトリ

C:\Program Files\Apache Group\Apache2\htdocs

のことです。
0547nobodyさん2005/07/27(水) 12:48:39ID:???
>>545
file://だとApache経由しないのでPHP動きません
http://でしか表示できないので無理です
0548nobodyさん2005/07/27(水) 12:52:49ID:???
>>545
DocumentRootを変更したいならhttpd.conf。
そこから先はスレ違いナリ。
05495452005/07/27(水) 13:03:09ID:???
そうでしたか。
拡張子が.phpのファイルをブラウザで表示したら
勝手にphpが起動、というわけにはいかないのですね。
0550nobodyさん2005/07/27(水) 14:27:54ID:???
IEはHTMLしか解釈できない。
PHPスクリプトを解釈してHTMLを吐き出しているのはサーバ。
0551nobodyさん2005/07/27(水) 16:32:17ID:???
>>542
手軽にやりたいならabかな。
0552nobodyさん2005/07/27(水) 16:44:17ID:???
ファイルの更新日付ってphpから自由に操作出来ないですか?
0553nobodyさん2005/07/27(水) 16:50:51ID:???
>552
出来るよ
0554nobodyさん2005/07/27(水) 16:56:23ID:???
>>553
どのようにやるんでしょうか?
サーバの時計を変えてcopyとか…?
0555nobodyさん2005/07/27(水) 16:58:49ID:???
phpはスタイルシートを吐き出すことも出来るんですか?
0556nobodyさん2005/07/27(水) 17:01:30ID:???
>>555
ファイル名を.cssにして吐き出せば出来るだろ
0557nobodyさん2005/07/27(水) 17:14:20ID:???
>556
ビミョーな答えだね

>555
ヘッダでCSSのMIMEタイプを指定
0558nobodyさん2005/07/27(水) 17:21:40ID:???
pukiwikiのCSS見るといいかもね
0559nobodyさん2005/07/27(水) 17:31:27ID:???
>>551
なんと
05605592005/07/27(水) 17:34:03ID:???
ミスったorz

こんな便利な機能がApacheに付いていたとは!
早速試したところ、PHPが速かったりCが速かったりでした。
ありがとうございました。
0561nobodyさん2005/07/28(木) 01:28:15ID:???
階層化したカテゴリに含まれる情報を、選択したカテゴリだけ展開して表示するようなプログラムを書いています。
ひとまず、思った通りのものが書けたのですが必然的にループを入れ子で多用することになりました。
こういったパターンの物は書いたのが初めてなのですが、$iなんかのカウント用の変数をevalで、変数名に埋め込んでループしても上書きされない変数名の変数を生成したりしてるんですが、方法としてこれは変なのでしょうか?
問題としているのは以下の点です。
ループの入れ子(さらにその中でクエリを生成してDBに検索をかけてます)
ループ内で、カウント用の変数をevalでくっつけた変数を作ることを多用。

あいまいなまま、現在まで来てしまったのですが、whileとfor、どちらでも同じことが出来るのですが簡単にいってこの二つを使い分ける基準はなんでしょうか?
また、今回のケースはどちらをつかうのが適しているでしょうか?
0562nobodyさん2005/07/28(木) 01:39:42ID:???
>>561
SQLとリレーションDBを覚える方が適している
0563nobodyさん2005/07/28(木) 01:47:32ID:???
>>562
もちろん、自分なりに出来る範囲ですが正規化したDBを連携させてクエリを実行しております。
自分のかいたものの中では複雑な方なんで、このスクリプトをレンタル鯖に置いたら怒られないかなとか心配してるんです。
もちろん、ローカルの鯖では快適に動いてるんですが、なんせループを入れ子にしてそこで、クエリを生成して変数を作って、というプロセスが入れ子になってるんでこんなのあり?とか不安になってしまうんですよ。
0564nobodyさん2005/07/28(木) 02:51:26ID:/rx2yHMT
require_once()について質問ですが
この関数、Javaのimport宣言とは異なり、
PHPを呼び出したいとき、
現在のPHPファイルのディレクトリと該当する
PHPファイルのディレクトリとの位置関係を
気にしなければならない難点がありますね。

そこでディレクトリの位置関係を気にせずに
Javaのimport宣言のように
require()を使いたい各PHPファイルだけが
必要なPHPファイルときだけrequire()を呼び出すように
したいものです。

require.inc の中に必要なPHPファイルのrequire_onceを
全部書くというやりかたもありますが
それだとPHPファイルの数が増えれば増えるほど
見通しが悪くなりコードの解析が困難になります。

Javaのようにpackage(namespace)の概念がありディレクトリ名がパッケージ名
になるようなものがPHP5にもあればいいのですが
残念なことにnamespaceも不採用になったため思うようにいきません。
05655642005/07/28(木) 02:52:09ID:???
>564からの続き

私がやりたいことはこういうことです。
require_onceを各場所はrequire.incのようなファイルに一ヶ所に各のではなく
各phpファイルに必要なときのみ記述するように分散させたい。
例として、
  main.php がdir1/a.php, dir2/subdir1/b.phpを必要としている場合は
  そのrequire_onceをmain.phpの中に書く。

  dir1/a.phpがx.php, dir2/y.php, dir2/subdir1/b.phpを必要としている場合は
  require_onceの重複にかかわらずそのrequire_onceをmain.phpの中に書く。

環境の移行に即座に耐えられるようにするため絶対パスの変更を強いるような真似は
極力避けたいため、各require_onceのパスは相対パスにしたい。
main.phpがあるところを基準にディレクトリとしディレクトリ名は無しにしたい。


    以上を実現したいのですが可能でしょうか?


get_cwd()を使って
require_once get_cwd().'/dir1/a.php';
なんてことをやりましたがプログラムを実行するカレントディレクトリを変えると動かなかったのでやめました。
require_once getdir(get_realpath(__FILE__)).'/dir1/a.php';
も使ってみましたが、__FILE__を指す場所というのが、__FILE__を記述したファイルパスしか
指定できなかったため、この方法も断念せざるを得ませんでした。
0566nobodyさん2005/07/28(木) 03:17:47ID:???
普通にinclude_pathでも出来ると思うけど、それがいやならこんな感じかな。
config-hostspecific.inc
define("PACKAGE_DIR","/path/to/package");

main.php
require_once(PACKAGE_DIR."dir1/x.php");
require_once(PACKAGE_DIR."dir2/.....

javaだってCLASSPATHを設定するんだし、
全自動はトラブルのもとだとおもうよ。
0567nobodyさん2005/07/28(木) 03:19:00ID:???
>>565

include_pathを変更するという方法はどう?

-- config.php --
<?php
// config.phpが置かれているディレクトリのパスを取得
$lib_path = dirname(__FILE__);

// インクルードパスに設定するパスのリスト
$include_path_list = array(
$lib_path, // 追加するパス
ini_get('include_path'); // 既存のパス
);

// インクルードパスを変更
ini_set('include_path', implode(PATH_SEPARATOR, $include_path_list));
?>
---------------------

このconfig.phpをすべてのスクリプトの先頭で必ずrequire_onceするようにすれば、
config.phpの置かれているディレクトリから相対で指定できるようになる。

config.phpをrequireする部分はどうしても、___FILE___から相対パスを指定するか、
絶対パスを指定するなどになってしまうけど。
その変は仕方ないよね。
0568nobodyさん2005/07/28(木) 03:38:52ID:???
>>561
まず、テーブル設計(というかSQLか)に関して。
・階層の階数が固定なら outer joinで。(SQL92だから大抵のDBで使えるかと)
・固定じゃないなら、そのDBで再帰SQLを扱えるならそれを、扱えない場合でも拡張機能をうまく使えばできる場合もあり。
 (そのDBのメーリングリストで議論されていることが多い。再帰SQL、recursive sql、親子、ツリー などをキーワードに)
・テーブル設計に手を加える。いろいろ方法があるみたいだけど、例えば
 ttp://www.sitepoint.com/article/hierarchical-data-database あたりが参考になるかな?
・2chのDB板のモデリング関係のスレで幾つか見た気がする。
この辺りのお話で分からない事があればDB板へ。

で、上のような事は一切やらないとしてPHPの話に戻ると、オイラはevalを使うのは嫌いなので再帰関数を使う。
0569nobodyさん2005/07/28(木) 03:42:12ID:???
>>561
>ループを入れ子で多用
>カウント用の変数をevalで
このあたりで糞プログラムと断定。
普通はこんなことにはならないはず。
0570nobodyさん2005/07/28(木) 07:33:33ID:???
>>561
ループでクエリを発行するのはあまり良い方法ではありませんね
0571nobodyさん2005/07/28(木) 10:40:18ID:???
いまだに header() の使い方がよくわからない。
無くてもいいの?
0572軟式PHP2005/07/28(木) 10:44:33ID:???
>>571
使わないなら無くていいじゃん。
俺はかなり必要だけど。
0573nobodyさん2005/07/28(木) 10:44:55ID:???
>>571
よくわからない限りは無くていい。
05745712005/07/28(木) 10:56:26ID:???
>>572 , >>573
そんなもんかね。しばらくは触れないでおくことにする。
トンクス。
0575nobodyさん2005/07/28(木) 11:02:56ID:???
会員制のサイトを作ろうと思う。
認証方法はどういったものがありますか?
0576nobodyさん2005/07/28(木) 11:28:27ID:???
>>571
特に指定しなくてもphpの中の人が適当に付けてくれている。
それじゃあ対応できない時に使えばよい。
勉強したくなったら RFC 1945、RFC 2616あたりを読めばよいかと。(日本語訳は無いっぽいけどガンガレ)

>>575
質問が曖昧で本当は何を知りたいと思っているのかよく分からんが、
でっかい分類の仕方だと、1. 生パスワードと照合 2. パスワードに一方向性ハッシュを適応したものと照合 かな。
0577nobodyさん2005/07/28(木) 16:09:03ID:???
A〜Zをばかちょんな方法を使わないで表示させるのに
for ($c = 'A'; $c <= 'Z'; $c++) {
  print $c.' ';
}
とやったのですが
なぜか
A B C ・・・ X Y Z AA AB AC ・・・ YX YY YZ
と676回ループします。

条件式をから=を取って $c < 'Z' としたら
A〜Yまでの25回のループで終わるのですが
これはナゼでしょうか?
バグですか?

PHP 4.3.10
0578nobodyさん2005/07/28(木) 16:31:26ID:???
>>577
なんかおもしろいね。症状の説明はできないけど正しく動かすにはこう書く。
症状の説明はどなたかスパマンが現れるまで待たれよ。
for ($c = ord('A'); $c <= ord('Z'); $c++) {
 print chr($c).' ';
//printf('%c ', $c);    //こちらの記述でもOK
}
0579nobodyさん2005/07/28(木) 16:38:32ID:???
そうですか
Cと同じ感覚でやってみたのですが
こうゆう場合はordを使わなければダメなのですね。
ordの関数がどういうものか調べてやってみます。
勉強させていただきました。
0580nobodyさん2005/07/28(木) 16:44:17ID:???
ordってorzに見えるな。
('A')って(´Д`)に見えるな。
0581nobodyさん2005/07/28(木) 16:45:31ID:iGAmBrlm
('A')('Z')('A')('Z')
0582nobodyさん2005/07/28(木) 17:04:32ID:???
>>577
http://www.php.net/manual/ja/language.operators.increment.php
例 15-2.

これは知らなかった・・・orz
■ このスレッドは過去ログ倉庫に格納されています