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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/11/01 04:09:15ID:???
・PHP全般の質問スレです。 
・新規質問の方は上げてください。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 
0268nobodyさん04/11/05 22:35:31ID:???
クッケーキターーーーーーーーーー!!!!!!!!!!!
0269nobodyさん04/11/05 22:37:13ID:???
>>265

まず A >= B でなければ偽
さもなくば A == B なら1倍で真
さもなくばBと等しいか大きくなるまでAを足していって
ちょっきりBと等しくなれば真
残りは偽

0270nobodyさん04/11/05 22:38:22ID:???
>>267
session_start();
$PHPSESSID = session_id();
print $PHPSESSID;

じゃないの?
0271nobodyさん04/11/05 22:39:17ID:???
まちがえた

まず A >= B でなければ偽
さもなくば A == B なら1倍で真
さもなくば初期値0に対してAと等しいか大きくなるまでBを足していってちょっきりAと等しくなれば真
残りは偽
0272nobodyさん04/11/05 22:44:54ID:???
empty(A%B)

>>265
027327204/11/05 22:46:23ID:???
!A%B
でもいいのか。
0274nobodyさん04/11/05 22:56:42ID:???
>>270
それなりにありがとーーーーーーー
0275nobodyさん04/11/05 23:22:14ID:???
>>267
session.use_trans_sid を 1 にしれ.
もしくは自分でリンクに全部 <?=SID?> をつけれ.
話はそれからだ.
0276nobodyさん04/11/06 07:02:58ID:T75+ILHO
Windows上で動作しているPHPで、ミリ秒かマイクロ秒単位のsleep()をする方法はないでしょうか?
usleep()はWindows上だと動かないので(-_-)ウツ
027718704/11/06 12:04:59ID:???
>>189
>>190
>>191

アドバイスどうもです。
そんな感じの方法で少しがんばってみます。
共有サーバーでこんな思い処理やばいのは百も承知でっす。
でも、使うのは自分じゃないから何とも言えないけども。

1通毎にコネクション切らないで行う方法など、
とりあえずなんかしらで少しでも処理軽くする方法考えます。

popen()ついてですが、自分もなんかしらのソース探してみます。
道のりは長いですね・・・
0278nobodyさん04/11/06 12:11:31ID:???
スパムの提供か?
0279nobodyさん04/11/06 12:19:48ID:BQGFb7uF
なぜにスパムに!
そんなことするソフトだったら作らずともいくらでもあるような。

