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

【PHP】下らねぇ質問はID出して書き込みやがれ 100

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/10/27(水) 17:41:33ID:2BwSQxVQ
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 99
http://hibari.2ch.net/test/read.cgi/php/1286938893/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0247nobodyさん2010/11/01(月) 02:18:55ID:???
インスタンスするのにわざわざコンストラクタをprivateにする意味がわからないわ
0248nobodyさん2010/11/01(月) 02:19:17ID:???
>>246
コンストラクタをprivateにする必要があるのはどういった場合でしょうか。
また、>>237はどのような仕組みでインスタンス化できるようになっているのでしょうか。
0249nobodyさん2010/11/01(月) 02:33:38ID:???
>>247
シングルトンにしたい場合等で自分のクラス以外からは
インスタンス化させたくない場合がある時とかに
privateとする事でプログラム的に制約を与えることが出来る

>>248
>>237はgetInstanceがTestクラスに所属するから
そこからのインスタンス化はできる
0250nobodyさん2010/11/01(月) 02:36:36ID:???
Java使いはレベルが高いですね
0251nobodyさん2010/11/01(月) 04:20:21ID:???
javaつーかオブジェクト指向の基礎ですがな
0252nobodyさん2010/11/01(月) 04:27:18ID:???
デザパタは応用で基礎とは言わんわ
02531392010/11/01(月) 10:07:47ID:3sRV6stz
>>140さん>>141さんありがとうございます
素晴らしいです
0254nobodyさん2010/11/01(月) 10:12:54ID:???
>>249
サンクス。難しいな
0255nobodyさん2010/11/01(月) 15:20:43ID:???
俺の家の近くにはセブンイレブンが多いかな。
0256nobodyさん2010/11/01(月) 15:24:45ID:???
セブンイレブンとPHPに何の関係があるのでしょうか。
詳細キボンヌ
0257nobodyさん2010/11/01(月) 15:34:39ID:???
脈絡の無いものは誤爆であると見抜ける人でないと(掲示板を使うのは)難しい
0258nobodyさん2010/11/01(月) 15:38:30ID:???
サンクスとセブンイレブンを(コンビニ繋がりで)掛けてるんだろ。
言わせんなよ恥ずかしい。
0259nobodyさん2010/11/01(月) 15:41:28ID:???
ほんとオッサンはギャグセンスねえな!
0260nobodyさん2010/11/01(月) 16:03:27ID:???
釣りって知ってますか。
詳細キボンヌ
0261nobodyさん2010/11/01(月) 16:04:12ID:???
つーか、>>257の「誤爆」って何?w
0262nobodyさん2010/11/01(月) 16:18:27ID:???
今日もおっさん達元気だな
0263nobodyさん2010/11/01(月) 16:54:24ID:???
おっさんに言われたくねぇな
0264nobodyさん2010/11/01(月) 17:33:31ID:???
お願いだから、【荒らしは無視・放置】 してね?ID有のみ回答だよ。
★ 荒らしは放置されるのが一番苦手
  → ウザイと思ったらそのまま放置。
▲ 放置された荒らしは煽りや自作自演であなたのレスを誘います。
  → 釣られてレスしたらその時点であなたの負け。
■ 反撃は荒らしの滋養にして栄養であり最も喜びます。
  → 荒らしにはエサを与えちゃだめ。
0265nobodyさん2010/11/01(月) 18:30:31ID:???
一番放置できない>>264であった
0266nobodyさん2010/11/01(月) 18:35:33ID:???
有IDのみ回答と言っても、無IDに回答する人も多いから破綻してんだよな

いっそ板設定を全ID出しにすればいいのにね
0267nobodyさん2010/11/01(月) 18:42:32ID:???
強制IDじゃないのは、そもそもこんな過疎板で荒れたりしないだろって事だよ
勢い見てみろよ、このスレだけ特別に異常なの
0268nobodyさん2010/11/01(月) 19:03:54ID:???
おまえらは本当に開発者かと疑いたくなるな
ID出そうが出さまいが匿名である以上状況が変わらんのは開発者ならよくわかってるはずだ
0269nobodyさん2010/11/01(月) 19:04:55ID:???
ここはマ板ではありません
02702642010/11/01(月) 19:12:20ID:???
ここまで荒らしのサンプルです。
0271nobodyさん2010/11/01(月) 19:18:35ID:???
ここまで?
いえ、どこまでもです
0272nobodyさん2010/11/01(月) 19:18:42ID:???
>>264
おまいにお願いされても萌えね〜よw
0273nobodyさん2010/11/01(月) 19:37:31ID:???
ID無しに設定されてるってことは、
自演でも何でもお好きにどうぞ、って意味だろ?
0274nobodyさん2010/11/01(月) 21:06:33ID:???
>>268
お前は2chがわかってないな
ここ8年で強制IDになった板では軽い荒し(自演)は減ってるんだよ
ここはIDでないから気楽に荒しが行われる

