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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/08/06 15:44ID:paJ4kjjQ
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ等>>2-4


抜けているものがあったら補足願います
075675504/08/22 11:21ID:???
一応捕捉。
デザインパターンで使われる singleton などはこの方法を使って実現している。
以下のサイトの説明が分かりやすい。

ttp://www.pat.hi-ho.ne.jp/dimension/sample/sample_class_dp_singleton.shtml
0757nobodyさん04/08/22 11:59ID:???
php+IISの環境にNamazuをインスコしたいのですが
どうやったらいいのでしょうか。
0758nobodyさん04/08/22 12:05ID:???
こんにちは
height = 200+100 (と入ってると仮定して)
<input type="text" name="height" size="10" value="" />
これでPOSTして
$height = $_POST['height'];
echo $height; //ここが200になる。

のですが、これを300 200+100した値が取れるように出来ないものでしょうか?
POSTのFORMで200/2 や200*2などをやりたいのですが。
よろしくお願いします。
0759nobodyさん04/08/22 12:23ID:???
('A`)
076075304/08/22 13:26ID:97mKEXwz
>>754-756
レスthx.

実は、
http://jp2.php.net/manual/ja/language.references.return.php
ココのマヌアルページが理解できなくて......onz

>>755
>> 多分、関数の前に & を付けると関数からの返り値には関数内の変数の
>> リファレンスが返ってくるということだろう。

あぁ、function &foo(){...... return($a); }と $hoge =& foo();と両方とも "&" を
つけた場合にのみ、function foo()の返り値の$aのリファレンスが$hogeにおさめられると。
それ以外の、
・function foo(){...... return($a); }; で定義して $hoge =& foo(); でコール
・function &foo(){...... return($a); }; で定義して $hoge = foo(); でコール
だと、普通に$aが$hogeにおさめられる仕様になるわけですね。

これで、すこし━━━(゚∀゚)━━━━ッ!!って感じだったけど、
>>755でいただいたサンプルスクリプトを実行して???になりました。

最後のvar_dump($foo2)がなんで、int(2)になるんですか?..... onz
function foo2()の返り値$aのリファレンスが返ってくるということは、・・・・$aの実体はなんですか?
static $a = 1;だから、$a の実体は、int(1)じゃないんですか?なんで、int(2)がかえってくるんだろう?

function内のリファレンスを理解できてないな。

# $aはstaticというのは、function foo1とfoo2の$aは自分が呼ばれた記憶を$aに保持していると
# いうことで理解しているんですが合ってますか?それは、function内のリファレンスとは関係ない?
076175504/08/22 14:12ID:???
>>760
static については、マニュアルを参照。
ttp://jp.php.net/manual/ja/language.variables.scope.php

最後の var_dump($foo2) が int(2) になるのは、9行目の $foo2 = 2; を実行したから。
これは、foo2() の中の static $a で定義した $a を変更したのと同じ。

つまり、言いたかったことは、
3行目の $foo1 =& foo1(); で取得した $foo1 は foo1() の static で定義された $a のリファレンスではないけど、
4行目の $foo2 =& foo2(); で取得した $foo2 は foo2() の static で定義された $a のリファレンスということ。

static の変数が単なる変数ではあまり大したことはできないけど、この形でクラスや配列を扱うよう
になると便利さがわかるようになるかもしれない。

PHP のソースを読んで確認した訳でもないのでもしかしたら間違っているかもしれないけど。
0762nobodyさん04/08/22 15:48ID:E2HwDzLs
MySQLのphpmyadminでOverload ってのがありますが、
これって負荷と同義で考えて問題ナッシングでしょうか?
076375304/08/22 16:11ID:97mKEXwz
>>760
あぁ。理解できました。ありがとうございます。

自分的には、こうしたらわかりやすかったです。
<?php
function foo1(){static $a = 1;return $a;}
function &foo2() { static $a = 1; return $a; }
$foo1 =& foo1();
$foo2 =& foo2();
var_dump($foo1);
var_dump($foo2);

$foo1 = 2;
$foo2 = 8;
$foo1 =& foo1();
$foo2_2 =& foo2();
var_dump($foo1);
var_dump($foo2_2);
?>

$foo2 =& foo2(); で、function foo2 の返り値へのリファレンスを作って
$foo2 = 8;    で、function foo2 の返り値に8を入れる。リファレンスなので、function内の$aに影響して$a = 8;
static $a;     と、foo2()で定義してるので、そのあとに
$foo2_2 =& foo2(); で呼ばれた時にも$a = 8;が有効なので $foo2_2 には8が入る。
最後の $foo2_2 =& foo2(); は、$foo2_2 = foo2(); でも同じ結果ですね。
リファレンスを得るか値を作るかが違うだけで。

076475304/08/22 16:21ID:97mKEXwz
あと、
http://jp2.php.net/manual/ja/language.references.return.php
が理解できなかった原因として、下記のサンプルコードがあるんですが、
<?php
function &find_var ($param) {
...コード...
return $found_var;
}

$foo =& find_var ($bar);
$foo->x = 2;
?>

このfunction find_var()は$found_varを返していますが、
これは次の
$foo->x = 2;
とあることから、....コード....で、作られたオブジェクトと考えていいのでしょうか。
「リファレンスを使う最大の目的はインスタンスの複製を行わないでメモリ消費を抑える」
ということから、あえて自明として....コード....の部分でオブジェクトを作ってると
マニュアルには記述してないのかなと思いますが。

合ってる?
それとも、「->」ってインスタンスのメンバにアクセスする以外の使い方で用いてるのかな?
0765nobodyさん04/08/22 16:44ID:???
>>762
DB板の方が適切だと思うよ
076675504/08/22 17:50ID:???
>>764
確かに分かりにくいコードだね。そこのマニュアルには、
「この例では、関数find_varにより返されたオブジェクトのプロパティが、設定されます。」
と書かれているので、find_var() はオブジェクトを返すのは間違いないと思うけど。
とりあえず、無理矢理サンプルを考えてみた。
static 変数を使わなくても global 変数でも同じ様にできるということで。

class Foo { }
$bar =& new Foo;
$bar->x = 1;

function &find_var($param) {
    $found_var = null;
    if (isset($GLOBALS[$param])) {
        $found_var =& $GLOBALS[$param];
    }
    return $found_var;
}
function test1() { $foo =& find_var('bar'); $foo->y = 3; }
function test2() { $foo =& find_var('bar'); $foo->z = 2; }

test1();
test2();
$foo =& find_var('bar');
var_dump($foo);
0767nobodyさん04/08/22 18:36ID:???
サイトに会員制の部分をつくりたいのですが、パスワードをセッション
変数として保持しながらページを作成していくと、javascriptの
history.back()を使用してページを戻るときに「有効期限切れ」と
なってしまいます。

フォーム入力確認で戻る必要があるのですが、どういった方法で
会員制にするのがよいのでしょうか?
0768nobodyさん04/08/22 18:45ID:???
↑は無視してください。
すいません。セッションのスレで聞きなおします。
0769nobodyさん04/08/22 19:52ID:a2aIDnS/
phpinfo.phpをIEで開くとファイルのダウンロードが起動します。
どうして見れないのでしょうか?
設定の段階で何か失敗しているのでしょうか?

助けてください。
0770nobodyさん04/08/22 19:59ID:???
>>769
お前が何をどうやったかわかるエスパーがいると思うか?
077176904/08/22 20:03ID:a2aIDnS/
どのように説明すればいいでしょうか?
0772nobodyさん04/08/22 20:13ID:???
>>769
1)PHPをインストールしていない
2)webサーバの設定をしていない
「インストールってどうやるんですか」とか「設定ってどうやるんですか」なんて聞くなよ
077376904/08/22 20:21ID:a2aIDnS/
PHPのインストール、サーバーの設定(Apache)も本を見ながら行いました。
0774nobodyさん04/08/22 20:25ID:???
>>773
たぶんhttpd.confの問題


