トップページphp
732コメント231KB

【PHP】質問スレッド Part9

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/07/12 03:18ID:???
■本家
 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-3ぐらい
0199nobodyさん03/07/23 14:14ID:???
質問させてもらいます。
先ほどクラスについてを一通りのことを勉強したのですが、
クラスを使う利点がよくわかりません。
関数だけで十分な気がするのです。
処理が速くなるとか、何か良いことあるのでしょうか?
0200nobodyさん03/07/23 15:25ID:???
>>199
PHPは構造体がないからその代わりにつかうだけでも便利。
ネームスペースが破綻しにくいし>特にセッション変数
とか。

一般的なクラスの利点はPHPに限ることじゃないので
他で調べるほうがいいとおもう。
0201nobodyさん03/07/23 15:47ID:???
複雑なソースを書くときや
複数人でソースを書くときなんか
クラスを使うとわかりやすいという
ことだけです。

「わかりやすい」
この一言に尽きます。
020219203/07/23 16:20ID:j6os713+
>>198 C:\PHP\sessiondata となっています。OSはWinXPです。

それと別件なんですが$_SESSION['test']みたいな感じでセッションを
使うことができたんですが
セッション情報をURL(SID)につけてSQLでデータの削除や閲覧ページなど
動作させると削除はきちんとできているんですが画面には削除したはずの情報が
そのまま残っているんです。ちょっとわかりづらいでしょうがなにが原因なんでしょうか?
0203あぼーんNGNG
あぼーん
020419203/07/23 16:31ID:j6os713+
どうもキャッシュが関係しているんでしょうか?
0205nobodyさん03/07/23 16:55ID:???
>>192
register_globals=offだからだけど、
onにするのは望ましくないので$_SESSION使うのがいいとおもう。
http://www.php.net/manual/ja/ref.session.php

>>202
Cookieは使えないんですよね?
動的ページでもURLが同じだとキャッシュされやすいので
a. ページの移動にGETでなくPOSTを使う
b. URLの末尾にダミーのユニークなパラメータを付加する
のどっちかで回避できるかな。
020619203/07/23 20:09ID:j6os713+
>>205
なるほど、そういう手があるんですね。
どうもありがとうございました^^
0207nobodyさん03/07/23 20:22ID:???
REMOTE_ADDRを取得したい時に2通りの方法があることが
分かったのですが、これらはどのように違うのでしょうか?

$_SERVER[REMOTE_ADDR]
getenv( 'REMOTE_ADDR' )
0208nobodyさん03/07/23 22:50ID:???
>>207
変数か関数かの違いだろ。見たら分かる。






・・・そうじゃなくて?
俺いじわるだから答えてあげないよ〜
0209nobodyさん03/07/23 22:58ID:???
>>208
解らないと行った方が潔い。
0210nobodyさん03/07/24 00:46ID:???
>>207
PHP使ったことないから「$_SERVER」って変数がよくわからないけど
Perlの$ENVと同じなのであれば、中身は一緒だね
好きなほうを選ぶがよい
0211nobodyさん03/07/24 19:28ID:3Ff6tsfH
いきなりの質問ですみません。
RedHatLinux8.0でメールボックスにメールを受信した時に
PHPスクリプトを呼び出して処理を行った後返信をしたいのですが、
メールが届く度に、PHPスクリプトを呼び出すメールサーバ側の設定がわかりません。
どのようにすればいいでしょうか?
PHPはphp 4.3.2をimap関数付きでconfigureしてます。
sendmail 8.12.5
popt 1.7.1
板違いかもしれませんがよろしくお願いします。
0212あぼーんNGNG
あぼーん
0213あぼーんNGNG
あぼーん
0214あぼーんNGNG
あぼーん
0215nobodyさん03/07/24 20:39ID:???
>>211
forward
0216nobodyさん03/07/25 02:34ID:???
質問お許しください。
http://www.pat.hi-ho.ne.jp/dimension/sample/sample_xml_dom.4.3.0.basic.shtml
でxml文章を作成しているのですが、日本語を使うと実体参照で
表現されてしまいます。mbstring等の設定で直せるのでしょうか?
0217nobodyさん03/07/25 02:36ID:???
printで出力するときに、勝手にJavaScriptのようなものが
HTMLの最上段と最下段に追加されるのですが、
これは一体何なのでしょうか?

