【PHP】質問スレッドpart20【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/06 15:44ID:paJ4kjjQ・新規質問の方は上げてください。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
抜けているものがあったら補足願います
0756755
04/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:???どうやったらいいのでしょうか。
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:???0760753
04/08/22 13:26ID:97mKEXwzレス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内のリファレンスとは関係ない?
0761755
04/08/22 14:12ID:???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これって負荷と同義で考えて問題ナッシングでしょうか?
0763753
04/08/22 16:11ID:97mKEXwzあぁ。理解できました。ありがとうございます。
自分的には、こうしたらわかりやすかったです。
<?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(); でも同じ結果ですね。
リファレンスを得るか値を作るかが違うだけで。
0764753
04/08/22 16:21ID:97mKEXwzhttp://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;
とあることから、....コード....で、作られたオブジェクトと考えていいのでしょうか。
「リファレンスを使う最大の目的はインスタンスの複製を行わないでメモリ消費を抑える」
ということから、あえて自明として....コード....の部分でオブジェクトを作ってると
マニュアルには記述してないのかなと思いますが。
合ってる?
それとも、「->」ってインスタンスのメンバにアクセスする以外の使い方で用いてるのかな?
0766755
04/08/22 17:50ID:???確かに分かりにくいコードだね。そこのマニュアルには、
「この例では、関数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/どうして見れないのでしょうか?
設定の段階で何か失敗しているのでしょうか?
助けてください。
0771769
04/08/22 20:03ID:a2aIDnS/0772nobodyさん
04/08/22 20:13ID:???1)PHPをインストールしていない
2)webサーバの設定をしていない
「インストールってどうやるんですか」とか「設定ってどうやるんですか」なんて聞くなよ
0773769
04/08/22 20:21ID:a2aIDnS/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と表示されるんですけどどのバージョンなら動きますか?
ちなみに今は、「php-4.2.3-0vl5」です
0779nobodyさん
04/08/22 21:26ID:???どのバージョンなら動くってよりも、
どのバージョンだから
Your PHP version does not have support for MySQL
ってでたのか書いた方がよくないんか?
しかもphpが究極にふるいけど。DBはいくつだ?
0781nobodyさん
04/08/22 21:31ID:???PHP4.3.4〜4.3.8
MySql 4.0.2
でNucleus3.0は動いてたよ。
0783nobodyさん
04/08/22 21:35ID:yiZXjncr0784nobodyさん
04/08/22 21:41ID:???0785nobodyさん
04/08/22 22:38ID:???0786nobodyさん
04/08/22 22:52ID:yiZXjncr自分で試したいのは山々なんですが、devenv5個起動してて、
さすがに無理そうです。
0787nobodyさん
04/08/22 23:36ID:???とりあえずやってみ。
0789nobodyさん
04/08/23 03:56ID:???マニュアル読んできますー
これからお世話になるかもしれませんので、
おyろしく
0790nobodyさん
04/08/23 04:04ID:Cbp61B7f基本的なことで申し訳ありません_(..)_
0792nobodyさん
04/08/23 05:01ID:???マッチしたうちの最も大きな文字列が入るという噂もあったんで迷っていたんですが、
そうじゃないみたいですね。ありがとうございました。
0793nobodyさん
04/08/23 11:20ID:mw0a3S3IPHP 内でタグを記述する時に
<br />
見たいな感じで、">" の出前に "/" が付与されてる事が
あるんですが、これの意味って何なのでしょうか・・・?
0794793
04/08/23 11:22ID:mw0a3S3I自分で調べられそうなサイトだけでもご教授くださいマセ orz
0795nobodyさん
04/08/23 11:40ID:???XHTML 入門 でぐぐってみそ。
0796nobodyさん
04/08/23 11:43ID:???0797nobodyさん
04/08/23 16:44ID:???【PHP】Phrameを使う【フレームワーク】
http://pc5.2ch.net/test/read.cgi/php/1093238107/
0799nobodyさん
04/08/23 18:42ID:OxTNe7cI0800nobodyさん
04/08/23 18:55ID:???0801nobodyさん
04/08/23 22:10ID:???サイトを作ろうと思ってるんですが
何か気をつけた方が良いことってありますか?
0802nobodyさん
04/08/23 22:33ID:YOffYGPl2003年4月頃のをいまだに使用しております(`Д´)
0803nobodyさん
04/08/23 22:59ID:???0804nobodyさん
04/08/23 23:00ID:ozJ0+2Jeどのページ?
0805nobodyさん
04/08/23 23:06ID:ozJ0+2Jeずばり、文字コード。EUCとShift-JISね。
あと細かなところでは、ファイルのパスとか(「\」じゃなくて「/」を使ってるよね?)。
あとはファイル名の大文字小文字を区別うんぬんとか。つまりOS依存の部分ね。
>>803
そう思った理由を書いてみないと。
0806nobodyさん
04/08/23 23:08ID:???1文字しか違わないけど、ちょっと思いました。
0807nobodyさん
04/08/23 23:11ID:???GETはURLに埋め込めるんだよ。
↓
ttp://127.0.0.1/~php/index.php?get=get
の場合…
print $_GET["get"];
/* 結果↓ */
get
0809nobodyさん
04/08/23 23:13ID:???0811nobodyさん
04/08/23 23:31ID:???phpinfo()も、ロゴが表示されません。
たぶん、CGIの子プロセス側に与える変数が不足してるような気がするんだけど、
最低限必要な変数の一覧ってどこかに無いですか?
CGI/1.1Specは全く不十分でした。
そもそも変数をどうやって渡すかといった規定すらなく、
色々試してみるしか有りませんでした。
0812nobodyさん
04/08/23 23:34ID:???0813nobodyさん
04/08/23 23:38ID:???SafeModeはmod_phpのみ
0815nobodyさん
04/08/23 23:41ID:???PHP Test Suiteとかないかなぁ?
0816nobodyさん
04/08/23 23:43ID:???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えー(;´Д`)
もしかしてみんな気付いてないの?
http://www.php.net/download-docs.php
ここの『Japanese chm』てのダウンロードしてみてよ。
もう1年以上も、文字バケバケなまんまですよ?
chmが一番便利だからよく使うのに、困ります(`Д´)
0818nobodyさん
04/08/23 23:53ID:???化けてないよ?
0819nobodyさん
04/08/23 23:55ID:???0820nobodyさん
04/08/23 23:57ID:???0821nobodyさん
04/08/23 23:59ID:???0822nobodyさん
04/08/23 23:59ID:???UTF-8にしろ
0823nobodyさん
04/08/23 23:59ID:YOffYGPlchmを開くと左側に検索フレームが出るべ?
[目次][キーワード][検索][お気に入り]ってさ。
そのキーワードが化け化けだっぺさ。
それが原因かしらんが、検索もできないだっぺさ。
とてとて困る(;´Д`)
2003年4月頃はまだ化けてなかったので
そのとき落としたchmを今だに使用しているよ(;´Д`)
なんとかして > 偉い人
0824nobodyさん
04/08/23 23:59ID:???0825822
04/08/24 00:00ID:???0826nobodyさん
04/08/24 00:00ID:Q8I08UQN>>822
> SJISで化けるだけだろ
> UTF-8にしろ
やりから教えてたもられ
0827nobodyさん
04/08/24 00:03ID:???いまいち意味が・・・
待てって意味なのかな??
0828nobodyさん
04/08/24 00:04ID:???で、こんなページ見つけたから参考にしてみて
ttp://apollo.u-gakugei.ac.jp/~sunaoka/misc/php_manual_ja/
0829nobodyさん
04/08/24 00:07ID:???0830nobodyさん
04/08/24 00:34ID:???ここに圧縮してアップしました。
CGIがさっぱりです。
0834nobodyさん
04/08/24 01:40ID:???PHPマニュアルを使いやすくするパッチ
http://www.vector.co.jp/soft/dl/win95/prog/se321697.html
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:???echo file_get_contents($_GET['content']);
?>
こんなの?
0838nobodyさん
04/08/24 04:12ID:???例えばWin鯖なら、
http://xxxx.com/test/test.php?content=c%3A%5CDocuments%20and%20Settings%5C....
なんてされると、中身が丸見えになっちゃうよ。
0839nobodyさん
04/08/24 04:31ID:???0840nobodyさん
04/08/24 05:43ID:???ttp://bugs.php.net/bug.php?id=26616
かなり前からバグ報告は上がってるが、ずっとopenのまま。
直す気は無いらしい・・・
>>826
以前試しにchmをUTF-8で作り直してみたことがある
ビュアがSJIS専用に作られているらしく、結局キーワードは文字化け
一部にSJISで表示できない文字もあるのに残念
(>>822は>>825で修正してるけどね)
みんな困っているらしくて、php_manual_ja.chmでググると
直っているファイルが結構見つかる
0841836
04/08/24 11:40ID:???ありがとうございます!以下のようにしましたら上手くいきました!
これでサイドメニュー付きのフレーム無しページが作れそうです。
[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:???index.php?name=うんこ
とか、名前にうんこ入って飛んで来たらいややん、
受け取ったうんこをどうにかしたいよね。
if(ereg("うんこ",$_GET['name'])){$_GET['name']="";}
そこで、名前にうんこが入ったら、名前を空にするとか
0844nobodyさん
04/08/24 12:36ID:???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:???0846nobodyさん
04/08/24 18:07ID:???0847nobodyさん
04/08/24 18:12ID:???携帯相手に変換しなくてもいいってぐらいしか思いつかない
0848nobodyさん
04/08/24 18:16ID:???ちゃんと設定していれば同じだろ。
開発環境とか鯖によって使い勝手が違う程度。
エンジン内部はUnicodeだったと思うが。
0849nobodyさん
04/08/24 18:32ID:???だからEUC推奨。
0850848
04/08/24 18:36ID:???古い情報なんだけど、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008149.html
> mbstringは内部的に全ての文字コードをUnicodeに変換しています。
> つまり、UTF-8等を使うともっとも効率良く動作します。
ってあるのだが、変わったのか?
0851nobodyさん
04/08/24 18:47ID:JRjosLZbXHTMLとRSS吐き出させてるから楽なんだけども。。
0852軟式PHP
04/08/24 19:08ID:???0853nobodyさん
04/08/24 19:14ID:???出力はSJISでやってる
0854nobodyさん
04/08/24 19:37ID:???0855nobodyさん
04/08/24 19:57ID:???UTF-8で書くってのは・・・・
どんな設定のことを言うの?
まず、ソースの文字コードだよね?
あとブラウザに吐き出す header だよね?
テンプレートの文字コードだよね?
他には?
■ このスレッドは過去ログ倉庫に格納されています