一応訊いておくがApacheが起動してなかったりしないよな?
0775nobodyさん04/08/22 20:26ID:???
だからその設定やインストールの仕方も一緒に書かないとどうなってるのかわかんないだろ
0776nobodyさん04/08/22 20:31ID:???
もうほっとけよ
0777nobodyさん04/08/22 20:38ID:???
スレ違いはスルーしろや
夏になると教えたがり厨も増えて困る
0778nobodyさん04/08/22 21:17ID:dLrjNlop
Nucleusの設置でYour PHP version does not have support for MySQL
と表示されるんですけどどのバージョンなら動きますか?
ちなみに今は、「php-4.2.3-0vl5」です
0779nobodyさん04/08/22 21:26ID:???
>>778
どのバージョンなら動くってよりも、
どのバージョンだから
Your PHP version does not have support for MySQL
ってでたのか書いた方がよくないんか?
しかもphpが究極にふるいけど。DBはいくつだ?
0780nobodyさん04/08/22 21:27ID:???
>>778
マニュアル読め
自分で試せ
0781nobodyさん04/08/22 21:31ID:???
ちなみにうちは
PHP4.3.4〜4.3.8
MySql 4.0.2
でNucleus3.0は動いてたよ。
0782nobodyさん04/08/22 21:34ID:???
>>780
前に、WIN板だけど、
自分で試すともしものリスクがあるから、イヤダってやついたからな。
。。さすがだと思ったけど
0783nobodyさん04/08/22 21:35ID:yiZXjncr
PHPのビルドってどのくらい時間かかりますか?
0784nobodyさん04/08/22 21:41ID:???
自分でタメセヨ