強制IDでも、荒しの数は減ってもPCと携帯併用、ip変えたりp2つかっての自演などはあるけど
数は減るんだよ
0275nobodyさん2010/11/01(月) 21:24:55ID:???
っていうかこのスレ荒らされて困る人いるのか?本気で嫌な人いるのか?
0276nobodyさん2010/11/01(月) 21:47:43ID:???
>>274
にわかにマジレスくれてやるとかまともではないな
0277nobodyさん2010/11/01(月) 23:03:55ID:???
俺は15なんだけど、結構まじめにこのスレ読んでる
荒らされるのは本気で困るんだが
0278nobodyさん2010/11/02(火) 01:30:31ID:ICgbzolu
■サーバ情報
【OS名】windowsXP
【PHPのバージョン】5.2.14
【Apache】2.2.16

■php.iniの設定
; For Win32 only.
SMTP = smtp.nifty.com
smtp_port = 25
;smtp_port = 587
; For Win32 only.
sendmail_from = 1234567@nifty.com

■エラー内容
Warning: mb_send_mail() [function.mb-send-mail]:
SMTP server response: 501 5.0.0 Invalid domain name in

■質問内容
PHPでのメール送信の内容で質問があります。
コマンドプロンプトからはtelnetで25番ポートに接続し、認証が必要なくメ
ール送信できるのに、なぜPHPからはメール送信ができないのでしょうか。
ちなみにメールサーバーは契約しているプロバイダのものを使っています。

大変恐縮ですが、自分で設定(サブミッションポートなど)を変えてみても
送信できなかったのでどなたか解決方法をご存知の方がいらっしゃいました
らアドバイスいただけると幸いです。
よろしくお願いいたします。
0279nobodyさん2010/11/02(火) 01:34:33ID:???
ポート25番のメール送信で問題があるならまずOP25Bを疑う
0280nobodyさん2010/11/02(火) 01:35:35ID:???
メールログ見れ
0281nobodyさん2010/11/02(火) 02:22:26ID:ICgbzolu
>>279
貴重なアドバイスありがとう御座います。
OP25Bの場合はサブミッションポートだけを指定すれば送信可能というわけではないのでしょうか。
02822782010/11/02(火) 02:24:41ID:ICgbzolu
>>280
アドバイスありがとうございます。
アパッチのログを見たのですがメールログが見つからないのですが、どこか別の
場所にほぞんされているのでしょうか???
0283nobodyさん2010/11/02(火) 08:18:51ID:???
そんくらいで正規表現使うなとかこのスレでよく聞くけど

if (!strstr("hoge", $str) && !strstr("huga", $str) && !strstr("hage", $str))
なんてときは
if (!preg_match("/(hoge|huga|hage)/", $str))
のほうがいいよね?
0284nobodyさん2010/11/02(火) 09:02:47ID:???
phpにenumみたいなのないかな?
NetBeansの候補に出したいんだけど
0285nobodyさん2010/11/02(火) 09:22:40ID:???
>>278
POP before SMTPじゃねーの?
0286nobodyさん2010/11/02(火) 10:01:08ID:???
>>279
コマンドプロンプトからポート25でOKと書いてあるのに何言ってんの?
0287nobodyさん2010/11/02(火) 10:06:43ID:???
>認証が必要なくメール送信できるのに

