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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/04/07 01:06ID:HTcWOpWf
PHP全般の質問スレです。
上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。

■本家
 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-5
0622nobodyさん04/05/06 00:25ID:???
>>620
>色々調べたのですが全然見つかりません・・・。
ちょこっと調べたら10秒で見つかりました。ファイルシステム関数を参照。

>>621
関数が未定義だって言ってるんだから関数名で検索すればいいじゃん♪
すぐ見つかるよ。
0623nobodyさん04/05/06 00:30ID:???
>622
見つかりました。ありがとうございます。
PHPのマニュアルを見るという基本的なことを忘れていました・・・。
0624nobodyさん04/05/06 00:33ID:???
http://www.seshop.com/book/qa/Default.asp?mode=list&show_type=qa_all&qaid=13612
0625nobodyさん04/05/06 00:35ID:???
>>621
マルチバイト文字列関数を有効にするようなインストールをその入門書が
ちゃんと書いていないならその入門書が悪いだろうけど、漏れが今まで
日本人向けに書かれたPHP解説本には全て書いてあったが。

あと、その手のエラーはFAQなのでちょっとググれば腐るほどヒットすると思うがの。
逆切れする前に、ちょっとは検索汁。
0626nobodyさん04/05/06 01:14ID:???
>>611
bmpファイルはopen可能な位置に置いてるの?
カレントに置いて試した?
多分fopenとかincludeとかと同様の制限受けるよ。
0627nobodyさん04/05/06 01:46ID:???
> 軽く逆切れしますよ。

調子こいてんじゃねーよ。>>624を見れ。
0628nobodyさん04/05/06 01:48ID:???
> 軽く逆切れしますよ。

漏れも使うかなこのフレーズw
0629nobodyさん04/05/06 01:58ID:???
軽く逆切れしますよ。
0630nobodyさん04/05/06 02:06ID:???
アフォばっか。
0631nobodyさん04/05/06 03:10ID:???
>>630
軽く逆切れしますよ。
0632nobodyさん04/05/06 05:01ID:???
> 軽く逆切れしますよ。
zakoga
0633nobodyさん04/05/06 05:08ID:???
>>632
軽く逆切れしますよ。
0634nobodyさん04/05/06 08:24ID:???
軽くジョギングしてきます。
0635nobodyさん04/05/06 09:35ID:???
↑健康第一
0636nobodyさん04/05/06 09:50ID:???
軽く息切れしますよ。
0637nobodyさん04/05/06 11:20ID:???
にいちゃん達おもしろいね♪
0638nobodyさん04/05/06 11:21ID:???
にいちゃん達、おいらにもお願いします。軽くの♪
0639nobodyさん04/05/06 11:40ID:???
>>638
軽くギャグ切れしますよ。
0640nobodyさん04/05/06 12:17ID:???
すみません
ファイルのダウンロードについて教えて下さい

header('Content-Type: application/octet-stream; name="'.basename($filepath).'"');
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Content-Length: '.$content_length);

上記スクリプトでファイルのダウンロードを行っているのですが、
ダウンロードのダイアログにてファイル名がうまく取得できない場合があります

WindowsXP/IE6.0 : 指定したファイル名をダイアログに表示
WindowsXP/NN7.02 : 指定したファイル名+".php"を表示
MacOS X/IE5.2 : ダウンロードマネージャが開き、自動でダウンロードが始まる ファイル名はスクリプトのファイル名
MaxOS X/NN7.1 : 指定したファイル名を表示

WindowsのNNで".php"が付加される件と、MacOSXのIEでスクリプトのファイル名を取得してしまう件について
回避方法はありますでしょうか?

よろしくお願いいたします
0641nobodyさん04/05/06 13:23ID:???
>>640
phpマニュアルの"XXXVII. HTTP関連の関数" "header()"のページには以下の記述があります。
注意: Microsoft Internet Explorer 4.01にはこれが動作しないというバグ があります。この解決策はありません。
Microsoft Internet Explorer 5.5にもこれを妨げるバグがあります。これは、サービスパック2以降 とすることで修整可能です。
0642nobodyさん04/05/06 13:27ID:???
>>640
path_infoでファイル名をとる。
http://foo/hoge.php/filename.ext
な感じでどうよ
あとcontent_typeのfilenameは要らない気もする
064364004/05/06 14:11ID:???
>>641
・・・、成る程。ブラウザ固有の問題だったんですね。
教えて頂いたPHPマニュアルのXXXVIIのheader関数のページに
In response to Martin Anso and for your benefit,
here's an even better routine for forcing the browser to save a file,
rather than opening it.
という書き込みがあったので、そこに載っていたコードを試してみましたら、IE5.2でもファイル名を
取得してくれました。
ありがとうございます。

