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

【PHP】質問スレッド Part7

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/02/06 05:56ID:???
■ 本家
 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-10あたりに
0052 ◆Kiss.FX29M 03/02/08 05:31ID:???
>>51
どうせ、php.iniの[mbstring]辺りの設定をまったく触ってないんだろ。
少しはマニュアル嫁よ
0053nobodyさん03/02/08 06:46ID:???
>>51

mixEnc 指定してあげたら?
0054nobodyさん03/02/08 08:51ID:???
>>52
43参照

0055 ◆Kiss.FX29M 03/02/08 12:42ID:???
>>54
おっと...失礼。
じゃ、スクリプトがSJISになっているに1票
ついでに53の分も加えれ。
00565103/02/08 20:24ID:2eI5VkdS

ini ファイルを以下のように変更

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = eucjp-win
mbstring.http_input = auto
mbstring.http_output = eucjp-win
mbstring.encoding_translation = On
mbstring.detect_order = auto


&スクリプトを EUC で保存

でうまくいきました

元テキスト     モトノテキストハハンカクデス

結果        モトノテキストハハンカクデス

>>52
>>53
>>54
ありがとうございました

ハァ ・・・ 昨日から寝てません 寝させてください・・・・
0057nobodyさん03/02/09 00:41ID:oxfaG69f
phpって普通にCGIとしても使用できると聞いたのですが、
php使えないサーバーで、phpをcgiみたいに使うことは可能なのでしょうか?

それと、海外で見つけたphpのスクリプトのreadme見たら、
Send a mail to [email protected], and tell me where you are using the script (url)
って書いてあったんですけど、メール送らなきゃいけないんですよね〜〜。
いやだな〜〜。
裁判国だから、ちょっとでもスクリプト利用でミスあったら
(copyright消しちゃったとか)
訴えられそうな気がするのは僕だけですか?
0058nobodyさん03/02/09 00:44ID:???
>>57
まず無理。
00595703/02/09 00:46ID:oxfaG69f
無理ですか…。
あと、PHPってMySQLとセットになって配布されているのをよく見かける
んですが、MySQLについてのある程度の知識ないと、
そのPHPを利用するのって厳しいですか?
0060nobodyさん03/02/09 00:49ID:xKN3ALI7
>>57
CGI版のPHPが入っているか、自分で入れれば使える。
あと、報告したくないなら、使わないことだぁね...
00615703/02/09 00:57ID:oxfaG69f
>>60
共用サーバでは無理と考えてよろしいでつか?
0062nobodyさん03/02/09 00:59ID:xKN3ALI7
>>61
shellが使えてコンパイル環境があれば可能
0063nobodyさん03/02/09 01:00ID:???
>>62
問題はどうやって呼び出すかだ。シェルスクリプトでも書きますか。
00646203/02/09 01:01ID:xKN3ALI7
あ、あとは、その共用サーバーと同じ環境でコンパイルしたものをアップするとか...
0065nobodyさん03/02/09 01:02ID:xKN3ALI7
>>63
ふつうに#!/home/hoge/bin/phpとかで呼び出せばよいのでわ...
0066nobodyさん03/02/09 01:17ID:???
>>65
あら、phpも#コメントつかるんだ。勉強になった。
0067nobodyさん03/02/09 01:21ID:???
>>66
コメントじゃなくて、CGIとして動かす場合に必要なパス指定だと思うが…。
0068nobodyさん03/02/09 01:24ID:???
>>67
そんなunixのご都合な記述があってもシェルスクリプトやPerlスクリプトがエラーなしに動くのは
#が行コメント開始文字に他ならないからじゃん。

よって#以降はスクリプトにはただのコメントにしか見えないと。
0069nobodyさん03/02/09 01:27ID:???
>>67
>CGIとして動かす場合に必要な

誤解がありそうなので言っておくと

#!〜

はWindowsの関連付けのようなもの。「私を実行ファイルとして実行しようとした際は、#!で示したプログラムに私を渡してくださいね。」の意。