0785nobodyさん04/08/22 22:38ID:???
漏れのばあい疲れてると5分、調子いいと15分、締まり具合によるけどな。
0786nobodyさん04/08/22 22:52ID:yiZXjncr
>>784
自分で試したいのは山々なんですが、devenv5個起動してて、
さすがに無理そうです。
0787nobodyさん04/08/22 23:36ID:???
1分ですもうと1週間かかろうと必要ならやらんとイカンだろ。
とりあえずやってみ。
078873404/08/23 01:24ID:???
>>750
そうですか。ありがとうございます。
0789nobodyさん04/08/23 03:56ID:???
PHP勉強しようと思い先ほど始めました
マニュアル読んできますー
これからお世話になるかもしれませんので、
おyろしく
0790nobodyさん04/08/23 04:04ID:Cbp61B7f
eregで複数マッチした場合、配列[0]には何が入るのでしょうか??
基本的なことで申し訳ありません_(..)_
0791nobodyさん04/08/23 04:17ID:???
>>790
自分で試そうとは思わないの?
0792nobodyさん04/08/23 05:01ID:???
試しました。申し訳ありません。
マッチしたうちの最も大きな文字列が入るという噂もあったんで迷っていたんですが、
そうじゃないみたいですね。ありがとうございました。
0793nobodyさん04/08/23 11:20ID:mw0a3S3I
アホアホな質問でもスミマセヌ

PHP 内でタグを記述する時に

 <br />

見たいな感じで、">" の出前に "/" が付与されてる事が
あるんですが、これの意味って何なのでしょうか・・・?
079479304/08/23 11:22ID:mw0a3S3I
もしHTMLの話であれば、完全なスレ違いだと思いますんで
自分で調べられそうなサイトだけでもご教授くださいマセ orz
0795nobodyさん04/08/23 11:40ID:???
>> 793

XHTML 入門 でぐぐってみそ。
0796nobodyさん04/08/23 11:43ID:???
XML
0797nobodyさん04/08/23 16:44ID:???