>>642
path_infoからファイル名を拾わせたら、WinのNNでも元ファイルの拡張子を認識してくれました。
これはQUERY_STRING内にドットが入るとうまく認識されないという事なのでしょうか?
なにはともあれ、ありがとうございます。

尚、content_typeのfilenameを外す件も、試してみたら不具合なく動きました(上記4環境では)。
重ねてありがとうございます。
0644nobodyさん04/05/06 14:48ID:gVUqIIm2
セッション関数を勉強中なのですが、
<?php
session_start();
session_register("msg");
?>
<html>
<body>
<p><?php print $msg; ?></p>
<form action="session.php" method="post">
<input type="text" name="msg" value="">
<input type="submit">
</form>
</body>
</html>
とやってフォームからテキストを入力しても $msg の上書きがさせません。
$msg = $_POST["msg"]; とやると出来ます。これってスマートなやり方なんでしょうか?
0645nobodyさん04/05/06 14:53ID:???
またregister_globalsか
0646nobodyさん04/05/06 14:57ID:???
>>644
参考にしているサイトか本が古そうだな。
そして、それだけだとSESSIONを使う意味ないな。
あと、register_globals あたりの設定も。
064764204/05/06 15:01ID:???
「.」の有無というよりは「/」くぎりの一番最後のをファイル名にとる、んだと思うよ
これ関連の問題で、たとえばshift_jisの予測.txtとかだと正常なファイル名でアップされないんだよね
064864404/05/06 15:12ID:gVUqIIm2
えーっと、よくわらかないのですが
$_SESSION["msg"] とやった方が良いのでしょうか?
0649nobodyさん04/05/06 15:36ID:???
よくわらかないなら仕方ないな

>$msg = $_POST["msg"]; とやると出来ます。これってスマートなやり方なんでしょうか?
これやっとけ
正解だから
065064404/05/06 15:50ID:aeZSFft+
レスありがとうございます。
最後に、もう一つだけ質問させてください。
<?php
if (!session_is_registered('count')) {
session_register('count');
$count = 1;
} else {
$count++;
}
?>
より
<?php
if (!session_is_registered('count')) {
session_register('count');
$_SESSION["count"] = 1;
} else {
$_SESSION["count"]++;
}
?>
の方が望ましいということでしょうか?
0651nobodyさん04/05/06 16:18ID:???
>>650
めんどくさいからここ読んで
http://www.php.net/manual/ja/function.session-register.php

ちなみに

注意
register_globalsを 考慮することなくスクリプトを書きたい場合には、 $_SESSION配列を 代わりに使用する必要があります。 $_SESSIONのエントリーは自動的に登録されます。
スクリプトでsession_register()を 使用している場合には、それは register_globalsを 不可としている環境下では動作しません。

注意
$HTTP_SESSION_VARS(または$_SESSION)を 使用する場合、 session_register(), session_is_registered(), session_unregister()を使用しないで下さい。

って知ってる?
0652nobodyさん04/05/06 16:20ID:???
>>650
漏れなら、
session_start();
if(isset($_SESSION['count'])){
$_SESSION['count']++;
}else{
$_SESSION['count']=1;
}
とする。

ま、エラー出力を抑制して、
session_start();
@$_SESSION['count']++;
でもありかな。やんないけど。
0653nobodyさん04/05/06 16:48ID:???
いずれにせよ、>>644の環境はphp.iniのregister_globalsがoffになってるみたいだから
session_registerは使わない方がいいんじゃね?

>>652の方法がよかろう
0654nobodyさん04/05/06 17:13ID:RZKBRIOT
板違いだったらすみません。
正解を当てさせるクイズを作って、ホームページにアップしたいのですが、
アクセスした人が何回でも楽しむことが出来るようにつくる為には、
まずどんなところから始めたらよいのでしょうか?
入り口を教えていただけたら助かります。
当方はCGIの設置まではできます。phpは作ったことが無いのですが
phpが便利だと、最近知りました。
よろしくお願いいたします。
0655nobodyさん04/05/06 17:27ID:???
ごめん
何がしたいのかさっぱりわからん
>アクセスした人が何回でも楽しむことが出来るようにつくる為には、
ってどういう意味?
0656nobodyさん04/05/06 17:35ID:RZKBRIOT
すみません、
例えば、隅田川、東京タワー、広隆寺
なんて選択肢があって、この中で京都にあるものはどれ?
なんてクイズ、作ったとします。
こういう類の質問を沢山写真つきで、公開したいのです。。。
0657nobodyさん04/05/06 17:41ID:???
五問程度の出題をするとして、
月に数回(一回/週)と仮定した
場合でも、月20問で底をつく。
可能な限り問題を用意しなよ。
0658nobodyさん04/05/06 17:44ID:???
PHPじゃなければならない理由も曖昧でPHPの基本もわかってないようだから
作るのはまだ無理じゃない?