UNIXでネイティブコードとスクリプト言語の差がないと言われるのはこの機能のおかげに他ならない。
0070nobodyさん03/02/09 01:34ID:???
#がコメントなのはいいんですが、phpが#コメントを使えるというのはちゃいます。
あくまで、CGIスクリプトで#をコメントとして使えるにすぎません。

で、#!でphpに渡してしまえばそれ以降はphpに渡されるので、#はコメントとしては認識されません。
0071nobodyさん03/02/09 01:38ID:???
>>70
あ、そうなの?スマソ。
0072nobodyさん03/02/09 03:54ID:???
知ったかがいるな
0073nobodyさん03/02/09 11:38ID:???
PHP は # もコメントと認識すると思ったが・・・
0074nobodyさん03/02/09 11:52ID:???
>>73
phpスクリプトの部分(<?php ?>で囲まれた部分)では認識するね...
その外ではhtmlだから認識しない...だから

#!/usr/bin/php
# php script ←こんな感じではコメントになってくれない

という意味で。
0075nobodyさん03/02/09 12:43ID:???
>>74
じゃあ悪影響
0076nobodyさん03/02/09 16:00ID:???
ユーザーフォルダでphpを使われるのを抑制するにはどうしたらよいのでしょうか。
httpd.confでphp利用可能なディレクトリを制限したいのです。
0077nobodyさん03/02/09 22:10ID:0o/ef1ba
web上からホームページを更新するシステムを
考えています。

ユーザーの認証にlinux用の認証IDとPassを利用したいのですが、
見当もつきません。。。
(passの変更もweb上から行いたいです)

ご存じの方がいらっしゃいましたら、ご教授願います。

ちなみに環境は、赤帽7.3にApache+PHP4です。
0078nobodyさん03/02/09 22:11ID:???
>>77
関数がある。
0079nobodyさん03/02/09 22:21ID:???
webStudioって使ってる人いる?
0080gn355my003/02/09 23:14ID:???
>>77
DAVじゃだめダブ?そういうのじゃない?
0081nobodyさん03/02/09 23:21ID:???
>>76
php.ini のengine off

>>78
マニュアルみてもそれっぽいのが見つからなかった。興味あるのでポインタを教えて。

>>79
使ってるよ
0082nobodyさん03/02/09 23:35ID:???
>>79
使ってる。でもローカルデバッグでしか使ってない。
00837703/02/10 01:33ID:qOpouPwX
>>78
>>80
DAV!調べてみます。
ありがとうございます。
0084sho--chin03/02/10 18:30ID:???
>>77
crypt 過去ログに俺が書いたのがあるからみれば?
0085nobodyさん03/02/10 21:05ID:4/n3nhGu
VS.Netで動くVisualPerlのようなVisualPHPってないですか?
ZendStudio買ったがクソでした。
0086nobodyさん03/02/10 23:35ID:qOpouPwX
>>84
おお!
探して頂きます!
THX.
0087nobodyさん03/02/10 23:44ID:???
>>84
criptは暗号関数なんですね。
これからじっくり逝こうと思います。

ただ、システムのpasswdを変更するのは無いのですね・・・
ショボーッm
0088nobodyさん03/02/10 23:50ID:???
>>87
ショボーッm = ショボーンのミスです。
失礼しました。
0089nobodyさん03/02/11 06:24ID:???
ショボーッm
0090nobodyさん03/02/11 09:06ID:0/ucRW2t
PHPにはPerlのmap(配列やスカラへの一時的な処理)みたいな
関数ってありますか?
0091sho--chin03/02/11 11:28ID:???
関数作ったから金くれる?
0092nobodyさん03/02/11 12:37ID:???
>>91
foreachとコールバック関数で何とかなりそうだな。
0093nobodyさん03/02/11 12:48ID:???
ショボーッm
気に入った(・∀・)
0094sho--chin03/02/11 15:32ID:???
>>92
ファイルオープンしてあげるしかないでしょ。
root権限で。
なので、
# cp /usr/local/bin/php /var/tmp/php
# chmod 4511 /var/tmp/php
として、スクリプトの最初の行に
#!/var/tmp/php
としてあげないとだめでない?
php4.3.0でsuExecってどうなの?できるようになったんでしょ?
0095sho--chin03/02/11 15:38ID:???
ショボーッm
カックイイ
0096nobodyさん03/02/11 20:52ID:???
>94
suExecを勉強してから出直せ
0097nobodyさん03/02/12 00:28ID:???
PHPで作成した自作スクリプトをGPLで配布する上で気をつけることはなんですか?