また、includeでHTMLファイルを取り込んだ際にも、
アンカータグに勝手にtarget="_top"を追加されてしまいます。
どなたか原因がわかる方はいらっしゃいませんでしょうか?
0218nobodyさん03/07/25 02:39ID:???
>>211 procmailで調べるといいかと。
0219nobodyさん03/07/25 04:41ID:???
PHPでWord文書を生成したいのですが,できますか?
0220nobodyさん03/07/25 06:50ID:???
>>217
クライアント側でProxomitronとか使ってない?
他の端末で確認してみるべし。
0221nobodyさん03/07/25 14:49ID:n0rGriHy
>>218
ありがとうございます。procmailで調べてみます!!
0222あぼーんNGNG
あぼーん
0223あぼーんNGNG
あぼーん
0224あぼーんNGNG
あぼーん
0225nobodyさん03/07/25 18:39ID:???
$a1 $a2 $a3 $a4 $a5 $a6 $a7 これを比較して、1つでも
違うものがあったらエラーにしたいのですが
if($a1 == $a2)と1つずつチェックするしかないでしょうか?
一度に比較するのは無理ですか?
0226nobodyさん03/07/25 19:13ID:5Frmg0qV
>>225
最初から配列にしときゃ楽なのに

for ($i = 1; $i < 8; ++$i) {
 $val = "a$i";
 $a[$i] = $$val;
}