PHPに拘らず↓こういうところで探しなさいな
【CGI】こんなCGI探してますver.13
http://pc5.2ch.net/test/read.cgi/hp/1081608108/
0659nobodyさん04/05/06 17:54ID:RZKBRIOT
CGIの方がPHPより簡単に設置できるのでしょうか?
PHPはレスポンスが早いと聞いたものですから。
0660nobodyさん04/05/06 18:01ID:???
違いやメリットなどは勉強していくうちにわかる。
単にゲームが欲しいだけなら板違い。
0661nobodyさん04/05/06 18:03ID:???
>>659
CGI(=Perl)やPHPのスクリプトを設置するってことか?
であるなら、スクリプト次第だがな。

つーか、禿しくスレ違い。
0662nobodyさん04/05/06 18:06ID:???
開口一番レスポンスが云々という人が良くいるけど、
どのくらい違うのか超簡単な比較スクリプトをCGI(perlとか)と
phpで作って測定してみりゃいいじゃんか
0663nobodyさん04/05/06 18:13ID:RZKBRIOT
>>662
どこかに既成のスクリプトご存じないでしょうか?
>>658さんの
おすすめのところで探した方がよさそうですね。
ありがとうございます。


0664nobodyさん04/05/06 18:14ID:???
>>662
それができないからここで質問するんだろ。>>659はスレ違い。
0665nobodyさん04/05/06 20:11ID:RZKBRIOT
>>663
>>658さんのお勧めの中から
ぴったりのところを探しました↓
http://www.kisanet.com/kisamon/cgiscript/check_m.html
ありがとうございま〜〜〜した。
0666nobodyさん04/05/06 20:24ID:???
PHP-4.3.6にアップグレードしてみたんだけど
configure --help の表示から --enable-mbregexp が消えてますよね。
--disable-mbregexp はある。とりあえず --enable-mbstring すれば
マルチバイト正規表現を使う関数も使えるようになるの?

昔のバージョンでは両方指定しないといけなかった気がする。
マニュアルを読んでも --enable-mbregexp を指定しないと
使えない関数を探せなかったので誰か教えて下さい。。
ちなみに 4.3.6 を --enable-mbstring だけ指定してコンパイルしたら
phpinfo() では mbregexp については何も表示されてません。
066762304/05/06 20:51ID:???
たびたびの質問失礼します。
サーバーのディスクサイズは無事に取得できたのですが
サーバーのメモリサイズや使用メモリなどを取得する
方法がまったくわかりません・・・。
マニュアルやサーチエンジンで検索しまくりましたが
さっぱりわかりません。。
PHPからじゃ無理なのでしょうか?
0668nobodyさん04/05/06 21:40ID:???
>>667
判んなけりゃsystem()使え
0669nobodyさん04/05/06 21:41ID:???
>>667
そういうプログラムをCとかで書いて作って呼び出せばいいじゃん
0670nobodyさん04/05/06 21:47ID:???
鼻糞丸める暇もないくらいの速さで見つかりましたが教えません。
0671nobodyさん04/05/06 21:53ID:???
>>670
丸める暇がないからって喰うなよ
0672nobodyさん04/05/06 22:00ID:???
>>670
じゃあ鼻くそ丸める暇もないくらいの速さで見つける方法を教えてください。
あと、俺の部屋の中にあるはずの彼女にもらった腕時計が見つからないんで、
ごちゃついた部屋を検索するPHPの書き方もお願いします。
マニュアルやサーチエンジンで検索しまくりましたが
さっぱりわかりません。。
PHPからじゃ無理なのでしょうか?
0673nobodyさん04/05/06 22:20ID:???
>>671
マジ切れしました。

>>672
腕時計程度ならPHPで十分だがクレジットカードはC++にしておけ。
0674nobodyさん04/05/06 22:29ID:???
さりげなく彼女の存在をほのめかしたな。
0675nobodyさん04/05/06 22:48ID:???
>>673
トイレに財布を落としたら、ピンポイントでクレジットカードだけ流してしまいました。
便器の中から下水道の先まで全部検索するにはPHPだけじゃダメですか?
C++も勉強しなきゃいけないのか、インクリメントされてDですか?