これ自体が不思議でならない
これだとスパム送り放題って事でしょ
0288nobodyさん2010/11/02(火) 10:13:30ID:MFB4pbx+
telnet でメール送信出来たマシンはPHPが動いてるサーバと全く同じ?
多分telnet はローカルマシンからしてるような希ガス
0289nobodyさん2010/11/02(火) 10:42:26ID:???
>>283の上の文&&じゃなくて||だわ
0290nobodyさん2010/11/02(火) 10:58:58ID:???
>>287基本から勉強しな
0291nobodyさん2010/11/02(火) 11:03:24ID:???
>>290
お前の基本が古いんだろw
0292nobodyさん2010/11/02(火) 11:21:07ID:???
>>288
telnetでメール送信って、 smtpサーバーにtelnetでつないで HELOとか打ってくやつだろ?
0293nobodyさん2010/11/02(火) 11:38:40ID:MFB4pbx+
ん?そうだが、言いたいのはtelnetでsmtp叩いた環境と
phpでsmtp叩いた環境が違うんじゃね
って話だが?
0294nobodyさん2010/11/02(火) 11:44:22ID:???
としたらただのあほだよな。XPだから目の前のパソコンだろ。
0295nobodyさん2010/11/02(火) 12:17:57ID:???
>>278
・正しいphp.iniファイルを修正したのかどうか。(phpinfoで確認)
・Apacheを再起動したかどうか。
・sendmail_from は正しいメールアドレスを設定しているかどうか。
・POP before SMTP の可能性はないか。
パケットモニタしてみればHELOコマンドの時点で蹴られてるのかどうかなどが
わかるが・・・
0296nobodyさん2010/11/02(火) 13:05:10ID:???
ttp://askul-oshigoto.okwave.jp/qa6267033.html

環境がいまいちよく分からないからあれだけど厳しい所だとメルアドのドメインと送信者のドメインを
照合して弾いている所もあるからね。
0297nobodyさん2010/11/02(火) 14:29:22ID:???
>>282
ちなみにApacheのログにはメール送信の記録は残らんと思うぞ。
PHPのmail関数が直接MTAを叩きにいくはずだから、記録があるなら
MTAのログだろう。
今回はWindowsでMTAを入れてないわけだからniftyのSMTPサーバーにしか
ログは残ってないことになるわな。
0298nobodyさん2010/11/02(火) 14:52:51ID:3UDUD+H/
しょうがないからSubmissionポートつかったら?
0299nobodyさん2010/11/02(火) 14:53:30ID:MFB4pbx+
PHPのmail関数が直接MTAを叩きにいく?
0300nobodyさん2010/11/02(火) 14:56:56ID:???
windowsだからな
0301nobodyさん2010/11/02(火) 15:42:00ID:???
Windowsじゃなくても一緒でしょ。
PHPのmail関数は直接sendmailにアクセスするわけだから。
0302nobodyさん2010/11/02(火) 15:51:00ID:???
http://jp.php.net/manual/ja/function.mail.php

mail() の Windows 版実装は、Unix 版実装とは 多くの点で違います。 第一に、メッセージの生成にローカルの
バイナリは使用せず、 ソケットを通じて直接操作するだけです。 これは MTA がネットワークソケットを listen している
必要があるということを意味します(ローカルホスト、リモートマシン どちらでもかまいません)。
0303nobodyさん2010/11/02(火) 16:28:43ID:???
あのさぁ・・・
Apacheを経由するわけじゃないからApacheのログには
メール送信の記録は残らないって話してんの。
backgroundの実装の話は>>282,297の流れと関係ないだろ?
0304nobodyさん2010/11/02(火) 16:32:20ID:???
>>303
流れと関係無いから何?
0305nobodyさん2010/11/02(火) 17:08:19ID:???
OKWaveにも似た質問あるけど同じ人かな?
環境わからんけどsendmail_path指定してるってことない? 確かこれの指定があれば優先されるんだったよな
0306nobodyさん2010/11/02(火) 17:21:43ID:???
「//」を外すと500になるんだけど何故だろう?
物凄く違和感がある

//ini_set('display_errors', true);

namespace newspace;

echo 1;
03073062010/11/02(火) 17:27:43ID:???
あ、名前空間は最初に定義されなければなりませんか
0308nobodyさん2010/11/02(火) 18:32:48ID:???
>>304
ウザいから氏ねってことじゃない?
0309nobodyさん2010/11/02(火) 19:47:40ID:???
ID無い質問やちょっとあれな回答があったとしても、
皆我慢してるんだぞ。今は嵐が過去るのをじっと我慢。つまらなくなったらいなくなるさ。
0310nobodyさん2010/11/02(火) 19:57:16ID:???
15の俺と違っておっさんは気が短くて困る
0311nobodyさん2010/11/02(火) 20:05:46ID:Z+1BHNaU
class c {
function __construct() {
return"22";
}
}

