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

【PHP】質問スレッド Part8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/04/14 00:52ID:???
■本家
 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
0002nobodyさん03/04/14 00:52ID:???
過去スレ

Part1 : http://ebi.2ch.net/php/kako/982/982687820.html
Part2 : http://pc.2ch.net/php/kako/1003/10032/1003283567.html
Part3 : http://pc.2ch.net/php/kako/1013/10139/1013919792.html
Part4 : http://pc.2ch.net/php/kako/1022/10229/1022999539.html
Part5 : http://pc.2ch.net/php/kako/1031/10317/1031721334.html
Part6 : http://pc2.2ch.net/php/kako/1038/10389/1038988518.html
Part7 : http://pc2.2ch.net/test/read.cgi/php/1044478561/
0003nobodyさん03/04/14 00:53ID:???
関連スレ

■ 【PHP】初心者コーナー 2 Released
 http://pc2.2ch.net/test/read.cgi/php/1048442813/

■ PHP アップグレード報告スレッド
 http://pc2.2ch.net/test/read.cgi/php/987259309/

■ PHP + MySQL
 http://pc2.2ch.net/test/read.cgi/php/983250751/

■ PHP + PostgreSQL
 http://pc2.2ch.net/test/read.cgi/php/983128806/

■ PHP 関連の書籍 (但し PHP 出版系お断り)
 http://pc2.2ch.net/test/read.cgi/php/985315574/

0004nobodyさん03/04/14 00:53ID:???
※注意1
4.2.0以降はデフォルトでregister_globalsがoffになっています。
POST, GET等で渡される値には
グローバル連想配列
$HTTP_ENV_VARS
$HTTP_GET_VARS
$HTTP_POST_VARS
$HTTP_COOKIE_VARS
$HTTP_SERVER_VARS
でアクセスしてください。

※注意2
header()でContent-Typeを出力すると、mb_output_handlerが無効になります。
ini_set('default_mimetype', 'text/html');
とすることで回避できます。

つーか、マニュアルとか読んでください。おながいします。
0005nobodyさん03/04/14 00:54ID:???
スレ立て終わり。
Part6を参照しますタ。
0006nobodyさん03/04/14 02:00ID:???
>>1
Z
0007nobodyさん03/04/14 20:35ID:ncj+nVRD
初心者です。よろしくおながいします。
PHPで文中日本語を含むテキストファイルを出力しようとしているのですが、
出力ファイルをEUCにするには、どうすればいいでしょうか?

 $fp = fopen("mona.txt", "w");
 $text = mb_convert_encoding("オマエモナー", "EUC");
 fwrite($fp, $text);
 fclose($fp);

こんなふうにしてるんですけど、ダメぽです。
0008nobodyさん03/04/14 20:38ID:???
>>7
fwriteって書き込むサイズもいるんじゃなかったっけか?
0009nobodyさん03/04/14 20:44ID:???
>>7
phpinfo>mbstring>チェックしてミソ
0010nobodyさん03/04/14 20:55ID:???
>>7
それでmona.txtには何が書き込まれてるの。
0011nobodyさん03/04/14 20:56ID:???
EUC-JPじゃないの
0012nobodyさん03/04/14 20:58ID:???
ttp://www.php.net/manual/ja/
>PHP マニュアル>LIIマルチバイト文字列関数(mbstring)

熟読しる!
0013703/04/14 21:46ID:ncj+nVRD
みなさん、レスありが�dです。
>8
fwriteは、書き込みバイト数は、省略できるよ。ね?

