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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/02/16(木) 03:19:52ID:xwXojaq/
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0611nobodyさん2006/03/08(水) 11:22:11ID:???
PHPでのソケット通信のテストをしていますが
forkした親プロセスと子プロセス間でのディスクリプタパッシング
はできるのでしょうか?
親プロセスで開いたクライアントとのソケットがresouce型になってしまうので
子プロセスに渡すことが難しいです。

よろしくお願いします。
0612nobodyさん2006/03/08(水) 11:22:33ID:s67YcGnH
>>609
置き換えでもよいのですが、文字列は「ぁ」とは限らないために
パターンがありすぎて・・。

VBでいうところのstrconv()みたいなものですかね。
0613nobodyさん2006/03/08(水) 11:33:22ID:???
>>612
変換ルールがさぱーり分からないので何を回答すればいいのか分からんのだけど。
とりあえずmb_convert_kana()のマニュアルでも読んで、それで不足してるなら
もーちっと具体的な質問してください。
0614nobodyさん2006/03/08(水) 11:35:18ID:???
>>612
ひらがなとアルファベットじゃ意味が違うだろ。
aとAはほぼ同じだが
っとつじゃ全然違う。
したがってそんな変なことをする関数はない。

パターンなんて全部網羅しても100もないんだから
関数つくればいいよ
0615nobodyさん2006/03/08(水) 11:55:10ID:???
>>611
PHPのリソース型は異なるプロセス空間へは一切渡せないんじゃないかな。
0616nobodyさん2006/03/08(水) 12:15:38ID:???
>>607
つまり、そんな関数は無い、ってことです。
0617nobodyさん2006/03/08(水) 12:29:22ID:???
>>612
パターンって「ぁぃぅぇぉゃゅょっゎ」だけじゃないの
何がやりたいんだ
0618nobodyさん2006/03/08(水) 13:11:58ID:???
>>607は>>608に答えろ。じゃないと進まん。
0619nobodyさん2006/03/08(水) 13:32:43ID:YAPHuj+m
>>602
その情報はどこに?
URLなどもっと詳しく

ググってすぐ見つかるようなキーワードを教えて
0620nobodyさん2006/03/08(水) 13:34:04ID:???
strconvでググったらこれがトップだった
ttp://www.microsoft.com/japan/msdn/library/ja/vblr7/html/vafctstrconv.asp
MSDNはオンラインで見るにはちょっと重いかな・・・

>VbStrConv.None 変換は行われません。
>VbStrConv.LinguisticCasing 大文字と小文字については、ファイル システム (既定) ではなく言語の規則に従います。UpperCase および LowerCase と組み合わせる場合にだけ有効です。
>VbStrConv.UpperCase 文字列を大文字に変換します。
>VbStrConv.LowerCase 文字列を小文字に変換します。
>VbStrConv.ProperCase 文字列の各単語の先頭の文字を大文字に変換します。
>VbStrConv.Wide* 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。
>VbStrConv.Narrow* 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。
>VbStrConv.Katakana** 文字列内のひらがなをカタカナに変換します。
>VbStrConv.Hiragana** 文字列内のカタカナをひらがなに変換します。
で、この中のどれかだと思うが、どれにでも当てはまりそうな質問内容だな。