【PHP】Phrameを使う【フレームワーク】
http://pc5.2ch.net/test/read.cgi/php/1093238107/
0798nobodyさん04/08/23 18:26ID:???
>>790
print_r
という関数を使えば配列を全て表示できるよ
デバッグ用に使ってね
0799nobodyさん04/08/23 18:42ID:OxTNe7cI
pear落ちてるぞ。
0800nobodyさん04/08/23 18:55ID:???
お前だけな
0801nobodyさん04/08/23 22:10ID:???
Linuxの共有鯖を借りて、Win環境で製作したPHPの
サイトを作ろうと思ってるんですが
何か気をつけた方が良いことってありますか?
0802nobodyさん04/08/23 22:33ID:YOffYGPl
PHPの日本語chmはいつになったら文字化けが治るんですか(`Д´)
2003年4月頃のをいまだに使用しております(`Д´)
0803nobodyさん04/08/23 22:59ID:???
GETとPOST何が違うんだろ
0804nobodyさん04/08/23 23:00ID:ozJ0+2Je
特に文字化けしてないけど…
どのページ?
0805nobodyさん04/08/23 23:06ID:ozJ0+2Je
>>801
ずばり、文字コード。EUCとShift-JISね。
あと細かなところでは、ファイルのパスとか(「\」じゃなくて「/」を使ってるよね?)。
あとはファイル名の大文字小文字を区別うんぬんとか。つまりOS依存の部分ね。

>>803
そう思った理由を書いてみないと。
0806nobodyさん04/08/23 23:08ID:???
同じなら、GETの方が文字数少ないしネットにやさしいかなって。
1文字しか違わないけど、ちょっと思いました。
0807nobodyさん04/08/23 23:11ID:???
>>806
GETはURLに埋め込めるんだよ。
↓
ttp://127.0.0.1/~php/index.php?get=get
の場合…
print $_GET["get"];
/* 結果↓ */
get
0808nobodyさん04/08/23 23:12ID:???
>>807さん詳しそうですね。
もっといろいろ知りたいのですが、質問してもいいでしょうか?
0809nobodyさん04/08/23 23:13ID:???
うっ、プロと見た!
0810nobodyさん04/08/23 23:22ID:???
>>808
答えられる範囲なら。
眠いからもう寝るかも。
0811nobodyさん04/08/23 23:31ID:???
今、HTTPサーバ作ってるんですけど、pukiwikiがうまく動かないんです。
phpinfo()も、ロゴが表示されません。
たぶん、CGIの子プロセス側に与える変数が不足してるような気がするんだけど、
最低限必要な変数の一覧ってどこかに無いですか?
CGI/1.1Specは全く不十分でした。
そもそも変数をどうやって渡すかといった規定すらなく、
色々試してみるしか有りませんでした。
0812nobodyさん04/08/23 23:34ID:???
それとも、PHPはCGIで起動すると機能制限があるのかな?
0813nobodyさん04/08/23 23:38ID:???
在るわけない
SafeModeはmod_phpのみ
0814nobodyさん04/08/23 23:38ID:???
>>811
PHPのバージョンが古いんだよ。でバージョンは?
0815nobodyさん04/08/23 23:41ID:???
そうですか・・・
PHP Test Suiteとかないかなぁ?
0816nobodyさん04/08/23 23:43ID:???
バージョンは、PHP Version 4.3.8です。
System Windows NT XP1 5.1 build 2600
Build Date Jul 13 2004 17:31:56
Server API CGI/FastCGI
Virtual Directory Support enabled
PHP API 20020918
PHP Extension 20020429
Zend Extension 20021010
Debug Build no
Thread Safety enabled
Registered PHP Streams php, http, ftp, compress.zlib
こんなの。
0817nobodyさん04/08/23 23:51ID:YOffYGPl
>>804

えー(;´Д`)
もしかしてみんな気付いてないの?

http://www.php.net/download-docs.php

ここの『Japanese chm』てのダウンロードしてみてよ。
もう1年以上も、文字バケバケなまんまですよ?

chmが一番便利だからよく使うのに、困ります(`Д´)
0818nobodyさん04/08/23 23:53ID:???
あるぇー?
化けてないよ?
0819nobodyさん04/08/23 23:55ID:???
化けてたw
0820nobodyさん04/08/23 23:57ID:???
漏れは化けてないよ?どのページ?
0821nobodyさん04/08/23 23:59ID:???
キーワードのとこ。
0822nobodyさん04/08/23 23:59ID:???
SJISで化けるだけだろ
UTF-8にしろ
0823nobodyさん04/08/23 23:59ID:YOffYGPl
>>820