今回はデータ管理でせっかくアドレスもあるからメール送る機能も追加しといてってだけ。
作ってればあれもこれもと欲がでてくるみたい。
きりがないからこっちはお疲れモード。
0280nobodyさん04/11/06 12:23:30ID:veEoJvKd
$ls = `ls /home/abc`;
ってのをユーザabcから使ってみたんですが、
ls: `/home/abc': Permission denied
apacheのエラーログにというエラーが表示され、
結果を取得することができません。
perl-suEXECのときはこれでいけたんですが、
PHPってどういった権限で動いてるんでしょうか?
解決方法はありますか?
宜しくお願いします。
0281nobodyさん04/11/06 12:24:03ID:???
> 共有サーバーでこんな思い処理やばいのは百も承知でっす。
> でも、使うのは自分じゃないから何とも言えないけども。
こういう馬鹿のお陰で、今までいくつも便利なサービスが停止されていった。
自鯖でやれ、屑。
0282nobodyさん04/11/06 12:30:07ID:???
>>280
Apacheのモジュールで動いていれば実行はapache(wwwとかnobodyとか)になる。
PHPをCGI(suExec)で動かせばよい
028328004/11/06 12:41:02ID:???
>>282
なるほど、サンクスです。
ちなみにsudoで apacheにlsの権限を与えるのは危険過ぎですか?
危険過ぎっぽいですが。
028419104/11/06 12:42:54ID:???
>>281
便乗させてもらってる俺が言うのも何だが、激しく同意
028528004/11/06 12:44:31ID:???
スマソ。1つ追加質問です。
phpをCGIとして動作させるとモッサリするってのは
よく聞きますが、このモッサリするってのは
「動作が重くなる」に加えて、「負荷が高くなる」も含みますでしょうか?
当初、perlの方が作りやすかったんですが、
phpの方が負荷が低いからいいかなと思ってたんですが。
0286nobodyさん04/11/06 12:58:34ID:BQGFb7uF
>>281
>>284

ちょっと書き方が悪かったです。すいません。
今あれやこれやと検討中です。
もちろん自分としては、こんな重いもの共有サーバーでやりたくありません。
そのことについては何度も何度も説明しています。
もしそれでも相手話を飲んでくれないのでしたら、
一回の処理での上限数を決めるなりして、
処理が大きくなりすぎないようにこちらでするつもりです。

少しでもサーバーの処理を低減したいと言うことと、
上限を決めるにも一回の処理で多くこなせるに超したことはないので、
今回質問いたした次第です。

いくらなんでも、サーバーが悲鳴を上げるようなもの作るつもりはありませんので・・・
いろいろとすいませんでした。
0287nobodyさん04/11/06 13:06:23ID:???
>>277
ああ、じゃあ提示した案はどれも多分無理だぜ。
0288nobodyさん04/11/06 14:34:20ID:???
>>286
全部他人のせいにしてるみたいだが、共有サーバしか使えない発注元って何だ?
0289nobodyさん04/11/06 14:51:06ID:???
ある特定phpの実行時のエラーを画面に出さないようにするには
どうすればよいのでしょうか?
php.iniのdisplay_errorsを変更すると他のphpにも影響がでるので
Onのままです。
0290nobodyさん04/11/06 14:56:49ID:???
>>289
エラーが出ないように書けばいいだけじゃね?
0291nobodyさん04/11/06 14:57:04ID:???
>>289
関数で制御できるよ
error_reporting
0292nobodyさん04/11/06 16:37:25ID:RH6kTyyV
文字のコード番号を取得する方法ってありますか?
例えば'a'なら97(0x61)などです。
0293nobodyさん04/11/06 16:48:35ID:???
>>292
ord
マニュアル読め
0294nobodyさん04/11/06 16:52:00ID:RH6kTyyV
解決しました
0295nobodyさん04/11/06 16:53:58ID:RH6kTyyV
>>293
良く解らなかったのでマルチバイトまで対応させたり色々しました。
文字→数字というのは式では出来なかったので
 bin2hex($src);
を使いました。
こっちは16進数ですが、16進数が使いたかったので丁度よかったです。

他に方法があるならば教えてください。
お願いします。
029628904/11/06 17:44:18ID:???
>>291

ありがとうございます。
無事できました。
0297nobodyさん04/11/06 19:35:26ID:???
>>295
え?それなんか違わないか?
0298nobodyさん04/11/07 00:28:11ID:559ttViC
mb_send_mailがSMTPに実際にアクセスしているときにどのような
やり取りをしているのでしょうか?
もしくは,それが書いてあるような仕様書とかってありますか?

別にプログラムを作成してstdinからmb_send_mailの送信内容を読むと読めるのですが,To:[email protected]
の1行しか読めなかったり,ヘッダ全部を読めたりと動作がまちまちでよくわからないのですが.
029927204/11/07 00:30:25ID:???
つーか反応返せや。
教え損だわ、ホンマ。
0300nobodyさん04/11/07 00:42:34ID:???
>>298
ソース見れば一目瞭然。
仕様に関しては、
mb_send_mail
 | (使用しているSMTPサーバのマニュアル参照。メル鯖プログラムに依存)
MTA(phpが話すメル鯖)
 | (RFC参照。番号忘れた)
外部MTA
0301nobodyさん04/11/07 01:03:51ID:???
>>299
まぁその程度教えたぐらいで煮えるな。
もっとぐたぐた説明して反応返さないやつなんぞアホほどいる。
0302nobodyさん04/11/07 01:07:55ID:???
>>299
代わりに反応しておくとそのコードじゃ倍数判定は出来ない上、empty関数のコールは全くの無駄
0303nobodyさん04/11/07 01:08:52ID:???
これがやぶへびか
0304nobodyさん04/11/07 01:38:12ID:???
つか、普通に!A%Bだろ
わざわざempty持ってきて何がしたいんだ
しかも条件式1個答えただけでそこまで偉そうにされてもな
0305nobodyさん04/11/07 02:15:03ID:???
一応>>273も読んでやってくれ
0306nobodyさん04/11/07 02:39:02ID:???
>>298
マニュアルにも書いてある通りメール送信部分はmail()のラッパ。
mail()は普通にsendmail(もしくは互換のもの)に対してpopenして
パラメータを出力してるだけ。これはSMTPを話してる訳ではないよ
(Win32の場合は異なる。さっき見たらNetWareも違うな)
mail.c読んでごらん。mb_send_mailから追うならmbstring.cも。
0307nobodyさん04/11/07 03:49:37ID:tqDkdxs2
プロトタイプ宣言の類って無いん?
0308nobodyさん04/11/07 05:05:37ID:mIUFi7Zu
>>307
PHP6で実装されます。お楽しみに・・・

実装されるまでずっと言われるよなコレ
0309nobodyさん04/11/07 06:50:54ID:???
はっきり言うわよ!!
0310nobodyさん04/11/07 10:01:00ID:???
>>304
演算子の順位
031129204/11/07 10:25:36ID:SeAJAIhj
>>297
あんまり慣れてないので話すと長くなりますが。
Apacheサーバーでphpを動かしています。
phpで直リンクのURLを作成したかったのです。

私はWindowsを使っているので
 [Shift_JIS]→[UTF-8]
にする必要がありました。

さらにそれぞれ一文字ずつを16進数で分割して数字の前に%をつける必要もあったのです。
数字(10進数)でなくても良かったので、
むしろこれでよかったと思います。
0312nobodyさん04/11/07 10:41:56ID:ff0yHRS4
有難う御座いました。>>308

前に自作関数がくるんは好きじゃないので
自作関数は別ファイルにしてincludeしてますが、
常に別ファイルを読みに行ってしまうわけですから、
この部分がボトルネックになったりしますか?
0313nobodyさん04/11/07 11:00:13ID:???
下手の考え休むに似たり
取らぬ狸の皮算用
0314nobodyさん04/11/07 11:02:36ID:???
>>311
URLエンコード用の関数はUTF-8だとダメなのかな?
0315nobodyさん04/11/07 12:32:41ID:???
>>312
ファイルの読込なんて構文解析に比べたら
速いか遅いかはわかりません
0316nobodyさん04/11/07 12:38:19ID:???
類が友をよびまくってまたまたネタだらけだな
031729204/11/07 13:34:02ID:SeAJAIhj
>>314
urlencode
こんな関数があったんですね。
ありがとうございます。
031829204/11/07 13:46:57ID:SeAJAIhj
>>314
Shift_JISならShift_JISで、UTF-8ならUTF-8でそれぞれ変換されました。
もしApacheなどで使うならばこのようにすると良いようです。

$top_jpg = mb_convert_encoding($picture_addr, "UTF-8","Shift_JIS");
$top = urlencode ($top_jpg) . ".jpg";
<img src=\"$top\">


mb_convert_encodingは拡張関数なので
拡張モジュール「php_mbstring.dll」を有効にする必要があります。

ttp://jp2.php.net/manual/ja/install.windows.php
0319nobodyさん04/11/07 13:56:00ID:???
>>318
mbstring使えないサーバだとmbstringエミュレータ使うといいですよ
0320nobodyさん04/11/07 19:31:44ID:???
php4と思わしきコードを自鯖のphp5で試してみたら
Notice: Undefined index: command in C:〜

と出る。そこを調べてみたら、どうやら$_POST['command']
$_POSTで送られてきてるのが全てNoticeになってるみたい。

PHPのマニュアルを見ても、ググってもイマイチ分かりません。
Noticeを出さないように改善する方法はありませんか?
0321nobodyさん04/11/07 20:12:02ID:???
げ、$_POST['command']使えなくなるのかな・・
0322nobodyさん04/11/07 20:32:01ID:???
>>316

↑
すぐにこんな人ワラワラ
湧いてくるよね。。。
0323nobodyさん04/11/07 21:26:50ID:???
>>320
error_reporting( error_reporting() ^ E_NOTICE );
で表示上はNOTICEは出なくなるが根本的な解決ではない

$_POST を var_dump OR print_r して中身を確かめてみれば?
032428004/11/07 21:35:35ID:IUwmjDQr
色々な理由により.cgiとしての利用は難しいのが現状っぽいです。
>>282
以外に解決方法はないでしょうか?
0325nobodyさん04/11/07 22:06:51ID:???
lsコマンドの部分だけ他のスクリプトで書けば?
0326nobodyさん04/11/07 22:07:18ID:???
>>320
ハァ?
定義されて無いんだからNoticeはあたり前だろが
何今更いってんだ?
032728004/11/07 22:22:21ID:???
>>325
天才!!
サンクスです!!
0328nobodyさん04/11/07 22:27:07ID:ZgNgeUkw
>>311
ttp://www.spencernetwork.org/jcode/
こっちの方が便利、対応しているサーバ、対応していないサーバ、基本的に
関係ないので、どでしょうか?
0329nobodyさん04/11/07 22:29:07ID:???
$hogehoge=1;
include(aaa.php);

------------------
aaa.php
print $hogehoge;
------------------

このスクリプト動かしたとき、
1って表示されますか?それともnullでしょうか?
チェックしたいのですが、現在phpが動作しない状況でして
確認することができません。教えてくだせぇ
0330nobodyさん04/11/07 22:34:41ID:???
>>329
1って表示されるはず。
前にfor文の中で$i使ってたときあって、文の始めにinclude_onceで読み込んだ先のファイル内でも$i使ってたりして
ハマったことあるなぁ・・・。
まさかスコープが同じとは思わなかったよ。
0331nobodyさん04/11/07 22:36:34ID:???
>>330
ありがとうございますm(__)m
0332nobodyさん04/11/07 22:37:38ID:???
文字列の分割です。例えば"*"を区切り記号として、

例1."abc" は "abc"と""(又はNULL)
例2."abc*" は "abc"と"*"
例3."abc*def" は "abc"と"*def"

explodeだと、"abc"と"def"になってしまいます。
また、例1と例2の区別が出来ません。

どうするのが一番スマートでしょうか?
0333 ◆.jC7ANgFY. 04/11/07 23:00:20ID:???
>>332
$str = "abc*";
$ret = explode('*', $str, 2);
if (count($ret) == 2) $ret[2] or $ret[2] = '*';
else $ret[2] = NULL;
0334 ◆.jC7ANgFY. 04/11/07 23:01:29ID:???
>>332
訂正です。添字ミス。$strを元に$retに結果が返ります。

$str = "abc*";
$ret = explode('*', $str, 2);
if (count($ret) == 2) $ret[1] or $ret[1] = '*';
else $ret[1] = NULL;
0335nobodyさん04/11/07 23:25:19ID:???
>>334
ありがと。
でも、ifとか無しに
ならんかと考え中。
0336nobodyさん04/11/07 23:46:22ID:???
>>332
多分、これでいいと思う。

$str1 = 'abc*';
$str2 = 'abc*def';
$str3 = 'abc*def*ghi';

print_r(preg_split('/(?=\*)/', $str1));
print_r(preg_split('/(?=\*)/', $str2));
print_r(preg_split('/(?=\*)/', $str3));
033733604/11/07 23:54:55ID:???
>>332
問題を少し読み間違えていたような気がするのでもう一度。
必ず 2 つに分割するのかどうかが問題を見ただけでは分からないけど。

$str0 = 'abc';
$str1 = 'abc*';
$str2 = 'abc*def';
$str3 = 'abc*def*ghi';

print_r(preg_split('/(?=\*)|$/', $str0, 2));
print_r(preg_split('/(?=\*)|$/', $str1, 2));
print_r(preg_split('/(?=\*)|$/', $str2, 2));
print_r(preg_split('/(?=\*)|$/', $str3, 2));
0338nobodyさん04/11/07 23:56:14ID:???
アップロードした画像をGDでサムネイル作成するページを作成しています。
透過GIFの場合を考え、ImageColorTransparent を使用するつもりです。

新しく定義した背景色を指定する方法 ( ImageColorAllocate ) は見つかりましたが、
アップロードされた透過GIFに元々定義されている透過色を判断出来る方法はあるのでしょうか?

0339nobodyさん04/11/07 23:59:47ID:???
>>320
とりあえず、$_POSTを、$_REQUESTに変える。
そもそも、commandをPOSTで送ってない。ってんなら。
array_key_exists()をかます。
0340nobodyさん04/11/08 00:21:09ID:???
>>336,337
ありがと。>336の方がいいみたい。

マンモス本P.322を見ているのだが、
なんで>336の書き方で、区切り文字の
"*"が配列に残っているのか、不思議。
034132004/11/08 01:10:50ID:???
>>323 >>339
ありがと。あと、dumpで表示してみたら、NULLでした。

緊急措置としてif (array_key_exists("command", $_POST)){
かましてみました。上手く行きました。THX
034232004/11/08 01:20:50ID:???
何か
<input name=command type=hidden value="hogehoge">
で得てるみたい。
0343nobodyさん04/11/08 01:22:02ID:???
>>339
俺毎回issetかましてるが、そんな関数もあったのか
0344nobodyさん04/11/08 03:10:22ID:???
なぁPHPの連想配列はハッシュだぞ、、
0345nobodyさん04/11/08 03:17:17ID:???
Array_key_existsは配列処理関数の完全性のためにあるんです。
0346nobodyさん04/11/08 04:01:12ID:???
array_key_exists より isset の方が短くて好きよ。
034732004/11/08 04:15:58ID:???
switch($_POST['command'])で判定してるから
issetつかえねー(´・ω・`)