(´-`).。oO(まず最初に607は説明力をつけるべきだと思った・・・)
0621nobodyさん2006/03/08(水) 13:40:46ID:???
ヵっぉ ぉゃっょ
0622nobodyさん2006/03/08(水) 13:54:26ID:???
ぅゎ ょぅι゙ょ っぉぃ
0623nobodyさん2006/03/08(水) 13:56:47ID:???
>>607はエスパー伊藤の降臨を待っている
ちなみにエスパー伊藤はコイツ
ttp://pukasec.sakura.ne.jp/ren/img-box/1141658595524.wmv
0624nobodyさん2006/03/08(水) 14:36:20ID:???
PHPで認証サイトを作る場合
ページ毎のログイン情報の受け渡しって
SESSIONやDBでやるのが普通?

より簡潔にできないかと思って
クラス内で配列を保持して受け渡すってのをやってみたんだけど
あまり上手くいかない・・・
0625nobodyさん2006/03/08(水) 14:57:50ID:Khyvdh2z
>>624
> クラス内で配列を保持して受け渡すってのをやってみたんだけど

クラス内でとかはあんまり関係なく、どうやって渡したのか?が問題
0626nobodyさん2006/03/08(水) 15:11:14ID:???
>>624
SESSION"を"DBでやってます。
SESSIONIDはクライアントのCOOKIEに持たせてるけどね。
0627nobodyさん2006/03/08(水) 15:30:25ID:???
>>626
というのは具体的にどういう形?
0628nobodyさん2006/03/08(水) 16:24:49ID:???
sessionIDつきのデータをDBに放り込むんだろうな。
一意性はsessionIDに頼る。
cookieが生きている限りなんとかなるのと
大きなデータの保持には適しているかな。

と、以上、まったくの推測。
0629nobodyさん2006/03/08(水) 16:49:15ID:???
指定したファイルがあるかないか調べる方法ってないでしょうか?
0630nobodyさん2006/03/08(水) 16:50:29ID:???
>>629
ありますよ
0631nobodyさん2006/03/08(水) 16:52:20ID:???
>>630
どうすればいいですか?
0632nobodyさん2006/03/08(水) 16:54:37ID:???
マニュアルくらい読んだら?
0633nobodyさん2006/03/08(水) 16:55:15ID:???
>>631
関数
file_exists
06346292006/03/08(水) 17:07:17ID:???
>>633
ありがとうございますm(_ _)m
0635nobodyさん2006/03/08(水) 17:11:17ID:???
>>631
初めからそう質問しとけばよかったんだよ。
ありませんか?→Yes / No
どうしたらいいんでしょうか?→解決法
0636nobodyさん2006/03/08(水) 19:31:10ID:???
phpの関数ってどこに保存されてるの?
ハードコーディング?
0637nobodyさん2006/03/08(水) 19:46:28ID:???
>>629
>>1くらい読めよ。読めないのか、ゴメン
0638nobodyさん2006/03/08(水) 20:00:57ID:???
>>636
日本語でOK

つかユーザ関数の話かい?
0639nobodyさん2006/03/08(水) 20:12:55ID:???
>>635
その論法もう古臭いから普通の質問スレで持ち出さなくていいよ。
揚げ足取り以上の意味持たないし面白くもない。
0640nobodyさん2006/03/08(水) 20:35:31ID:???
>>638
ユーザ関数をハードコーディングってどういうことよw
0641nobodyさん2006/03/08(水) 20:44:08ID:???
つまり一種の予知?
0642nobodyさん2006/03/08(水) 20:55:11ID:???
トーニャ ハードコーディング
0643nobodyさん2006/03/08(水) 21:13:44ID:???
>>642
靴紐でも切れたのかね?
0644nobodyさん2006/03/08(水) 21:20:02ID:???
標準の関数がどこにあるかってことじゃまいか?
0645nobodyさん2006/03/08(水) 21:49:35ID:???
libphp*.soの中にバイナリ化されているんじゃないの?詳しくは知らないけど。
0646nobodyさん2006/03/08(水) 21:59:32ID:???
>>636
普通にソース中のどこにあるかって話ならext/standardに入ってるけど
06476382006/03/08(水) 22:17:14ID:???
>>640
いや、2行目は無視をした。というより1行目も本当に訊きたいことが良く判らん
「標準や拡張の関数がハードコーディング」だって意味が判る?
0648nobodyさん2006/03/08(水) 23:12:06ID:???
俺はわかったぞい。
0649nobodyさん2006/03/08(水) 23:37:26ID:???
穴狙いで、>>648の篠沢教授に50点。
0650nobodyさん2006/03/08(水) 23:53:23ID:???
>>647
いや,君の書き込みは全部無視をした。
0651nobodyさん2006/03/08(水) 23:55:20ID:???
>>646
うちのPHPフォルダにそんなフォルダはないぞ
0652nobodyさん2006/03/09(木) 00:00:31ID:???
>>651
http://www.php.net/downloads.php
Complete Source Code
0653nobodyさん2006/03/09(木) 00:43:58ID:???
>>651
お兄さんのphpはphp本体がインタープリタかとw
0654nobodyさん2006/03/09(木) 00:48:32ID:???
モジュール版が使えるレンサバであえてCGIとしてPHPを使う意味ってどんなん?
0655nobodyさん2006/03/09(木) 00:59:38ID:???
>>654
ユーザ権限で実行、forkの動作が保障されてる etc
0656nobodyさん2006/03/09(木) 08:47:28ID:???
>>654
CGIのみセーフモードoffなんじゃないの
0657nobodyさん2006/03/09(木) 10:27:03ID:???
>>639
面白い面白くないじゃなくて、質問者の礼儀だろ。
オレは質問になってない文章にはそのように返すがな
0658nobodyさん2006/03/09(木) 11:44:36ID:???
質問スレで面白い回答を期待するほうが間違ってる
0659nobodyさん2006/03/09(木) 12:41:04ID:???
気持ちはわからんでも無いが
スルーせずにいちいちアゲアシ取っていくなんてメンドクサイことよくやるね
0660nobodyさん2006/03/09(木) 12:46:20ID:???
スルーして誰かが親切に答えるとまた同じことやるからね
0661nobodyさん2006/03/09(木) 14:20:49ID:???
>>629-634で止めときゃまだほほえましかったのに>>635みたいな余計なこといちいち書くから荒れるんだよな。
0662nobodyさん2006/03/09(木) 14:41:42ID:???
おまえらもそれをわかってるならスルーしたらいいだけなんだがな
0663nobodyさん2006/03/09(木) 15:12:50ID:???
それ言うと無限ループになりますね。

>>662
goto >>662
0664nobodyさん2006/03/09(木) 19:48:25ID:???
>>657
質問になってない質問ならわざわざ回答する必要ないじゃん
おまえ馬鹿か。
0665nobodyさん2006/03/09(木) 19:58:42ID:???
そして糞真面目に回答しちゃう馬鹿が出てムカつくわけだな
0666nobodyさん2006/03/09(木) 21:04:59ID:???
くだらねえ
0667nobodyさん2006/03/09(木) 21:23:30ID:???
m9(^Д^)プギャー
0668nobodyさん2006/03/09(木) 21:51:36ID:???
なにこれ
皮先ウザいんだけど
0669nobodyさん2006/03/09(木) 21:52:43ID:???
超回答者がここにも
0670nobodyさん2006/03/09(木) 21:54:09ID:???
>>668
スルー汁。ホントにそう思ってるならコテハン名なんか書いたら余計に
よろこばすだけ
0671nobodyさん2006/03/09(木) 23:13:16ID:SHZr9acF
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-gd --with-zlib
--enable-mbregex --enable-mbstring --enable-trans-sid --with-xsl
--with-pgsql=/usr/local/pgsql --with-gd --with-jpeg --with-jpeg-dir=/usr/local/lib

で、phpコンパイルしてるんですが、

[09- 3-2006 23:09:46] PHP Fatal error: Call to undefined function ImageCreateFromJPEG()
in /hogehoge/hoge.php on line 15

のようなエラーがでてしまいます。どうすれば解決できるでしょうか?
環境はRedHat9とphp5.1.2です
0672nobodyさん2006/03/10(金) 00:03:00ID:???
アバウトな質問で申し訳ありません。
C言語であれば以下のようなコードで変数の値を入れ替える関数が作れます。
void swap ( int *x , int *y )
{
int t = *y;
*y = *x;
*x = t;
}

ポインタがないPHPでは同じような関数は実現できないのでしょうか?
入れ替えた2つの変数を返すのに
戻り値を配列にするといった方法しかないのでしょうか?
0673nobodyさん2006/03/10(金) 00:09:18ID:???
Perl同様リファレンスというものがある
0674nobodyさん2006/03/10(金) 00:46:33ID:???
>>672
そんな関数を使わなくても
list($x, $y) = array($y, $x);
で普通に変数スワップできるけどね。

ま、ポインタの代わりにリファレンスを使うのももちろんアリだけど。
0675nobodyさん2006/03/10(金) 01:14:59ID:???
<?php
$userid = "abc";
$password = "def";
?>

このプログラムをサーバーにアップロードして、
HTTP(SSLなし)でアクセスすると abc と def は
平文でネットを流れることになるのでしょうか?
それともサーバー側でのみ処理されることになるのでしょうか?
0676nobodyさん2006/03/10(金) 01:40:21ID:???
>>675
まずスレを実行するとクライアント側で何が表示されるのか考えてみ
明らかにくだ質っぽいが
0677nobodyさん2006/03/10(金) 01:41:25ID:???
>>676
スレじゃない・・
"それ"ね・・
0678nobodyさん2006/03/10(金) 03:09:37ID:???
>>675
サーバ側でのみ処理される(ネットを流れない)ケースが多いと思われる。
ファイル名が.txtや.htmlだったらどうなるか考えてみ。
また.phpでもそのまま表示される可能性はある。
0679nobodyさん2006/03/10(金) 03:25:34ID:???
Webサーバで解釈してHTMLを返すんだから、そのスクリプトじゃ何も返ってこない
0680nobodyさん2006/03/10(金) 10:44:28ID:???
PHPはサーバーサイドスクリプトなんですか?クライアントサイドスクリプトなんですか?
って意味の質問じゃないのか、それ。
0681nobodyさん2006/03/10(金) 15:45:28ID:???
>>671
たぶんlibgd自体がjpegサポートしてないんだよ。
0682nobodyさん2006/03/10(金) 15:58:10ID:???
>>671
>>681の言うとおりじゃないかな。
libgdのconfig.log 調べてごらん。
jpegのライブラリは、make install-lib したかな
0683nobodyさん2006/03/10(金) 16:07:52ID:???
掲示板にトリップ機能を付け加えたいのですが
どうやればよいかご存知の方いますか?
0684nobodyさん2006/03/10(金) 17:04:23ID:???
トリップ計算して結果を表示する。
0685nobodyさん2006/03/10(金) 17:39:41ID:???
そりゃ居るでしょう
0686nobodyさん2006/03/10(金) 18:29:52ID:???
>>683
敢えて言おう、ぐぐれ
0687nobodyさん2006/03/10(金) 20:40:48ID:bPBa/0oN
教えてください
C言語の構造体のようなイメージで使いたくて

  $a->s1 = "aaa";
  $a->s2 = "bbb";
  $a->b->n1 = 123;
  $a->b->n2 = 456;

みたいな使い方をしてるのですが
この書き方って問題ないのでしょうか?
マニュアルを見てもこの書き方が正しいと
思える内容が見つからなくて気になってます。
別に正しい書き方とか使い方とかあるのでしょうか?

自分の認識としては、上の例でいうと
「a」と「b」がstdClassのオブジェクトとして自動的に作られて
そのメンバ変数として「s1」「s2」「n1」「n2」が追加される
と考えてますが、間違ってます?
0688nobodyさん2006/03/10(金) 21:05:57ID:???
>>687
E_STRICTを気にしないならいいけど、標準的には
$a = new stdClass;
と書くべき。
0689nobodyさん2006/03/10(金) 21:20:20ID:???
ってゆうか、横着しないでクラス定義しろよ。
0690nobodyさん2006/03/10(金) 21:22:21ID:???
こういうのは配列でやるのがPHP流。
0691nobodyさん2006/03/10(金) 21:27:13ID:???
>>687
>C言語の構造体のようなイメージで使いたくて
どこがCの構造体やねん
0692nobodyさん2006/03/10(金) 22:18:59ID:???
>>691
俺は何となくしたい事は分かったが。
06936712006/03/10(金) 22:48:17ID:8gj1xhR9
>>681-682
レスありがとうございました。
調べてみます!
06946872006/03/11(土) 08:33:19ID:???
>>688-692
みなさんありがとうございました
なんとなく安心しました

他の方は配列でやってるのでしょうか?
それともクラス定義?
最初はクラスで定義してたのですが
変数の宣言を忘れても間違ってても
エラーにならないのでやめてしまいました。
(もしかしてエラーのレベルのせい?)
もう1度いろいろ試してみます。

>>691
配列でやると構造をあらわしにくいと思います
0695nobodyさん2006/03/11(土) 08:46:23ID:???
漏れはもっぱら配列
気がつくと5次元6次元配列とかできてたりして

この辺は個人の作り易さとかあるだろうな
0696nobodyさん2006/03/11(土) 08:47:02ID:???
漏れはもっぱら配列
気がつくと5次元6次元配列とかできてたりして

この辺は個人の作り易さとかあるだろうな
0697nobodyさん2006/03/11(土) 08:50:36ID:???
>>694
いちおうPHPの配列はリスト、スタック、キュー、マップ(ハッシュ)、木構造などだいたい表現できるけど。
stdClassは使い捨てスクリプトとかテストスクリプトみたいな一時的なものに使う以外にはあんまり使い道ないよ。
全部配列で代替できるから。
構造の「定義」をしたいならクラスを使うべき。
06989722006/03/11(土) 11:53:34ID:???
>>974
できました。
亀レスですがありがとうございました。

>>973
リファレンスで検索しても基本的な関数の一覧しかヒットしませんでした。
その様な関数はあるのでしょうか?

更に質問なのですが、
関数内で引数として渡された値実体を
直接変えることはできますか?
伝わりにくいかもしれませんが、
やはりCでのポインタを用いたswapのイメージでお願いします。
0699nobodyさん2006/03/11(土) 11:56:35ID:???
>>698
未来からやってきた
0700nobodyさん2006/03/11(土) 12:00:18ID:???
>>698
お前が>>672なら
function hoge(&$var) {
$var++;
}
$val = 1;
hoge($val);
echo $val;
07016982006/03/11(土) 12:01:00ID:???
>>699
アンカー全て600番台に
脳内置換お願いしますorz
0702nobodyさん2006/03/11(土) 12:10:19ID:???
>>698
function swap(& $a, & $b) {
 $t = $a; $a = $b; $b = $t;
}
この&をつけて変数を渡すことをPHPではリファレンスっていうのです。C++の参照の構文に似せてあるね。
http://php.net/references
07036722006/03/11(土) 12:27:06ID:???
>>700
調べてみました。
参照変数なんてあったんですね。

ポインタと比べて変数のアドレスは操作できないが、
アドレスの指す変数を操作していると解釈していいのでしょうか?
0704nobodyさん2006/03/11(土) 12:34:58ID:???
お願いだから、マニュアル熟読してよ
0705nobodyさん2006/03/11(土) 13:20:09ID:???
>>695
お前最悪だな
糞なおまえの糞スパゲティコードなんかメンテしたくねえや。

クラスくらい作って『集約(Aggregation)』くらいしやがれや
0706nobodyさん2006/03/11(土) 13:22:48ID:???
>>703
>調べてみました
何を調べたんだ
0707nobodyさん2006/03/11(土) 15:43:24ID:???
>>697
配列で代替できるけどわかりにくくね?

687みたいなのを配列にしようとすると
変数わけるしかなくない?
0708nobodyさん2006/03/11(土) 15:53:32ID:???
5次元とかの方が書いてるときはさくさくかける。


おかげでアホな外注が作ったワケ分からんスパゲッティーコードを
元請様がデバッグする羽目になる。
0709nobodyさん2006/03/11(土) 17:03:22ID:???
>>707
っ[連想配列]

クラスも連想配列に似た実装になってるわけだが>phpのばあい
0710nobodyさん2006/03/11(土) 17:08:56ID:???
>>709
$a['s1'] = "aaa";
$a['s2'] = "bbb";
$a['b']['n1'] = 123;
$a['b']['n2'] = 456;

こんな感じ?
なんか気持ち悪いのはおれだけ?
■ このスレッドは過去ログ倉庫に格納されています