chmを開くと左側に検索フレームが出るべ?
[目次][キーワード][検索][お気に入り]ってさ。

そのキーワードが化け化けだっぺさ。
それが原因かしらんが、検索もできないだっぺさ。
とてとて困る(;´Д`)

2003年4月頃はまだ化けてなかったので
そのとき落としたchmを今だに使用しているよ(;´Д`)

なんとかして > 偉い人
0824nobodyさん04/08/23 23:59ID:???
化け化けだよ ページは化けてないけどね。使い物にはならないよね
082582204/08/24 00:00ID:???
って、chmだったかスマソ
0826nobodyさん04/08/24 00:00ID:Q8I08UQN

>>822
> SJISで化けるだけだろ
> UTF-8にしろ

やりから教えてたもられ
0827nobodyさん04/08/24 00:03ID:???
Note: The htmlhelp.xsl is currently not too useful alone, as it's used by the new CHM build system which is not available in CVS right now
いまいち意味が・・・
待てって意味なのかな??
0828nobodyさん04/08/24 00:04ID:???
あー、ホントだ、キーワードだめだめだな…
で、こんなページ見つけたから参考にしてみて
ttp://apollo.u-gakugei.ac.jp/~sunaoka/misc/php_manual_ja/
0829nobodyさん04/08/24 00:07ID:???
その勢いで、CGIのほうもよろしくお願いします。
0830nobodyさん04/08/24 00:34ID:???
http://o2on.s69.xrea.com/index.php?The%20O2ON
ここに圧縮してアップしました。
CGIがさっぱりです。
0831nobodyさん04/08/24 01:00ID:???
>>828
うぉぉぉぉおおおお!ありがてー
ずっと困ってたんだよね<文字化け
ていうかこんなの本家でなんとかしる!
0832nobodyさん04/08/24 01:15ID:???
>>831
そうだね 
083380204/08/24 01:19ID:???
>>828

ありがとう〜
自分も探してみればよかった
でもほんと、本家でなんとかしてほしいですね
0834nobodyさん04/08/24 01:40ID:???
こっちのほうが簡単かも
 PHPマニュアルを使いやすくするパッチ
 http://www.vector.co.jp/soft/dl/win95/prog/se321697.html
0835nobodyさん04/08/24 02:17ID:???
>>834
うぉ!こんな便利なのがあったのかー。
さんきぅ
0836nobodyさん04/08/24 03:45ID:???
超初心者です。お手柔らかに。。

test.php内で

<?php include($content); ?>

と記述して

http://xxxx.com/test/test.php?content="content.htm"

としてtest.phpにcontent.htmをインクルードしようとしているのですが、
エラーがでるので何かトンチンカンな間違いをしてるはずです。。
目的として、フレームレスのページを作りたくて、アドレスで変数を書き換えて
メインコンテンツの表示を分岐させたいのです。
どうすれば上手くいきますでしょうか?

宜しくお願いいたします!m(_ _)mm(_ _)m
0837nobodyさん04/08/24 04:00ID:???
<?php
echo file_get_contents($_GET['content']);
?>
こんなの?
0838nobodyさん04/08/24 04:12ID:???
>>836
例えばWin鯖なら、
http://xxxx.com/test/test.php?content=c%3A%5CDocuments%20and%20Settings%5C....
なんてされると、中身が丸見えになっちゃうよ。
0839nobodyさん04/08/24 04:31ID:???
そこはちゃんとPHP側で禁止処理しないとな
0840nobodyさん04/08/24 05:43ID:???
>>833
ttp://bugs.php.net/bug.php?id=26616
かなり前からバグ報告は上がってるが、ずっとopenのまま。
直す気は無いらしい・・・

>>826
以前試しにchmをUTF-8で作り直してみたことがある
ビュアがSJIS専用に作られているらしく、結局キーワードは文字化け
一部にSJISで表示できない文字もあるのに残念
(>>822は>>825で修正してるけどね)