returnの22は取れないんだっけ?
0312nobodyさん2010/11/02(火) 20:19:39ID:???
コンストラクタでreturnできないし
コンストラクタは基本的にプロパティをセットする場所と思えばいい
そういうもの作るならstaticメソッドで作ってください
0313nobodyさん2010/11/02(火) 22:05:58ID:???
コンストラクタはインスタンスを生成するための処理。
戻り値が取れないのは、生成側のセマンティクスがそうなっているからという理由だけでなく、そういう用途のために用意されたものではないから。
またコンストラクタで処理が失敗した場合は、きちんと例外を投げてインスタンスの生成を阻止するのが筋。


なんつって
0314nobodyさん2010/11/02(火) 22:35:21ID:???
>>8
0315nobodyさん2010/11/02(火) 22:48:28ID:???
>>283
注意:

もし特定の haystack に needle があるかどうかを調べるだけの場合、 より高速でメモリ消費も少ない strpos() を代わりに使用してください。
0316nobodyさん2010/11/02(火) 22:51:36ID:???
んな使う関数なんてどうでもいいんだよ
同じような処理を何個も並べるか1つだけ正規表現使ってやるかのどっちがいいかって質問だろ
0317nobodyさん2010/11/02(火) 22:53:57ID:???
なら明らかに前者
0318nobodyさん2010/11/02(火) 23:15:49ID:???
なら明らかに前者(キリッ
じゃねえよ

strposで2件10万ループ
0.17
strposで3件10万ループ
0.24
strposで4件10万ループ
0.31

preg_matchで2件10万ループ
0.19
preg_matchで3件10万ループ
0.2
preg_matchで4件10万ループ
0.2

3件以上はpreg_match
0319nobodyさん2010/11/02(火) 23:27:33ID:???
>>318
http://java-house.jp/ml/archive/j-h-b/017625.html#body

(略)

ベンチマークプログラムはソースコードを公開すべきです。なぜ公開しないの
か。「ベンチマーク対策を防ぐため」というのは詭弁でしょう。どうやったっ
て解析はされるものです。それより、
どういうコードだからこういう結果になった
と、ベンチマーク結果を見た者が判断できるように、ソースコードを公開すべ
きです。

ソースコードの公開されていないベンチマークプログラムは信頼しない方が良
いでしょう。

高木 浩光@電子技術総合研究所
http://www.etl.go.jp/~takagi/ (工事中)

0320nobodyさん2010/11/02(火) 23:29:41ID:???
strposが高速って嘘なの?
正規表現次第?
0321nobodyさん2010/11/02(火) 23:35:58ID:???
<?php
$s = microtime(true);
$c = 0;
$str = "hogehoge";
for ($i = 0; $i < 100000; $i++) {
if (strpos($str, "mogemoge") || strpos($str, "hugahuga") || strpos($str, "hogehoge")) {
$c++;
}
/**
*preg_matchの場合
*
*/
// if (preg_match("/(mogemoge|hugahuga|hogehoge)/", $str)) {
// $c++;
// }
}
echo microtime(true) - $s . "\n";
echo $c;

意図的にhogehogeを最後に持ってきてるベンチだから
最初のstrposにhogehogeが入ってればstrposが早いのは当然
ただ平均的に考えた場合preg_matchのほうが上
03223212010/11/02(火) 23:36:43ID:???
ミス
if (strpos($str, "mogemoge") || strpos($str, "hugahuga") || strpos($str, "hogehoge")) {
$c++;
}
↓に訂正
if (strpos($str, "mogemoge")!==false || strpos($str, "hugahuga")!==false || strpos($str, "hogehoge")!==false) {
$c++;
}
0323nobodyさん2010/11/02(火) 23:40:05ID:???
間違ってるから釣りだと思ってスルーしてたのに。 &&以外に
strstrの引数逆。
0324nobodyさん2010/11/02(火) 23:40:49ID:???
>>289
0325nobodyさん2010/11/02(火) 23:49:27ID:???
>>318は最悪実行時間ね
ちなみに>>321のコードをhogehogeを先頭にした場合
strposは1/3の時間になるがpreg_matchでは変わらない
結論としてstrposは関数呼び出しに比例して最悪実行時間が上がるが
preg_matchではそうではない
0326nobodyさん2010/11/02(火) 23:52:14ID:???
文字列とするならシングルクオートに・・・
0327nobodyさん2010/11/02(火) 23:57:41ID:???
どっちも変わらんな。
必要な機能で選ぶべきだ。
0328nobodyさん2010/11/03(水) 00:06:04ID:???
検索文字列中にメタ文字があったら使えなくないか?
0329nobodyさん2010/11/03(水) 00:07:08ID:???
エスケープすればええやん
0330nobodyさん2010/11/03(水) 00:19:00ID:???
どっちも言うほど遅くなくね?
0331nobodyさん2010/11/03(水) 00:28:16ID:???
数ふやせばpreg_matchのほうがいいってことじゃね
最初のほうでマッチする保証があればstrposのほうが早いから
少なければ少ないほどstrposがよくて
多ければ多いほどpreg_matchのほうがよい
0332nobodyさん2010/11/03(水) 01:04:22ID:???
いずれにせよ1万回で>>318くらいの速度なら
実用上はさして差は無いと言えるんでは。

システム全体ではDBアクセスなどのほうがボトルネックになりそう。
0333nobodyさん2010/11/03(水) 01:20:12ID:???
実用上大して差がないとわかってるのに正規表現を毛嫌いするやつがいるからな
preg_match("/hoge/",$str)とか正規表現使ってないものは確かに俺もないとは思うが目くじら立てるほどでもないよな
0334nobodyさん2010/11/03(水) 09:01:46ID:???
マッチさせて抽出・置換 させているということをわかりやすくするために
(あえて)preg*しか使ってはいけない

という規約を見たことがある

良い悪いは別にして、そういう考え方もあるって事だな
0335nobodyさん2010/11/03(水) 09:08:17ID:???
ID出してない質問なのになんでスルーしないんだよw

>>334
統一してる方が見やすいのは確かだな
pregは正規表現でも違っても使えるから統一するならこっちになるわ
0336nobodyさん2010/11/03(水) 09:25:07ID:???
机上の話としては面白かった。ありがとう。
でもifのコストが数万回繰り返してもその程度なら、別にstrposのループやin_arrayでいいんじゃ・・・とは思った。
検索対象語が大量に増えた場合に、「|」で連結してエスケープしないといけないpreg_matchよりは、
設定ファイルやDBから対象語を取得してそのままstrposやin_arrayにかけるほうがよっぽど楽な気が。
連結するまでもない少数なら尚更。
ちょっとしたスクリプトを書くときとかは個人の好みでpreg_match使っても全然OKだと思う。

>>334-335
ユーティリティとして関数やクラス作ってそれを使わせるようにすればいいんじゃね?
プログラムを読む側や書く側は実装がどうなっているか意識する必要はない。
0337nobodyさん2010/11/03(水) 11:02:13ID:???
元C使いだが、"123"などの文字列同士を足すと数値として計算されるのにビビった
最近までintvalかましてたよ
0338nobodyさん2010/11/03(水) 11:07:15ID:???
PHPは型ないからな
0339nobodyさん2010/11/03(水) 11:11:07ID:???
型指定をする必要が無いだけで型はあるぞ
0340nobodyさん2010/11/03(水) 11:28:10ID:???
型指定・・・?変数の宣言は型指定というよりメモリの確保では
0341nobodyさん2010/11/03(水) 11:33:29ID:???
>>340
宣言の話じゃないぞ。値の自動変換(?)認識(?)の話だ
0342nobodyさん2010/11/03(水) 11:37:17ID:???
>>337
連結に-+などを含めて試すともっと面白いぞw
0343nobodyさん2010/11/03(水) 12:06:13ID:???
文字列入れた変数を++するとかな。
0344nobodyさん2010/11/03(水) 14:40:28ID:???
$a = "a";
$a ++; // b !!
0345nobodyさん2010/11/03(水) 16:16:38ID:bRpTkRq5
PHPで親クラスの親クラスの関数呼ぶには
parent::parent::でいいの?
0346nobodyさん2010/11/03(水) 16:18:00ID:???
Phpはガキが使う物
■ このスレッドは過去ログ倉庫に格納されています