$_POSTの初期化ってどうするの?ヽ(`Д´)ノ
0348nobodyさん04/11/08 08:03:25ID:???
>>347
( ;´・ω・`)人(´・ω・`; )
0349nobodyさん04/11/08 08:14:32ID:???
>>347
switch(isset($_POST['command']) ? $_POST['command'] : FALSE)
0350軟式PHP04/11/08 09:06:18ID:???
ボンクラ質問者が多くなってきたな
0351nobodyさん04/11/08 09:10:32ID:???
>>350
あまり高度な質問されても解答できないだろ?
君にあわせてくれているんだよ。感謝しなきゃ。
0352軟式PHP04/11/08 09:16:16ID:???
なるほどな。
0353nobodyさん04/11/08 10:01:32ID:???
>>647
$_POST = array();
0354nobodyさん04/11/08 11:10:56ID:pYeS35cG
教えてください。
PHPを使ってアップロードしたときに
ファイルサイズが制限を越えるファイルをアップすると
サーバ側でファイルサイズや名前が取得できないだけでなく
他の項目(<input type="text" など)のデータ
も設定されなくなるのですが
こういうものなのでしょうか?
0355nobodyさん04/11/08 11:38:30ID:???
大根とか無理でしょ。
それじゃあ制限の必要ないじゃん。
無理かどうか確認しないと。
0356nobodyさん04/11/08 11:58:24ID:vBQdFfe4
ネットショップ運営者です。
格安商材なので頻繁な銀行振り込み確認が非常にコストとなっています。
自動確認スクリプトみたいなのが作れたらいいなと思うのですが、
可能でしょうか?銀行から如何に振込み名義を取得するかが
ネックですが。
0357nobodyさん04/11/08 12:10:55ID:???
微妙にスレ違いかもしれませんが、質問します。

サーバのphp.iniの設定をhtaccessで変更できると
聞いたのですがやり方がよく分かりません。
ググってみても参考サイトが探せなくて。。
何か参考になるサイトをご存じないでしょうか?
0358nobodyさん04/11/08 12:12:53ID:???
>>356
取引先の銀行に相談されるのが先かと。
035935404/11/08 12:14:21ID:???
>>355
大根?
とりあえず無理ってことですよね
0360nobodyさん04/11/08 12:20:09ID:???
>>356
ショップ経営してるなら普通ファックスサービスかメールサービス使わないか?
0361nobodyさん04/11/08 13:05:29ID:???
>>357
http://jp2.php.net/manual/ja/configuration.changes.php
http://lolipoking.lolipop.jp/php/patio.cgi?mode=past&no=175
0362nobodyさん04/11/08 15:47:12ID:e4TPxf3I
php5のコンストラクタ、
なんで__constructに変わったんだろ?
__destructに合わせたかっただけ?
0363nobodyさん04/11/08 15:58:09ID:???
もとから__construct()
0364nobodyさん04/11/08 15:58:33ID:???

【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/

0365nobodyさん04/11/08 17:21:39ID:???
誘導されてきました。
今、http://m@ki.私のドメイン.comというアドレスにしたくて、
ki.私のドメイン.comを設定して、それはちゃんと表示されるのですが、
http://m@ki.私のドメイン.comとすると、print_rで$_SERVERを表示させても
そのmが入れられているかいないかの区別が付きません。どのようにPHPで記述すれば
その値が取得出来るのでしょうか?教えて下さい。m(_ _)m
036636504/11/08 17:27:59ID:???
なお、認証ダイアログ
if ($_SERVER['PHP_AUTH_USER'] == '' ) {
header('WWW-Authenticate: Basic realm="My Realm"');
header("HTTP/1.0 401 Unauthorized");
echo "ユーザーがキャンセルボタンを押した時に送信されるテキスト\n";
exit;
}
else {
echo "<p>こんにちは、{$_SERVER['PHP_AUTH_USER']} さん。</p>";
echo "<p>あなたは、{$_SERVER['PHP_AUTH_PW']} をパスワードとして入力しました。</p>";
}
は出さずに行いたいです。
0367nobodyさん04/11/08 17:39:07ID:???
>>365
なんか良く分からんが、DNSの話なら板違いだな。
つーか @ を使おうとするなんて変態だな
■ このスレッドは過去ログ倉庫に格納されています