>10
「 I } G i [」
こんな感じでバケてます。(括弧は除く)

>11
すんません。EUC-JPでしたね。でも結果は同じです。

>12
これから熟読しますけど、mbstringってphp.iniの設定じゃなかったでしたっけ?
いや、よく読んでないのにレスしちゃって悪いんですけど、出来れば現在の環境の
ままプログラムで出力のファイル形式を変更したいんです。

とりあえず、熟読してみます。ありがとー。
0014nobodyさん03/04/14 21:55ID:???
もしやなんだけど、mona.txtってなんのアプリで開いて確認してるの?
0015703/04/14 22:06ID:ncj+nVRD
>14
秀丸ですけど、問題ありですか??
ちなみに、EUS, SJISどちらで開いても上記のように化けます。
0016nobodyさん03/04/14 23:09ID:???
mb_convert_encoding("オマエモナー", "EUC", "auto");
0017703/04/15 01:13ID:bH92p3xS
>16
サンクスコです!!
ばっちりうまくいきました!
変換前のフォーマットをちゃんと指定しないと不定になるということでしょうかね。
指定なしで、デフォルトのフォーマットを変換してくれると思ってました。
解決はしましたが、詳しいことをご存知でしたら、ぜひ教えてください。
ありがとうございました。
0018nobodyさん03/04/15 04:51ID:???
>>17
マニュアルをちゃんと嫁
http://jp.php.net/manual/ja/function.mb-convert-encoding.php
> 省略時のデフォルトは内部文字エンコーディングです。
0019nobodyさん03/04/15 10:12ID:qTByL+rd
今、PHPのバージョンが 4.0.6 なんですけど、
バージョンアップはしなくても平気でしょうか?

なんか最新バージョンにするのが怖いそうで、
サーバー管理者がバージョンアップしてくれません。
0020nobodyさん03/04/15 10:16ID:???
>>19
管理者に言えば?
>マニュアルをちゃんと嫁!
00211903/04/15 12:30ID:???
>20
セキュリティーが保障できないからパッチを当てる事はできないと
いわれてしまいました。

とりあえずマニュアル読んでくださいと伝えるだけ伝えておきましたけど、
どうなることやら。
0022nobodyさん03/04/15 14:44ID:???
>>21
借りの雑居鯖なら、ユーザからクレームが出そうだけど、
社内鯖なら管理者の怠慢じゃんそれ。
00231903/04/15 16:11ID:???
某サーバレンタル会社から社用のを借りてるもんで、
一応管理者にクレームっぽく伝えたんですよ、

「古いバージョンだからセキュリティホールやバグがあると聞いたので、
新しいパッチをあててくれませんか?」
んで、返答が

「新しいバージョンはセキュリティーが不十分のため、
 保障の対象外になってしまいますので、導入はできません」
と言われますた。

正直、俺も深くPHPのバージョンに詳しいわけではないので、
それ以上突っ込みは入れられませんでした。

4.0.6以降のパッチを当てる事で、なにか不具合があるのでしょうか…
それとも、ただ向こうのサーバ管理会社の怠慢でしょうか…
0024nobodyさん03/04/15 16:13ID:???
>>23
つーかお前もマニュアル読め(w
すくなくともバージョンアップして欲しい理由を明確にしてから要請するべきだ。

まー管理者の怠慢だとは思うけどな。
00251903/04/15 16:20ID:???
すいません、勉強してきます

バージョンあげて欲しい理由が、
「拾ったスクリプトが使えないから」
だけなんです…
0026nobodyさん03/04/15 16:42ID:???
>>25
借り鯖なら面倒だろうな。セキュリティ云々よりregister_globalsがonを前提に
書いているやつが、他のユーザに居るだろうから。
あっ、register_globalsがonでも$_POSTとか使えたっけかなぁ。

で、その拾ったスクリプトもregister_globalsの関係ぽいので、そこを
弄れば動くんじゃないかい。
00271903/04/15 16:58ID:???
なんとかそのスクリプトは、
4.1以前のバージョンでも使えるように改造はできたですよ。
けど今後のことを考えたら、最新とは言いませんが、
パッチは当ててって欲しいなと思って…

なんか質問してる話がずれてっているので戻してみます。
4.0.6以降のバージョンにする(パッチを当てる)ことによって、
不具合が生じてしまうことがあるのかどうか、
バージョンアップしないことによって、セキュリティーに不安があれば、
管理会社の言ってることに矛盾が出てくるので、そこを突いてみようかなと。

マニュアルには細かいバージョンアップの事が日本語で載ってなかったので、
教えていただけると助かります。
英文ではあったんですが、翻訳ソフトかけてもうまく訳してくれなくて…
0028nobodyさん03/04/15 17:21ID:???
>>27
4.0.6でセキュリティパッチ当てただけならそれは4.0.6の機能しかないわけで、
それ以降のバージョンは基本的にそれまでのセキュリティパッチ+新機能追加と
考えると、未知のセキュリティホールは新しいバージョンの方が多いと考えられる。(とわ言いけれないが)

じゃぁ、4.0.6の時点でどれだけ穴が発見されていたのかちゅうのはもう忘れた。
register_globalsがonの場合、それだけで穴になる可能性はあるが、それは
スクリプトしだいだからなぁ。
4.1.0以降のfix内容調べて、それに対して対処しているかどうか質問するしかないわな。
各update時の主だった変更点はphp-jpのML(過去ログ)を見れば藤本マスターが投稿してくれていると思うよ。
0029山崎渉03/04/17 12:01ID:???
(^^)
0030nobodyさん03/04/17 13:15ID:DfRAvUl8
Apache 1.3.20 php 4.2.2 windows 2000

mail送信関数 mailについて教示願います。
サーバーのメールアドレスが [email protected]

送信先のメールアドレスに [email protected]
を指定すれば正常に送信できます。

しかし、[email protected] などのように外部のメールアドレスをしていると
送信エラーになります。

php.ini や http.conf などの設定を何か変更しなければいけないのでしょうか?
因みにサーバーは自社ですが、メールサーバーは外部レンタルです。

おわかりの方宜しくお願い致します。
0031nobodyさん03/04/17 19:06ID:h+ALPoyz
$aa=10; print $aa; で結果は 10 が表示されますが、
これを 010 のように、桁数指定でゼロ詰で表示させるには?
0032nobodyさん03/04/17 21:09ID:4RbcuH3X
>>31
printf()
0033nobodyさん03/04/17 22:28ID:???
>>30
@toshiba.co.jp に聞いてみれば?
httpしか壁を越えられない、というオチもある。
0034nobodyさん03/04/17 22:53ID:???
>30 PHP-user MLのコピペ?
PHPのmail関数を使う前に、普通にmailが出て行くのか先に確認すべし。
大抵はMTAの設定がおかしいと思うよ。
0035nobodyさん03/04/17 23:41ID:???
配列を定義?する時、要素の数を指定するにはどうしたらいいでしょうか
とりあえず$a = array("","","");などと書いているのですが出来れば要素の数を変数で与えたいのです
0036nobodyさん03/04/17 23:51ID:???
$b = "char";
$c = " exclusive use";

$a[] = $b;
$a[] = $c;

とか?

固定にする必要もないと思うけど
0037nobodyさん03/04/18 00:47ID:???
>35
近いところで、array_fill()とか
http://www.php.net/manual/ja/function.array-fill.php

PHPの配列の内部的な処理の仕方などから、
配列の添字を指定して宣言しても意味のないこと。
宣言の範囲外の場合エラー吐かせるとか、
(PHPでは出来ないけど)目的はそういうこと?
00383503/04/18 02:16ID:???
もっといい方法がありそうなので一応大雑把に書いておきます。

$a=array("","","");
$b=split(",",$input);
$result=mysql_query("select * from table where field in ('$b[0]','$b[1]','$b[2]')");
while($buf=mysql_fetch_array($result)){
 $a[array_search($buf[field],$b)]="〜〜〜";
}
print join("<br>",$a);

上の様にin ('','','') という形式でSelectした上で、
$bの要素の順番で結果を出力する為の処理です。
$bの要素数は固定ではない為>>35の様な質問が生まれました。

でもとりあえず>>37のarray_fill()で目的は達することが出来そう。
どうもでした。
■ このスレッドは過去ログ倉庫に格納されています