ところで、ヒアドキュメントと<?php ?>で区切るのとの違いがさっぱりわかりません。
フォームのvalueとかに埋め込むのにわざわざ<?php =とするのが面倒なんで、
片っ端からヒアドキュメントつかってるんですが何か問題ありますか?

それと、変数$hogeの後に全角入れると全角まで変数名と認識されてうざいのですが、
解決法は知ってます、ただマジでうざいとだけ言っていいですか?

それと、perlで書かれたCGIと同じ動きをするPHPを書こうとして、
とりあえず全部コピペして、PHPに変えなきゃいけない部分だけ探して直せばいいやとか思ってましたが、
「予想外の"{"があってエラーです」みたいなログがコーディングミスなんてないと100回見直してから実行してもまだ出ました。
俺は正しい、悪いのはコンピュータだ!なんて思いませんでしたが、ちょっとふてくされてもう一度条件制御あたりのリファレンス見てびっくり。

perl elsif
php elseif

もうね、こんなところで1時間詰まった自分のアホさを嘆いたよ。il||li_| ̄|○ il||li
どうにか立ち直る方法はないですか?
0676nobodyさん04/05/06 23:32ID:???
>>675
ウザいから、死んで
言語ごとに脳内切換えできないならプログラミングすんな
0677nobodyさん04/05/06 23:56ID:???
むしろperl以外でelsifなんて使ってる言語あんの?
0678nobodyさん04/05/07 00:28ID:???
ruby とか。
0679nobodyさん04/05/07 00:58ID:???
>>676
氏ねとまではいわない。
けど、>>675はつまんないと断言できる。
0680nobodyさん04/05/07 01:24ID:???
氏ねでいいんじゃないかなぁ
読む気もしないからわかんないけどウザイのは確か
0681nobodyさん04/05/07 01:50ID:???
アホか否かより自意識過剰がうざい
0682nobodyさん04/05/07 02:17ID:???
>>675
首吊って来世に期待する
0683nobodyさん04/05/07 08:53ID:???
軽くジョギングしてきます。
0684nobodyさん04/05/07 11:37ID:???
>>683
フリーザさま風に余裕を見せながら 〜しますよ? と付けるのが正解。
相手の上に立って、「いいんですか?この私を怒らせて」な態度を常に忘れるな。
0685nobodyさん04/05/07 18:20ID:???
軽くシコってきますよ?
0686nobodyさん04/05/07 18:48ID:???
何かネタスレになってるぞ
↓軽く次の質問期待しますよ?
0687nobodyさん04/05/07 18:56ID:???
軽く質問しますよ?
0688nobodyさん04/05/07 19:35ID:???
答えられない質問してもいいんですか?
0689nobodyさん04/05/07 19:52ID:???
いーからさっさと質問しろってんだよ
漏れは答えられないから帰る
0690nobodyさん04/05/07 20:00ID:???
↓さっさと質問しろ
0691nobodyさん04/05/07 20:19ID:???
じゃあ、軽く質問しますよ。
PHPを使ってドメインの取得可否をチェックする、
効率のよいスクリプトを教えてください。

とりあえず、他所様のサイトの検索サービスを利用させてもらって、
fopenで出力取得して可否をチェックするやつは作ったんだけど、
もっとうまい方法ないのかなーと思った次第。

軽く答えてもらえますか?
0692nobodyさん04/05/07 20:21ID:???
私も軽く質問していいですね?
PHPの名前の由来って何ですか。
さあ、早く答えてくださいよ?
0693nobodyさん04/05/07 20:21ID:???
>>692
http://www.php.net/
069469104/05/07 20:22ID:???
補足。

echo is_domain_available("hoge.com")) ? "available" : "registered";
例えば、こういう呼び出しが出来るような、
is_domain_availableのうまい実装方法を軽く教えて下さい。
0695nobodyさん04/05/07 20:28ID:???
いや、それを考えるのがプログラミングだろ