if (count(array_unique($a)) == 1) {
 echo "Equal.\n";
} else {
 echo "Different.\n";
}
0227221(225)03/07/25 19:53ID:???
>>222
配列にしてうまくいきました。
ありがとうございました。
0228nobodyさん03/07/25 23:55ID:???
>>227
なにコピペにレスしてんだ
0229nobodyさん03/07/26 00:11ID:???
pu
0230nobodyさん03/07/26 01:51ID:???
zlib関数についてですが
これは、gzfopenを使ってファイルを開いたときに、
そのファイル全部が解凍されてしまうのでしょうか?
それともgzfgets等を使って読み込むときに逐一
解凍されるのでしょうか?
インターネット上にあるファイルを扱うため
ダウンロード時間を節約したいと思っています。
よろしくおねがいします。
0231nobodyさん03/07/26 01:52ID:???
× gzfgets
○ gzgets
0232nobodyさん03/07/26 03:07ID:???
>>220
別の端末(というか本稼動用マシン)で試したら無事上手くいきました。
ずーっとPHPのデバッグモードか何かが変更してるのかと思ってました。
ありがとうございました。
0233nobodyさん03/07/27 00:47ID:npgEG66c
おいおいPHPってgotoもラベルも無いのかよ〜。
深いネストからの脱出とかめんどくせぇな〜。
0234nobodyさん03/07/27 00:49ID:???
gotoだって。(w
0235nobodyさん03/07/27 01:01ID:???
>>233-234
自作自演ご苦労
0236nobodyさん03/07/27 01:32ID:???
>>233 = >>235 だって。(w
0237あぼーんNGNG
あぼーん
0238nobodyさん03/07/27 02:03ID:???
>>233
おいおいPHPじゃsatoを使うんだぜ。この厨房
0239nobodyさん03/07/27 02:06ID:???
甘い。(w
0240nobodyさん03/07/27 03:45ID:???
>>233
スパゲッティ,食べる?
024124103/07/27 13:14ID:dJWoBMBZ
置換についてです。
$a内の『7月27日』を『7/27』に換えたいんですが、

$data =~ s/7月27日/7/27/g;

と、すると区切りのスラッシュがダブってしまいますよね。
こんなときの対処方法がご存知でしたら、
御教授お願い致します。
0242nobodyさん03/07/27 13:16ID:59cmaD5D
>>241
$data =~ s/7月27日/7\/27/g;
024324103/07/27 13:56ID:dJWoBMBZ
>>242
うまくいきませんでした。。。
0244nobodyさん03/07/27 14:17ID:???
> $data =~ s/ 〜
これはPHPの書式じゃない。
正規表現スレにもマルチしているみたいだが、PHPだとちゃんと伝えておいたほうがいいぞ。
0245板違いですかね?03/07/27 14:48ID:xxX8c2Bz
掲示板のパスワードやぶられました
しかもパスワード変えられちゃって、どうしようもない状態ですTT
常連さんの話によると、ブルートフォースアタッカーが関係しているようで、なにやら言っていました
何ですかそれ?検索してみても、POPとかFTPとかのパスワード破るのはあったんですけど、
それで破られたとは考えにくいです。
フロームのパスワードを破る奴なんて存在するんですか?
0246nobodyさん03/07/27 14:50ID:???
自分で設置した掲示板なの?
024724503/07/27 14:51ID:xxX8c2Bz
いいえレンタルです。。
024824103/07/27 15:08ID:dJWoBMBZ
>>244
誤爆スマソ
0249nobodyさん03/07/27 15:11ID:???
簡単なパスワードだと破られるよ。
英数字36文字(a-z,0-9)でパスワードを設定したとすると、
平均試行回数 = (36^n)/2 = (36*36*...*36)/2 回で破られることになる。
4文字だと、(36*36*36*36)/2 = 839808 回ってところか。
1秒に一回試行するとして、約233時間 ≒ 10日。
... 結構かかるんだな。。。

レンタル掲示板なら管理者の人に連絡して対処してもらうべし。
フロームのパスワードって何なんだろう?PHPとどんな関係があるんだろう。わけわか。
0250nobodyさん03/07/27 15:19ID:???
PHP はメーリングリストも質問版も、知識のある奇特なヤシが色んな質問に答えまくる、初心者様に貢献する奴隷板になりますた。
0251nobodyさん03/07/27 15:27ID:???
>>249
多分、管理モードに入るためのフォームのパスワード、と言いたいのでは無いだろうか。まさかgetじゃ…

>>245
パスワードは英大小文字数字記号全て混在させて10文字以上が割に安心。


でも何でここなの? 漏れも奴隷ですか?
0252nobodyさん03/07/27 17:50ID:???
素直に提供元に連絡しろと。

後、内部犯の可能性も高いので敵を作らんような性格になれるよう努力しろ。
0253nobodyさん03/07/27 20:47ID:D+yphSrQ
PHP4.2+PostgreSQL7.3で、
ラージオブジェクトの格納、引出(表示)、削除、などのやり方について
詳しいサイトあったら教えて下さい。

自分なりに探したのは、
ttp://homepage2.nifty.com/~chairo/html/installation/webapp/webapp.html

ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/2287/doc/funto13.html
↑ここくらいですが、削除のやり方とかのってないす。

※別スレにも書いたのですが、反応が無くて。。。
 重複すいません
PHP + PostgreSQL
http://pc2.2ch.net/test/read.cgi/php/983128806/
0254nobodyさん03/07/27 20:56ID:???
削除はごく基本的な機能です。
一冊本買った方がいいかと。
0255あぼーんNGNG
あぼーん
025625303/07/28 00:08ID:pa0vp2x9
>>254
一般本は、3,4冊持っているのですが、
ラージオブジェクトの削除は特殊らしくて。。。

それを解説しているような本も見つからなくて。。。
0257nobodyさん03/07/28 00:14ID:???
pg_lo_unlink
これちがうんか?
0258nobodyさん03/07/28 01:50ID:???
gotoもラベルもないPHPってホント終わってるね。
gotoを否定する馬鹿はプログラム組まなくていいよ。
深いネストからの一発脱出はgotoが無いとめんどくさくてしょうがない。
gotoなくすならPerlのbreak ラベルのように代替策を提示しろよな。
0259nobodyさん03/07/28 01:58ID:???
>>258
いや、そんなのなくてもプログラム書けるから。
もちろん見難くしないでね。
0260nobodyさん03/07/28 02:09ID:???
>>259
ほう〜。
じゃあ以下の例(gotoは使えないけど仮に使ってる)を
ラベル使わずにエレガントに書いて見てよ。

for($i=0;$i<10;$i++)
{
  for($j=0;$j<10;$j++)
  {
    if(条件)
      goto LABEL;
  }
}

LABEL:
0261nobodyさん03/07/28 02:10ID:???
釣りネタ・煽りネタとしてgotoを持ってくるのは適切だと思うが、goto信者というのはやり過ぎ。
さすがにそんな椰子が実在するとは思えない。
0262nobodyさん03/07/28 02:12ID:???
while使えばいいじゃん。
0263nobodyさん03/07/28 02:13ID:???
勝手にgoto信者にすんなよ。
gotoは使いどころを分かってるなら有効な命令なんだよ。
盲目的にgoto嫌ってる阿呆は意味も分からずに
遠回りして汚いコードを書き散らす。
0264nobodyさん03/07/28 02:16ID:???
>while使えばいいじゃん。
えっ何?それが答え?
どこぞの香具師の受け売りで盲目的にgoto嫌って
直感的じゃないソースを書く奴はただの能無しだからさ。
もう偉そうに回答しなくていいや。
あーあっと。
0265nobodyさん03/07/28 02:18ID:???
gotoの例文以外に>>260みたいなコードに遭遇したことないし
0266nobodyさん03/07/28 02:21ID:???
信者さん江
http://jp2.php.net/manual/ja/html/control-structures.break.html
0267nobodyさん03/07/28 02:25ID:Og/nq0Tf
for($i=0;$i<10;$i++)
{
  for($j=0;$j<10;$j++)
  {
    if(条件)
      break 2;
  }
}
0268nobodyさん03/07/28 02:29ID:???
素直に
「gotoが無くて困ってます。助けて下さい」
って書けないのはなんでだろ〜
0269nobodyさん03/07/28 02:48ID:GMEyhxNP
functionの呼び出し元のスクリプト名(又はclass名)と行番号を取得する事は出来ますか?
複数の場所で使用している関数でエラーが起きた時に
どのパターンの時にエラーが起きているか分かりにくくて困っています(T.T)
全て行数をくっつけて送るしかないのでしょうか?
0270nobodyさん03/07/28 03:14ID:???
gotoバカ、ありゃ基地外だな。
0271nobodyさん03/07/28 04:26ID:???
矢野先生ー
0272nobodyさん03/07/28 06:21ID:???
後藤さん人気ですな
0273nobodyさん03/07/28 06:40ID:???
gotoとか言ってる奴は高校でBASICを習いました

10 print "goto無いの?"
20 goto 10
0274nobodyさん03/07/28 12:22ID:???
goto hell
0275nobodyさん03/07/28 13:06ID:???
ネトゲ速報板のとあるスレで、1001ストッパーが壊れ
1001以降もまだ書き込みできている模様。

1001 名前: 1001 投稿日: Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1006 名前: マロン名無しさん 投稿日: 03/07/28 06:42 ID:Z0CeMHS7
何これ 

1014 名前: マロン名無しさん 投稿日: 03/07/28 06:42 ID:AxlwdY4A
お〜い、まだ書けるぞ?

書き込みは1300レスを過ぎた今も続けられている。
http://live4.2ch.net/test/read.cgi/mmonews/1059166935/
0276nobodyさん03/07/28 15:27ID:???
はじめて知った>break ネスト数
でも例外用の構文がないのでgotoあってもいいとおもう。
do/break/while(0)でもいいけど。
0277nobodyさん03/07/28 18:50ID:???
control-structures.break.phpでも読めよ
0278nobodyさん03/07/28 18:56ID:???
hoge.php の1行目に
<?xml version="1.0" encoding="EUC_JP"?>
と記述すると
Parse error: parse error in /home/httpd/hoge.php on line 1
というエラーが発生します。
xhtmlとphpを共存させるにはどうしたらいいんですか?
0279nobodyさん03/07/28 18:59ID:???
>>278
普通にechoする
0280nobodyさん03/07/28 19:10ID:???
short_open_tag boolean

PHP タグの短縮型 (<? ?>) を使用 可能にするかどうかを設定します。
PHPをXMLと組み合わせて用いる場合は、<?xml ?>をファイル中で用いるために
このオプションをオフにする必要があります。
オンにした場合にPHPでXMLを出力するには、例えば、次のようにします。
<?php echo '<?xml version="1.0"'; ?>
これをオフにした場合、長い方の形式のタグ (<?php ?>)を使用する必要があります。

注意 このディレクティブは、<? echoと同じ形式の ショートカット<?=も影響を受けます。
このショートカットを使用するには、 short_open_tagをonとする 必要があります。
0281nobodyさん03/07/28 21:23ID:???
おまいら、GD と GD2 についてご教示いただけませんか。

Windows + PHP4.3.2 で GD2 を使うと文字化けしまつ。
下記のコードを実行すると GD (php_gd.dll) の場合はきっちり表示されますが、GD の代わりに GD2 (php_gd2.dll) を有効にすると化けます。
Unicode から他の文字コードに変更されたのかと思い EUC-JP や SJIS を試してみましたがやっぱり化けてまつ。

GD2 に拘る必要が無いので取り敢えずは無問題でつが、何故 GD2 で化けるのか気になって気になって集中力を欠き大魔界村は3面で全滅する始末。
解説してくれませんか、エロい人。

<?php
Header("Content-type: image/jpeg");
$im = imagecreate(400,30);
$block = ImageColorAllocate($im,0,0,0);
$white = ImageColorAllocate($im,255,255,255);
$txt = "Test kanji 漢字";
$txt = mb_convert_encoding($txt, "UTF-8", "SJIS");
ImageTTFText($im,20,0,10,20,$white,"C:\WINDOWS\Fonts\MSGOTHIC.TTC",$txt);
ImageJpeg($im);
ImageDestroy($im);
?>
0282nobodyさん03/07/28 22:31ID:CcP+Vvas
$txt = mb_convert_encoding($txt, "EUC-JP", "SJIS");
0283nobodyさん03/07/28 22:34ID:???
>>279
thx
0284nobodyさん03/07/28 22:37ID:???
しまった。>>280さんが詳しい解説してくれてたんだね。
よく分かりました。ありがとう。
0285nobodyさん03/07/28 22:48ID:???
>>282
GD2 で Unicode から EUC-JP に変わったんだよ、というご指摘でしょうか。
一応試したのですが化けたままです。
>>281 Unicode から他の文字コードに変更されたのかと思い EUC-JP や SJIS を試してみましたがやっぱり化けてまつ。
0286nobodyさん03/07/28 23:03ID:???
>または>で始まる引用文をマークアップしたいんですが
$x = preg_replace('/^(>|(>)\S.*)$/','<q>\\1</q>',$x);
だと上手くいかないです。
しかも「$」が文末の改行に反応しない模様

あと2ch互換のトリップを造りたいのですが、
半角カナなどの置換も上手くいかないのですがどすればよいでしょうか。
ちなみにmbは使えない環境です。
0287nobodyさん03/07/28 23:51ID:???
>>286
$y = split("\n|\r|\r\n", $x); //配列に展開
$y = array_map('rtrim', $y); //行末ホワイトスペース削除
$y = array_map(create_function('$z', 'if (preg_match("/^(>|>)/", $z)) { return "<q>" . htmlspecialchars($z) . "</q>"; } return htmlspecialchars($z);'), $y); //説明省略
$x = implode('<br />', $y); //文字列に戻す
$x = str_replace('</q><br /><q>', '<br />', $x); //必要に応じて引用箇所をつなげる
0288nobodyさん03/07/28 23:58ID:???
>>287
ありがとうございます。一行ですっきりというわけには行かないんですね。
0289nobodyさん03/07/28 23:59ID:???
本7が紛れ込んでるな
0290nobodyさん03/07/29 00:05ID:???
>>286
つづき。
たぶんどっかのスクリプトのトリップ生成ルーチンを参考にしていると思うんだけど
半角カナは事前に文字コードをSJISにしておかないと期待どおりの結果は得られませんよ。
jcode.phpsを使いませう。

参考までに僕が使っているルーチンを書いときます。
$m = array(':',';','<','=','>','?','@','[','\\',']','^','_','`');
$n = array('A','B','C','D','E','F','G','a','b','c','d','e','f');

$salt = substr($key . 'H.', 1, 2);
$salt = preg_replace('/[^\.-z]/', '.', $salt);
$salt = str_replace($m, $n, $salt);
$id = substr(crypt($key, $salt), $o); //$oはトリップ桁数 x -1(10桁のとき、-10)
0291nobodyさん03/07/29 00:11ID:???
>>288
>>286の'/^(>|(>)\S.*)$/'を'/^(>|(>)\S.*)$/m'に変えたらうまくいくんじゃないかと思ふ。
でも掲示板での利用を考えているみたいだからあえて配列にしてから
コールバック関数を使うやり方を書きますた。
僕は複雑な処理をしたいときはarray_mapの代わりにpreg_replace_callbackを使ってまつ。
0292nobodyさん03/07/29 00:22ID:???
>>287氏(でいいのかな?)
/^(>|>\S.*)$/m でも上手くいきました
けど改行が挙動不振なので最初のほうがよさそうですね。

トリップはperlのルーチンを読み替えて実装しようとしてました。
SJISに変換しておかないといけなかったのですね。意外な盲点。
ルーチン参考にさせて頂きます。
どうもありがとうございました。
0293あぼーんNGNG
あぼーん
029403/07/29 15:32ID:AcfIX73p
>>281
Linux 上で試したが UTF-8 で漢字も出たよん。
> ImageTTFText($im,20,0,10,20,$white,"C:\WINDOWS\Fonts\MSGOTHIC.TTC",$txt);
ファイルの指定の \ をエスケープしなくていいの?
0295 03/07/29 16:08ID:???
過去スレ見てもわからなかったんですが、
結局PHPで添付ファイル付きのメール送信フォームは作れるのですか?
0296あぼーんNGNG
あぼーん
0297あぼーんNGNG
あぼーん
0298あぼーんNGNG
あぼーん
■ このスレッドは過去ログ倉庫に格納されています