みんな困っているらしくて、php_manual_ja.chmでググると
直っているファイルが結構見つかる
084183604/08/24 11:40ID:???
>837さん

ありがとうございます!以下のようにしましたら上手くいきました!
これでサイドメニュー付きのフレーム無しページが作れそうです。

[test.php内]

<TABLE>
<TBODY>
<TR>
<TD>
<?php echo file_get_contents($_GET['content']); ?>
</TD>
<TD>
<a href="test.php?content=content01.htm">コンテンツ1</a><br>
<a href="test.php?content=content02.htm">コンテンツ2</a><br>
</TD>
</TR>
</TBODY>
</TABLE>

>838さん
>839さん

以上のようなソースのままではディレクトリを見られる危険性はあるということですね。
PHP側で禁止処理とは具体的にどういったものでしょうか?
それとも別な方法で、もっとスマートなやり方があるのでしょうか?
一応はググってみたのですがはっきりとわかりません。
教えて君ですいませんが宜しくお願いいたします。
0842nobodyさん04/08/24 12:27ID:???
>>841
index.php?name=うんこ
とか、名前にうんこ入って飛んで来たらいややん、
受け取ったうんこをどうにかしたいよね。
if(ereg("うんこ",$_GET['name'])){$_GET['name']="";}
そこで、名前にうんこが入ったら、名前を空にするとか
0843nobodyさん04/08/24 12:30ID:???
>>841
あと、Smartyでぐぐり スマートになるから
0844nobodyさん04/08/24 12:36ID:???
>>841
ex)
$content=array('content01'=>'content01.htm','content02'=>'content02.htm');
if(array_key_exists($_GET['content'],$content)){
$view_content=$content[$_GET['content']];
}else{
$view_content='not_found.htm';
}
-snip-
<?php echo file_get_contents($view_content); ?>
-snip-
<a href="test.php?content=content01">コンテンツ1</a><br>
<a href="test.php?content=content02">コンテンツ2</a><br>
-snip-
0845nobodyさん04/08/24 17:40ID:???
ShiftJISかEUC…どっちがいいんだろ
0846nobodyさん04/08/24 18:07ID:???
俺はEUCで書いてるが
0847nobodyさん04/08/24 18:12ID:???
SJISを選ぶメリットなんかあるの?
携帯相手に変換しなくてもいいってぐらいしか思いつかない
0848nobodyさん04/08/24 18:16ID:???
>>845
ちゃんと設定していれば同じだろ。
開発環境とか鯖によって使い勝手が違う程度。
エンジン内部はUnicodeだったと思うが。
0849nobodyさん04/08/24 18:32ID:???
PHPの内部処理デフォルト文字コードはEUC。
だからEUC推奨。
085084804/08/24 18:36ID:???
>>849
古い情報なんだけど、

http://ns1.php.gr.jp/pipermail/php-users/2002-June/008149.html
> mbstringは内部的に全ての文字コードをUnicodeに変換しています。
> つまり、UTF-8等を使うともっとも効率良く動作します。

ってあるのだが、変わったのか?
0851nobodyさん04/08/24 18:47ID:JRjosLZb
俺はUTF-8で書いてるんだけどダメ?
XHTMLとRSS吐き出させてるから楽なんだけども。。
0852軟式PHP04/08/24 19:08ID:???
文字コード議論はループするの巻(´・ω・`)
0853nobodyさん04/08/24 19:14ID:???
コーディングはEUC
出力はSJISでやってる
0854nobodyさん04/08/24 19:37ID:???
UTF-8でないと表示できない文字とかあるのでUTF-8
0855nobodyさん04/08/24 19:57ID:???
厨質問で申し訳ないんだけど、
UTF-8で書くってのは・・・・
どんな設定のことを言うの?

まず、ソースの文字コードだよね?
あとブラウザに吐き出す header だよね?
テンプレートの文字コードだよね?

他には?
■ このスレッドは過去ログ倉庫に格納されています