それ無くしたら何が楽しいよ?
0696nobodyさん04/05/07 20:35ID:???
>>691
checkdnsrr() はそのままの関数ではないのか?
Windows 環境では使えないみたいだけど。
069769104/05/07 20:36ID:???
>695
軽く逆切れしますよ。
695が誰にレスし(ry
069869104/05/07 20:42ID:???
>696
多謝!!
まんまそれ用の関数あったんですね・・
軽く吊って来ます・・

↓続いて次の質問軽くどうぞ
0699nobodyさん04/05/07 20:48ID:???
↓質問どうぞ。軽く答えてあげますよ?
0700nobodyさん04/05/07 22:18ID:Ve7XXqWH
FTP関数の参考書無さ杉。Pasvモードでないと動かない鯖も大杉。使えん。
0701nobodyさん04/05/07 22:32ID:???
1テラバイトのファイルを検索すると重すぎるので
軽くする方法を教えてくださいm(_*_)m

>>700
PASV云々よりタイムアウトがうざい。
0702nobodyさん04/05/07 22:39ID:???
データベースに移行すればどうでしょうか?
070358104/05/07 23:03ID:???

domxmlの件ですが、結局自作する事にしました。
半分程度完成(xmlパーサのみ)。

後は node->last_child とか、そういう細かい関数を必要に応じて追加し完成させる予定。
0704nobodyさん04/05/07 23:30ID:???
>>703
あー、、誰も教えてやらなかったのか。
PEAR みれ。
0705nobodyさん04/05/08 12:16ID:PgRMX7CV
スレのたてかたがワカラソ
0706nobodyさん04/05/08 15:36ID:H1s4AHG1
PHP4.3.2でGD2.0.12を使用していますが、ImageJPEGで画像を出力するとき、ディレクトリを指定して
保存することはできないのでしょうか?
ImageJPEG($dst_im, "file.jpg");
だと正常に保存されるのですが、
ImageJPEG($dst_im, "./path/filename.jpg");
のようにすると保存できません。(エラーも出ません。)
070770604/05/08 16:44ID:H1s4AHG1
できそうにないので、とりあえず
ob_start();
$img_out_func($dst_im);
$i = ob_get_contents();
ob_end_clean();
としてファイルに保存することにしました。
0708nobodyさん04/05/08 17:25ID:2ZPN8DLz
軽く厨な質問してよろしいですか?

ファイルやDBを読み込んで文字を表示させた状態のPHPファイルを
そのままHTMLファイルとして保存し、表示させることってPHPでできますか?
0709nobodyさん04/05/08 17:27ID:???
軽くfile()関数でHTTPでGETし、軽くファイルに書き出せばいいんじゃないの?
071070804/05/08 17:36ID:???
いやん、ありがとう。

軽くウッカリしてました……簡単じゃんよ、ねぇ。
0711nobodyさん04/05/08 18:20ID:???
そして軽くmetaタグでrefreshすればいいんじゃないの?
0712nobodyさん04/05/08 18:55ID:???
軽く解決しましたね
↓次の質問ドゾ
0713nobodyさん04/05/08 19:21ID:???
凄く厨な質問してよろしいですか?

$_GET{'hoge'}が、文字化けしてしまうのですが。
日本語で渡しているのが原因だと分かりきっているのですが、
hoge.php?race=NHKマイルカップ
で$_GETで取り出した変数が「NHKマイ・E・奪愨」と…
マルチバイト関数は使えないPHP4.3.4です。
0714nobodyさん04/05/08 19:23ID:???
軽くURLエンコードするべきですよ?
0715nobodyさん04/05/08 19:26ID:???
軽く解決しましたね
↓次の質問ドゾ
0716nobodyさん04/05/08 19:28ID:???
別にエンコードしなくても問題はないが

内部エンコーディングと出力のエンコーディングが違うんじゃねぇのか
0717nobodyさん04/05/08 19:35ID:???
>716
エンコードしないとだめです

↓次の質問ドゾ
0718nobodyさん04/05/08 19:45ID:???
>>717
釣りですか?
普通はURLエンコードしなければならないが

アドレス欄に日本語打ち込んでもそのまま機能しますが
0719nobodyさん04/05/08 19:48ID:???
>>718
ま、おっしゃるとおりで、RFC的にはURLエンコードしなければいけないけど、
IEなんかだとそのままでも通ってしまうと。
そゆことでしょ。
0720nobodyさん04/05/08 19:53ID:???
>>719
そそ。

なんか突っかかってしまってスマソ
0721nobodyさん04/05/08 20:50ID:???
>>716
全部EUCに統一してますですが、それでも内部とかでは違うのでせうか。

>>714
ありがとうございます。
URLエンコードでググったらbase64_encodeという関数が出てきました。
リファレンスにも書いてありました、もろに「URL関数」と。
■ このスレッドは過去ログ倉庫に格納されています