トップページ⇒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()で目的は達することが出来そう。
どうもでした。
0039nobodyさん03/04/18 04:35ID:???
>>38
array_fill() 使うとレコード増えたときに負担になるのでは?

$a=array();
$keys=array();
$result=mysql_query("select * from table where field in ('$b[0]','$b[1]','$b[2]')");
while($buf=mysql_fetch_array($result)){
 $key = array_search($buf[field],$b);
 $a[$key]="〜〜〜";
 array_push($keys, $key);
}
sort($keys);
foreach($keys AS $key) {
 print $a[$key];
}

キーを別の配列に突っ込んで、その配列をソート。
ソートされたキーの順番(= $bの要素順)に出力ってのはどう?
00403503/04/18 17:36ID:???
>>39
なるほど、こっちの方が正攻法っぽいですね
まぁarray_fillについてはarray_fill(0,count($b),"");といった使い方で、
$bの要素数は最大でも10程度なのでこのまま行こうかと思います。
何はともあれレスしてくれた方々に感謝。
0041nobodyさん03/04/20 02:37ID:HEporOFA
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /home/***/public_html/***.php on line 80

今まで見たことが無かったのですが、これって何の設定が悪くて表示される
エラーなのでしょうか?
実際、fopen関数でのhttp接続やgethostbyaddr関数が機能してくれてない
様なのですが・・
0042動画直リン03/04/20 03:41ID:dAQHn3gv
http://www.agemasukudasai.com/movie/
0043山崎渉03/04/20 05:57ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0044nobodyさん03/04/20 10:42ID:???
>41
dnsかresolveが動いてないんだろ。
00454103/04/20 15:53ID:WLqti8CJ
>>44
具体的には、何処をどう修正すればよろしいのでしょうか?
OSは"Red Hat Linux 8.0 Publisher's Edition"です。
0046nobodyさん03/04/20 16:23ID:???
>45
そのまえにdnsが使えるかどうか確かめれ。nslookupなり何なり。
004741=4503/04/20 17:33ID:hcwjywd7
>>46
>nslookupなり何なり。

これ(以下)の表示がされれば良いという亊ですか?

[root@localhost root]# nslookup 64.62.146.66
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
Server: ***.***.***.***
Address: ***.***.***.***#53

Non-authoritative answer:
66.146.62.64.in-addr.arpa name = binbo8.he.net.

Authoritative answers can be found from:
146.62.64.in-addr.arpa nameserver = NS1.he.net.
146.62.64.in-addr.arpa nameserver = NS2.he.net.
146.62.64.in-addr.arpa nameserver = NS3.he.net.
NS1.he.net internet address = 216.218.130.2
NS2.he.net internet address = 216.218.131.2
NS3.he.net internet address = 216.218.132.2
0048nobodyさん03/04/20 17:36ID:vG1w+uT1
正規表現スレの386にあったのと似てる質問ですけど、
自分の場合、PHPで全く同じことでつまづいてます・・・(泣

(abcという文字列)+(「def」じゃない文字列)+(ghiという文字列)
を探したいんですけど、eregで正規表現の部分を abc[^def]ghi とすると
[^def]の部分がd、e、fを含まない文字列に解釈されてしまい、
defというひとかたまりの単語としてみてくれません

これをPHPの正規表現で書く場合は、どう書けばいいのでしょうか?
0049nobodyさん03/04/20 17:42ID:???
[^(def)]
0050nobodyさん03/04/20 18:00ID:???
PHPでリモホの取得(環境変数取得)は、できるのでしょうか?
よろしければ教えてくださいm(__)m
0051nobodyさん03/04/20 18:03ID:???
>>50
$_ENV[""]
0052nobodyさん03/04/20 18:08ID:???
>>50
LXXIX. PHP Options&Information
マニュアル読んだ ?
getenv -- Gets the value of an environment variable
phpinfo -- Outputs lots of PHP information
0053nobodyさん03/04/20 18:24ID:vG1w+uT1
>>49
[^(def)]でも、うまくいきません
[^ ]内で、ひとかたまりの単語を認識させるのは
不可能なのでしょうか?
0054nobodyさん03/04/20 20:29ID:???
abc[^d][^e][^f]ghi
0055nobodyさん03/04/20 20:38ID:jImYkKLT
どうもNetscape(7)でsetcookie()によるCookie保存が出来ないのですが、
何かブラウザ特有の問題があるのでしょうか。
IEでは勿論問題なく保存されます。

ヘッダを見てみるとcontent-typeの前にset-cookieのレスポンスが来ているのですが、
これが原因でしょうか…?。
0056nobodyさん03/04/20 20:39ID:???
>>54
abc[^d][^e][^f]ghi

一応つっこんでおくと、

abcsexghiはマッチしないぞ。
0057nobodyさん03/04/20 21:04ID:???
>>55
ブラウザがクッキーを受け付けないように設定されているだけかと。
0058nobodyさん03/04/20 21:14ID:???
うーん 設定では「全てのCookieを有効にする」になってますね…。
因みにmetaタグやJavascriptでは問題無く保存されました。
なんでだろ…。
0059nobodyさん03/04/20 21:15ID:???
>>58
有効期間設定してないとか。
0060nobodyさん03/04/20 21:26ID:???
>>58
ほぼ当たりです。
有効期限を日単位にしてました…。
今までよく動いていたもんです。
鬱と喜び半々。ありがとうございました。
00616003/04/20 21:27ID:???
修正 >>59
0062nobodyさん03/04/21 16:36ID:AYv3e7ja
phpinfo()をプログラム上でファイルに保存することはできませんか?
0063nobodyさん03/04/21 16:45ID:???
phpinfo()を置いた.phpを読み込んで
一行づつ回して変数に入れてそれを保存は?
0064nobodyさん03/04/21 16:53ID:AYv3e7ja
>>63
すみません具体的なんですがプログラム的には・・・
■ このスレッドは過去ログ倉庫に格納されています