すれ違いならすんません。
0098nobodyさん03/02/12 01:07ID:???
>>97
自分の著作物もしくはGPLになっているコード以外が一切混入されていないこと。
0099nobodyさん03/02/12 18:56ID:jx2NZW7Q
PHP4.3.0でバンドルされているGDを利用したいんだけど、configureすると下記エラーが表示されます。
PHPをconfigureする前に、jpegとかpngのライブラリをごにょごにょっと作成する必要があるのでせぅか?
ご指導下さいませ。

□configure
./configure --enable-memory-limit --with-pgsql=/usr/local/pgsql/ --with-apxs=/usr/local/apache/bin/apxs --enable-trans-sid --enable-mbregex --enable-mbstring --enable-mailparse --with-gd --enable-zend-multibyte

□エラー
If configure fails try --with-jpeg-dir=<DIR>
configure: error: PNG support requires ZLIB. Use --with-zlib-dir=<DIR>

□環境
Redhat7.2+Apache1.3.27+PostgreSQL7.3.1+PHP4.3.0
0100nobodyさん03/02/12 19:00ID:HLDH7cxU







http://dx1.kakiko.com/sonota/194/1948/index.html




0101ど素人です03/02/12 19:42ID:7ngtwjn2
すいません。
CSVやtxtファイルの内容を、PHPで表示する時に日本語が
文字化けするのですが、何故なのでしょう。

PHPはshift_jisにしています。
euc-jpにした場合も化けました。
0102 ◆Kiss.FX29M 03/02/12 19:46ID:???
>>99
RHL7.3だと
--with-jpeg-dir=/usr/lib --with-zlib
の追加でよかったよ。
MySQLを使わないなら、--without-mysql も追加しとけ。
0103nobodyさん03/02/12 19:47ID:???
>>101
コード書く前に南南西のほうを向いてお祈りした?
慣れないうちは信心が足りなくて、よく化けるよな。



それから、csvやtxtファイルの文字コードは何なの?
010410103/02/12 19:55ID:7ngtwjn2
>>103
お祈り忘れてました…。

PHPとテキストファイル、共に、
シフトjisか、eucで保存の両方を試してみました。

保存時に、改行コードをCR、LF、CR+LFのどれかを
指定可能なエディターだったので色々試してみましたが、
駄目で、分けわからなくなりました。
0105nobodyさん03/02/12 20:00ID:???
>>104
コードをうpしる!
0106nobodyさん03/02/12 20:01ID:???
>>104
外部ファイルを読んだときだけ化けるの?
例えば
print "化けないでください";
は化けないの?
0107nobodyさん03/02/12 20:01ID:???
>>104
俺も素人だけど、ブラウザに出力する前に
これかましていろいろ試してみたら。
http://jp.php.net/manual/ja/function.mb-convert-encoding.php
0108nobodyさん03/02/12 21:13ID:bqUNAH+9
addr.datに利用者のIPを入れ、
同じIPが以前に書きこまれていた場合は書きこまない別の処理をやりたいのですが、
ファイルの中身に同じモノがあるかをチェックするにはどうすればよいでしょう。
$ip = $_ENV{'REMOTE_ADDR'};
if (!in_array($ip,file("addr.dat"))){
}
としたのですが、うまくいきません。
同じようにarray_searchを利用してもうまくいきません。
どうすれば、良いでしょうか。
01099903/02/12 21:14ID:jx2NZW7Q
>>102
多謝!無事に configure できました!
早速 GD であそんでみまする。
0110nobodyさん03/02/12 21:29ID:???
>>109
夢壊して悪いが言うほどたいしたことも出来ないのでそのつもりで。
0111nobodyさん03/02/12 22:24ID:???
>すいません。
>CSVやtxtファイルの内容を、PHPで表示する時に日本語が
>文字化けするのですが、何故なのでしょう。
ブラウザで開くといつも文字化けするのは、文字コードの指定をしてないと思われ。
HTMLのメタタグでいいから指定してやって。

または、スクリプトのコードとテキストデータのコードが異なると、
片方を正常に表示させるために、もう片方が化けるという罠。
0112nobodyさん03/02/12 22:33ID:???
>>108
ファイルオープンして変数にぶち込んで比較ってのが確実と思われ。
0113nobodyさん03/02/12 22:48ID:???
>>108
これでもだめ?

$ip = $_ENV{'REMOTE_ADDR'};
$iplist = file(file("addr.dat");
if (!in_array($ip,$iplist)){
}

まあ、仕様の問題だけど、漏れは
ファイル形式をIPアドレス,最終書き込み時刻 とかにしといて
IPアドレスをキーに最終書き込み時間を値にしてやれば、
結構いいような気もする。

$fp=fopen(...)
while(list($key,$value)=fgetcsv($fp,1024)){
$iplist[$key]=$value;
}
$ip=...
// リストに名前がない、または3600*5経過してたら
if( !isset($iplist[$ip]) || ($iplist[$ip] < 3600*5)){
 write
}else{
 だめー
}

こなかんじ
0114 ◆Kiss.FX29M 03/02/12 23:02ID:???
>>108
file()って改行記号が付いたままだから一致しないんでねぇの。
0115nobodyさん03/02/12 23:04ID:???
>>114
trimが必要か。納得。
011610803/02/13 00:06ID:???
>>113
thanxです。
fgetcsvでやります。
ありがとうございました。
0117101=10403/02/13 00:28ID:qFqQzGYD
>>103 >>105 >>106 >>107
レスありがとうございました。

PHP、csv,txt全てのファイルをEUCで保存して、
改行コードをLFにしたら、日本語表示できました。

どうもファイルうp時に、バイナリモードにして
いなかったのが原因のようです。信心が足りませんですたw

>>105さん
コードは、PHPマニュアルのサンプルコードを
まんま真似して書きましたw

>>106
echoやprintで表示した場合も化けたり化けなかったりでした。

>>107さん
やってみたら面白かったです。色々練習します。
0118nobodyさん03/02/13 00:46ID:???
>>117
テストはローカルでおねげぇします...
0119nobodyさん03/02/13 13:01ID:???
DBに登録させる文字で、セキュリティ上問題になりそうな文字を
自分でリストを作って変換させようと思うんですが
どういう文字をリストに加えればいいのでしょうか?

またその変換後の文字自体を入力されると戻すときに困るのですが
変換後の文字はどういったものがいいのでしょうか?
0120へたれ03/02/13 13:06ID:EMswGLUv
ただいまPHP勉強中「へたれ」と申します。
お知恵をお貸しいただけたら助かります。

マルチパート(ENCTYPE="multipart/form-data")のフォームから
画像のアップロードとテキストフィールドに入れた文字を
サブミット後確認画面を出し、確認。
その後、そのデータをHTMLで保存するプログラム作成中です。

確認画面で画像の確認は出来たんですが、テキストフィールドに入れた日本語が表示されません。
マルチパートでテキストデータを扱うには何か特別な処理をしないといけないのでしょうか?

お助けください。
0121gn355my003/02/13 13:41ID:???
>>120
mbstring とかが自動でやってくれるとこを自分でやらんといかんです。
0122gn355my003/02/13 13:51ID:???
>>119
DBに登録するのにセキュリティ上問題になるような文字なんてものは存在しないと思いますよ
0123へたれ03/02/13 13:54ID:EMswGLUv
>>121 早速レスありがとうございます。

>mbstring とかが自動でやってくれるとこ
とは、mb_convert_encodingで
文字コードを変換しないといけないということでしょうか?
0124nobodyさん03/02/13 14:28ID:???
>>122
え?そうなんですか?
例えば掲示板での投稿をチェックなしにDBに入れても大丈夫なんですか?
ブラクラとかデザインが崩れるとかは置いといて。
0125nobodyさん03/02/13 14:57ID:E3277Fmx
---------------------------------------

http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html

---------------------------------------
0126nobodyさん03/02/13 15:34ID:???
>>124
DBとは関係ない。
htmlspecialcharsとかいう長い名前の関数を使え
0127nobodyさん03/02/13 15:36ID:KY1XuPBn
★やっと見つけちゃった★ココだ★ココだ★
http://bbs.1oku.com/bbs/bbs.phtml?id=rantyan
0128nobodyさん03/02/13 16:07ID:???
チェック無しで問題ないわけねー
入力された文字は徹底的にチェック&エスケープ
0129nobodyさん03/02/13 16:54ID:???
\とか%とかマズかったんじゃなかったっけ?
0130nobodyさん03/02/13 16:56ID:???
普通に ; もマズイと思うんだがどうよ?
0131 ◆Kiss.FX29M 03/02/13 17:27ID:???
あるぞ、いろいろ拙い文字は...
それ専用の関数もあるぞ。
http://jp.php.net/manual/ja/function.addslashes.php
あと、 ; は文字列の中なら、addslashesした後なら大丈夫だが、
数値等の場合は、間違いなく数値(;が入っていない)と確認した上で
掘り込んどけよ。
magic_quotes_gpc はデフォでonだが、ナニかと問題になるから、
offにして桶。
詳しくはマヌアル嫁。
0132nobodyさん03/02/13 17:41ID:???
>>126
それは<>&"(オプションで「'」もだったかな?)だけですよね。
>>129
>>130
なるほどまとめると「’」「”」「<」「>」「\」「%」「;」ですね。
ブラクラなんかも考え出すと他にも置き換えるべきものが
ありそうなんですがよくわかんないです。
あとmysql_escape_stringでエスケープするリストとかってわかりませんか?
そのほかにもいろいろなサイト見たんですがわかんなくて・・・

あと言い方も解りづらかったです。
SQL文に変数を使う場合その変数のチェック方法が知りたかったんです。

http://www.ravi.ne.jp/~shige/index.php?DirectSqlCommandInjection
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02_main.html
とかも見たんですが結局どうやればほぼ完璧なのか・・・
0133nobodyさん03/02/13 17:57ID:???
>>132
http://php.lamphost.net/manual/ja/function.mysql-escape-string.php
ここは見た?
0134nobodyさん03/02/13 18:23ID:???
>>133
見たつもりだったんですが、書いてありますね気づきませんでした。
どうもありがとうございます。

>- mysql_escape_string calls MySQL's library function of the same name,
> which prepends slashes to the following characters:
> NUL (\x00), \n, \r, \, ', " and \x1a.

あとmagic_quotes_gpcがonのときはstripslashesした後に
上のを置き換えればSQL的には安心ですね。

\x1aってのは初耳です。
0135nobodyさん03/02/13 18:53ID:oTbfkKXC
SESIONってPHP4が利用出来る
無料スペースのサーバでもなかなか使えないですか。

サービス概要やFAQあたりを見ても
特に書いていないところが多いですが
今すぐ、使えるかどうかが判別出来る方法はあるのでしょうか。
0136nobodyさん03/02/13 18:53ID:oTbfkKXC
SESSIONってPHP4が利用出来る
無料スペースのサーバでもなかなか使えないですか。

サービス概要やFAQあたりを見ても
特に書いていないところが多いですが
今すぐ、使えるかどうかが判別出来る方法はあるのでしょうか。
0137nobodyさん03/02/13 20:21ID:???
DBに入れるのはなんでもいいわな^^;;;
って、それはともかくとして、SQLインジェクションとかで検索すれば概ね調べられると思われ
0138 ◆kaHG.XGS1s 03/02/13 23:55ID:???
>134
またライブラリ厨とか言われそうだけど(苦笑

PEAR DB使ってるならSQLにつっこむ変数を
$quote_user_id = $db->quote($userid);
として
$sql = "SELECT * FROM userdata WHERE userid = $quote_user_id";
としてもいいと思う。
使ってるDBにあわせてクォートしてくれるよ。


0139138 ◆AngelH/kMI 03/02/13 23:57ID:???
う、トリップ間違えた・・・。

ちなみにPEAR DBについては
http://pear.php.net/manual/ja/core.db.php
このあたりを参考に。
0140nobodyさん03/02/14 08:39ID:???
PHP4.2.3
RedHat7.3
PostgreSQL7.2.3
でmb_send_mailでDBから本文を取ってメールを配信しています。
配信の際に改行を\nで送っていましたが、一部のメーラで改行されないとの
事だったので、本文の改行を\r\nに変更しました。
ですが、今度は改行が2回されるものがでてきました。
この問題が解決できないなら派遣を今月できるとおどされています。
どなたか助けてください。
首になったら家族が…。
014114003/02/14 08:44ID:???
$data[message] = ereg_replace("\n","\r\n",$data[message]);
で変換しています。
0142 ◆Kiss.FX29M 03/02/14 09:40ID:???
元文(DB内本文)で改行が\r\nの奴が混じっているとか?
014314003/02/14 11:09ID:???
>>142
では
$data[message] = str_replace("\r", "\n", str_replace("\r\n", "\n", $data[message]));
こうすればOKでしょうか?
0144nobodyさん03/02/14 11:10ID:cWyUFhz/
この情報のいい加減さに今の日本を見た気がする。
ため息。。。

http://sagisou.sakura.ne.jp/~deai2/cgi/rank.cgi?fdeai
0145 ◆AngelH/kMI 03/02/14 11:12ID:???
>142
だとすると、先に改行コードを統一すればいいのかな?

>140
がんばれ。
人ごとに聞こえないし応援してる(苦笑>今月できる
0146nobodyさん03/02/14 11:17ID:???
$data[message] = preg_replace("/[^\r]\n/","\r\n",$data[message]);

こんなんは?
014714003/02/14 13:59ID:???
改行コード統一してみました。
手元にあるOutlookも全て試してみました。
あとは配信をまつのみです。
皆さんありがとうございました。
配信終わったら、戻ってきます。
0148b03/02/14 14:31ID:???
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 24時間受付  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  [email protected]
   グローバル探偵事務局 

0149nobodyさん03/02/14 15:36ID:BhC5+mMz
昔どっかで拾ってきたPerlのスクリプト、file.htmlの中の
『%_(変数名)_%』を$(変数名)に変換して、その変数の値を
反映して出力するものなんだけど、簡易テンプレートスク
リプトとしてかなり重宝してた。でも、勉強不足でその構造
はわからずじまい。

open FI, "file.html";
foreach(<FI>) {
s/%_(\w+)_%/${$1}/eg;
print;
}
close FI;

・・と、これをPHPにしたいんだけど、なんとかならない
だろうか?
0150超初心者03/02/14 15:59ID:b6/Y7U2L
HTMLとPHPを別にしてCGIのテキストカウンターの様に使いたいのですが
HTMLのソースにどの様に記述すれば良いのでしょうか?
上手く表示できなくて困ってます。
PHP単体にアクセスすると動いているのでPHPには問題ないのですが…
お願いします。
0151nobodyさん03/02/14 16:23ID:ShDZP0Vn
>>150
AddType application/x-httpd-php .html
■ このスレッドは過去ログ倉庫に格納されています