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

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

■ このスレッドは過去ログ倉庫に格納されています
0001 忍法帖【Lv=40,xxxPT】 2011/09/29(木) 02:56:06.94ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 110
http://hibari.2ch.net/test/read.cgi/php/1314692611/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0619nobodyさん2011/10/20(木) 12:23:57.31ID:???
>>618
そう簡単に諦めるな
http://php.net/manual/ja/function.call-user-func.php
0620nobodyさん2011/10/20(木) 17:10:24.99ID:???
お安い御用です。
0621nobodyさん2011/10/20(木) 17:58:14.60ID:???
function baka($ini)
{
$cnt=$ini;
return function()use ($cnt){return ++$cnt;};
}
$a=baka(10);
echo $a();
echo $a();

とやっても11 11と出力されていくだけで12 13みたいに繰り上がりません
教えてください
0622nobodyさん2011/10/20(木) 18:22:26.47ID:???
>>621
useで使う変数の前に&を付けて明示的に参照にしてやる必要がある

function createCounter($init) {
return function () use (&$init) { return ++$init;};
}

$counter = createCounter(10);

echo $counter(),PHP_EOL;
echo $counter(),PHP_EOL;
echo $counter(),PHP_EOL;
0623nobodyさん2011/10/20(木) 18:24:49.35ID:???
ありがとうワキガ
0624nobodyさん2011/10/20(木) 19:34:55.02ID:???
JSPと"PHP+ACP"ってどっちが軽いか、誰かやってみてよ。

まあ、Cで書けば圧勝なんだけどさ。
0625nobodyさん2011/10/20(木) 19:44:19.08ID:1ugFMr1j
【OS名】windows7
【PHPのバージョン】5.3.6
【質問内容】

YahooのフリーメールにPHPからメールが送れなくて困っているのですが、
POP before SMTPという方法でやろうとしても上手くいきません。
何処が悪いのか教えて頂けますでしょうか?
-------------------------------------------------------------
■php.ini

[mail function]
SMTP = smtp.mail.yahoo.co.jp
smtp_port = 587
sendmail_from = ユーザー名@yahoo.co.jp
-------------------------------------------------------------
※続きます。
0626nobodyさん2011/10/20(木) 19:44:52.29ID:1ugFMr1j
※続きです。
-------------------------------------------------------------
■hoge.php
<?php
$fp = fsockopen ("pop.mail.yahoo.co.jp", 110, $errno, $errstr, 30);
if (!$fp) {
echo "Error msg in fsockopen is $errstr ($errno)<br>\n";
}
else {
fputs ($fp, "ユーザー名\r\n");
fputs ($fp, "パスワード\r\n");
fputs ($fp, "QUIT\r\n");
fclose($fp);
}

mb_internal_encoding("UTF-8");
mb_send_mail($to, $subject, $msg, 'From:' . $email);
?>
-------------------------------------------------------------
■結果
メールは送れず、エラー。
SMTP server response: 530 Sorry, please use SMTP-AUTH instead
-------------------------------------------------------------

宜しくお願いします。
0627nobodyさん2011/10/20(木) 20:26:19.39ID:???
>>626
fputsだけじゃなくてfgetsして応答を受け取ってエラーチェック
0628nobodyさん2011/10/20(木) 20:56:25.64ID:???
telnetで確認してみろ。
0629nobodyさん2011/10/20(木) 20:57:58.80ID:1ugFMr1j

else {
fputs ($fp, "mohiojp\r\n");
fputs ($fp, "rinmaru\r\n");
echo fgets ($fp,128);
fputs ($fp, "QUIT\r\n");
fclose($fp);
}

としたところ、
+OK hello from popgate(2.35.19)
と出力されましたが、状況は変わりません。
0630nobodyさん2011/10/20(木) 21:02:04.08ID:???
今って加入しているプロバイダ以外のSMTP使用してメール送信できるのか?
0631nobodyさん2011/10/20(木) 21:13:28.36ID:???
>>629
コネクション時とコマンド送信毎に応答を受け取らないと先に進まないよ。
こんな↓感じ。
http://www.atmarkit.co.jp/fnetwork/rensai/tcp04/hyou1.html

詳細はRFC1939まで。
0632nobodyさん2011/10/20(木) 21:23:06.87ID:1ugFMr1j
応答確認しながらやってみましたが、結果は変わらずでした。

■ソース
else {
    fputs ($fp, "USER ユーザー名\r\n");
    echo fgets ($fp,512) . "<br />";

    fputs ($fp, "PASS パスワード\r\n");
    echo fgets ($fp,512) . "<br />";

    fputs ($fp, "STAT\r\n");
    echo fgets($fp, 512) . "<br />";

    fputs ($fp, "QUIT\r\n");
    echo fgets($fp, 512) . "<br />";

    fclose($fp);
}

■出力
+OK hello from popgate(2.35.19)
+OK password required.
+OK maildrop ready, 1 message (2155 octets) (80554561)
+OK 1 2155

一応、この状態でメールを受け取ったらやはり1通来ましたので、
ログインはできていそうな感じなんですが…。
0633nobodyさん2011/10/20(木) 21:24:52.87ID:1ugFMr1j
でも、password requiredって、
「パスワードが必要です」ってことで、間違ってるんですかね…。
0634nobodyさん2011/10/20(木) 21:30:04.34ID:1ugFMr1j
>>631さんのサイト見直して、fsockopenの応答を受け取って
いなかったので、そちらも受け取るようにしたら↓になりました。
※メールは送れていませんが…。

+OK hello from popgate(2.35.19)
+OK password required.
+OK maildrop ready, 1 message (2159 octets) (80554565)
+OK 1 2159
+OK server signing off.
0635nobodyさん2011/10/20(木) 21:38:39.35ID:???
メールの確認はtelnetで実際に対話する方が楽だぞ

あと>>629
>fputs ($fp, "mohiojp\r\n");
>fputs ($fp, "rinmaru\r\n");
これ大丈夫なのか?w
0636nobodyさん2011/10/20(木) 21:43:46.71ID:1ugFMr1j
>>635
うぎゃぁぁ!
気を付けていたつもりだったんですが…。
パスワード変えました。
ご指摘ありがとうございます…!
0637nobodyさん2011/10/20(木) 22:08:29.89ID:???
SubjectおよびFromに日本語を使うなら、ISO-2022-JPのエンコードが必要では
06386142011/10/20(木) 22:12:11.65ID:???
>>619
おお!こんな方法が!
無事できました。ありがとうございます。
0639nobodyさん2011/10/20(木) 22:20:17.03ID:???
>>636
ini_set('SMTP', $smtp_host);
0640nobodyさん2011/10/20(木) 22:29:06.95ID:1ugFMr1j
>>639

アドバイス有難うございます。
とりあえず↓のようにしてみましたが、動作は変わりませんでした。
意味もわからず挟んでみたの状態なので、ini_set()について
調べてみます。

fclose($fp);

ini_set('SMTP', "smtp.mail.yahoo.co.jp");

mb_internal_encoding("UTF-8");
mb_send_mail($to, $subject, $msg, 'From:' . $email);
0641nobodyさん2011/10/20(木) 22:33:59.60ID:???
pearとか使って SMTP-AUTHで送ればいいじゃない。
0642nobodyさん2011/10/20(木) 22:59:06.51ID:V3iH/iKb
質問
mysqlにこのような文字列が入ってます

「AAA





↑これ(AAA+改行5つ)をPHPで表示するとAAAだけ表示され、改行が消えてしまいます
最後の改行まですべて表示させることはできないのでしょうか?
0643nobodyさん2011/10/20(木) 23:01:33.34ID:1ugFMr1j
初め、エラーメッセージの通りにSMTP-AUTHでやろうと思って調べたのですが、

SMTP-AUTHの場合、
ttp://www.codewalkers.com/c/a/Email-Code/Smtp-Auth-Email-Script/

の内容で試したのですが、最終的なメール送信の所で

451 See http://pobox.com/~djb/docs/smtplf.html

というエラーで詰まってしまっていました。


なかなか難しくて簡単にはできなかったので、POP befor SMTP の方が
簡単なのかな?と思ってこちらで進めている状態でした。
元々YahooのフリーメールにはPOP befor SMTPの方法では送信出来ない
ということだったのでしょうか?
0644nobodyさん2011/10/20(木) 23:09:42.58ID:???
>>643
注意
メールの送信は、新着メールの「受信」後、インターネットへの接続を
切断せずに行ってください。送信前に接続を切断した場合は、再度接続して
メールの受信を行い、続いて送信を行ってください。

ってYahooに書いてあるんだけど、POP3でログアウトする前にメール送信する仕様じゃね
0645nobodyさん2011/10/20(木) 23:15:34.07ID:???
>>642
改行コードが半角スペースになってしまいます
ttp://oshiete.goo.ne.jp/qa/1423513.html
0646nobodyさん2011/10/20(木) 23:18:28.43ID:1ugFMr1j
親切に調べて頂いてありがとうございます。

POPのQUITの前に送信を持って行ってみましたが、エラーは変わらず
SMTP server response: 530 Sorry, please use SMTP-AUTH instead
でした。


ini_set('SMTP', "smtp.mail.yahoo.co.jp");
ini_set("smtp_port", 587 );

mb_internal_encoding("UTF-8");
mb_send_mail($to, $subject, $msg, 'From:' . $email);

fputs ($fp, "QUIT\r\n");
echo fgets($fp, 512) . "<br />";

fclose($fp);
0647nobodyさん2011/10/20(木) 23:22:22.10ID:???
>>646
phpのmb_send_mailでyahooメールだけ、メールが届かない問題
ttp://www.gucch.net/web/php%E3%81%AEmb_send_mail%E3%81%A7yahoo%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%A0%E3%81%91%E3%80%81%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%8C%E5%B1%8A%E3%81%8B%E3%81%AA%E3%81%84%E5%95%8F%E9%A1%8C/
0648nobodyさん2011/10/20(木) 23:23:12.54ID:???
>>644
それはない
0649nobodyさん2011/10/20(木) 23:36:56.79ID:V3iH/iKb
>>645
ありがとうございます。しかし

「AAA

BBB





これだとAAAとBBBの間の改行はちゃんと表示されるのですが、BBB以降の改行が表示されないのです。
nl2brでも結果は同じです。最後まで改行を表示させるにはどうしたらいいでしょうか?よろしくお願いします。
0650nobodyさん2011/10/20(木) 23:38:56.47ID:1ugFMr1j
引き続き調べてみて、

SMTP-AUTHではqdmailというライブラリを使って無事に送信できました。
$ver = & new という記述を $ver = new に置換する必要があったくらいでした。

皆さんも色々と調べて頂きましたが、
「YahooのフリーメールはPOP befor SMTP の方法ではメール送信できない」
という事で一旦納得ようと思います。
メールは送れましたし、popサーバにもつないだり、勉強にもなりましたので。

皆さん、親切に対応して下さって本当に有難うございました!
0651nobodyさん2011/10/20(木) 23:40:29.41ID:???
>>649
どこかでトリミングしてるんじゃない?
0652nobodyさん2011/10/20(木) 23:44:30.56ID:???
>>649
DBからデータ取ったあと、どっかでtrimしてんじゃないの?
ソースもっかい確認してみ
0653nobodyさん2011/10/20(木) 23:57:59.66ID:V3iH/iKb
>>651-652
いえ、trimは真っ先に調べました。
htmlspecialcharsすらしてないです。
0654nobodyさん2011/10/21(金) 00:06:54.74ID:???
>>653
ブラウザのtextareaが無駄な改行コードを消してるんじゃね
データベースに送らずに、まずフォームデータをPOSTして表示してみて

ところで、MySQLの管理ソフトを使って、データベース内のデータを確認をしてないっしょ
0655nobodyさん2011/10/21(金) 00:16:39.47ID:???
>>643
文中の
LF (\n) を CRLFに 
(\r\n)にしろってさ。
0656nobodyさん2011/10/21(金) 00:23:41.77ID:???
>>653
SQL中でもtrimしてない?(selct trim('〜') from 〜)
ソース晒さないとそれ以上は誰にもわからんよ
0657nobodyさん2011/10/21(金) 00:46:38.36ID:???
ASCII文字とマルチバイト文字が混在してる文字列の文字数(バイト数では無い)
を数えたいのですが、どうすれば良いでしょうか?
0658nobodyさん2011/10/21(金) 00:52:01.90ID:uhnPfxzb
PHPMailerでGmail通して送信すると
GmailのSMTP認証に使うユーザーが送信者になっちゃうんだけど
別途FromやSenderを定義しても無視されちゃう
どうすれば送信者を設定できますか?
0659nobodyさん2011/10/21(金) 01:14:18.36ID:???
>>657
http://php.net/manual/ja/function.mb-strlen.php
0660nobodyさん2011/10/21(金) 01:33:06.70ID:???
ライブラリの使い方はスレチなんだけどな
0661nobodyさん2011/10/21(金) 01:37:35.81ID:???
んなことねぇだろ
実質このスレしか機能してないんだし
0662nobodyさん2011/10/21(金) 02:38:07.77ID:???
そんなことは理由にならない
06636582011/10/21(金) 03:59:36.92ID:???
自己解決したんでもうイイです
0664nobodyさん2011/10/21(金) 06:09:06.81ID:???
あっそ
0665nobodyさん2011/10/21(金) 07:30:16.98ID:???
おはよぉ〜

 PHPプログラマ〜のお姉さんだよぉ〜
 今日はどんな質問が残ってるのかな?
 暇だから質問に答えるよぉ〜

0666nobodyさん2011/10/21(金) 10:01:58.30ID:???
「tokuhirom応援振興協議会」
http://hibari.2ch.net/test/read.cgi/prog/1312275688/

「akiyan.com撲滅振興協議会」
http://unkar.org/r/prog/1219967325

「小飼弾撲滅振興協議会」
http://hibari.2ch.net/test/read.cgi/prog/1258970886/

「amachang撲滅振興協議会」
http://hibari.2ch.net/test/read.cgi/prog/1291518728/
0667nobodyさん2011/10/21(金) 18:42:01.75ID:???
PHP5.3で謎の現象が発生したので教えてくれください

$test = 'test';
if (isset($test['abc'])){
  echo 'key abc exists';
}

abcというキーは存在しないのでif内は実行されないことを期待したが違った!実行される!
var_dump($test['abc']); してみると't'と出る。どうやら1文字目が出るようだ。

一体どういうことなのか解説いただける方希望…
0668nobodyさん2011/10/21(金) 18:53:30.36ID:???
>>1
0669nobodyさん2011/10/21(金) 19:27:03.80ID:???
昔からの仕様
文字列に対してキーに文字列指定すると
文字列をintに変換するとかそんな感じ
0670nobodyさん2011/10/21(金) 19:50:54.75ID:???
> 文字列をintに変換するとかそんな感じ

何言ってんの?w
0671nobodyさん2011/10/21(金) 19:54:24.52ID:???
>>667
http://www.php.net/manual/ja/language.types.string.php
の中ほど「文字列への文字単位のアクセスと修正」を読め
あとID出せ
0672nobodyさん2011/10/21(金) 20:10:58.69ID:???
>>669のであってるよ。
'abc'を数値として評価すると0になるという話。んで、これはそういう仕様。
$test[0]の結果が't'となることが理解できないのなら>>671

>>670は頭がおかしい
0673nobodyさん2011/10/21(金) 20:45:49.21ID:???
>>672
ムキになんなよw
「とかそんな感じ 」みたいな曖昧な回答してんじゃねぇ、ってことだよ
0674nobodyさん2011/10/21(金) 21:29:13.44ID:???
確かにわかんない人には不親切だねw
0675672 != 6692011/10/21(金) 23:25:23.91ID:???
>>673
それを>>670で書いてれば最後の行を書いてなかったと思う
06766692011/10/21(金) 23:28:32.72ID:???
直前にID出せよみたいなレスがあったから
ID出してないしちょっと濁した回答にしたんだが
0677nobodyさん2011/10/21(金) 23:41:05.74ID:???
関数がものすごく多くて気が滅入りそうなんだが
phpで飯食ってる奴はどれくらい覚えてるもんなの?

0678nobodyさん2011/10/21(金) 23:44:20.55ID:???
見苦しくなるからもうやめておけ
別に責めているわけじゃない
どうでもいい
0679nobodyさん2011/10/21(金) 23:58:08.27ID:???
>>677
>>678
0680nobodyさん2011/10/22(土) 00:11:37.27ID:???
だな
0681nobodyさん2011/10/22(土) 00:49:28.90ID:???
そうはいかん。この恨みは一生忘れない。
0682nobodyさん2011/10/22(土) 02:39:50.63ID:???
回答もらえないからって訳わからんことつぶやくのはちょっと違うと思うよ
0683nobodyさん2011/10/22(土) 03:01:26.76ID:???
ちょっとしか違わないんなら気にすんな
これが俺様の生き方だ
0684nobodyさん2011/10/22(土) 03:56:02.35ID:f9N011rI
インスタンスを作成する時、そのクラスが無い場合は__autoload()が呼ばれて、外部クラスファイルを読み込む事が出来ますよね
同じように、関数を読み込む時、その関数が無い時、別ファイルをincludeして外部ファイルに記述してある関数を呼び出すにはどうしたらよいのでしょうか
0685nobodyさん2011/10/22(土) 09:30:15.00ID:???
array_mapに渡す関数に引き数渡すのどうやるのでしょうか
0686nobodyさん2011/10/22(土) 09:54:03.65ID:???
>>685
>>1
0687nobodyさん2011/10/22(土) 09:55:53.68ID:???
>>685
>>1
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
0688nobodyさん2011/10/22(土) 18:32:40.58ID:vHH0b5um
685です
大変しつれいしました
0689nobodyさん2011/10/22(土) 19:09:48.59ID:FsQQxDVp
DBテーブルAを操作するclass Aと、
DBテーブルBを操作するclass Bがあります。
コンストラクトで共通のデータベースに接続する処理をいれているのですが、
スクリプト中でAとB両方使う場合、データベース接続処理が2回入り無駄になります。
うまい解決策を教えてください。
0690nobodyさん2011/10/22(土) 20:16:25.32ID:???
お安い御用です。
06916692011/10/22(土) 20:22:13.79ID:???
>>689
DB接続というか問い合わせ関連のクラスを作る
0692nobodyさん2011/10/22(土) 20:22:43.75ID:???
名前消し忘れたがな(´・ω・`)
06936892011/10/22(土) 20:25:06.70ID:FsQQxDVp
>>691
ありがとうございます。
でもそれだとラッパーをわざわざ作るようでどうも非効率かなぁと・・・
0694nobodyさん2011/10/22(土) 20:37:59.36ID:???
>>693
動作の効率を重視するならクラスなんか使うなよ
0695nobodyさん2011/10/22(土) 20:44:04.99ID:???
意味不明だから黙っとけ素人
0696nobodyさん2011/10/22(土) 20:54:29.09ID:???
ならお前が答えてやれよ
クラスなどつかわず手続き型で組むのが最も動作効率が良いのはプログラミングの常識
0697nobodyさん2011/10/22(土) 21:10:54.87ID:???
ラッパー作るのが非効率っていってるのに勝手に暴走してんなよks
0698nobodyさん2011/10/22(土) 21:26:49.17ID:???
>>696
動作効率だけは確かにいいよな
クラスは無駄な処理大杉
0699nobodyさん2011/10/22(土) 21:31:28.49ID:???
singletonパターンがなんかphpには合わないみたいに公式には書いてるけど
こういう時に使うものではないのかな
0700nobodyさん2011/10/22(土) 22:31:12.05ID:???
singletonは関係ありそうで関係ないような
0701nobodyさん2011/10/22(土) 22:46:43.00ID:???
シングルトソってDB接続以外に無理して使うとこある?
0702nobodyさん2011/10/22(土) 22:49:50.52ID:???
>>697
クラスで充分非効率なのにラッパー1個ごときで非効率もクソもないだろ馬鹿
0703nobodyさん2011/10/22(土) 23:42:53.44ID:???
データベース接続処理が2回入りって、別にいいんじゃねーのと。
使う直前につなぐ、終わったらすぐ切る。
0704nobodyさん2011/10/22(土) 23:48:34.52ID:???
シングルトソって言いたいだけだけだから、DB接続で無理して使ってるんだけど、
他にも使ってたりしないと、煽られたときときかに、キリッってできないよな
0705nobodyさん2011/10/23(日) 00:02:55.44ID:???
>>702
バカはお前だ
何をもって「非効率」といってるんだ馬鹿
お前はmysql_connect使うだけのものを
function connect()とかつくってかぶせる阿呆だろ
0706nobodyさん2011/10/23(日) 00:21:27.53ID:???
window7 64bitでapache2.2(32bit) php5.3.8(32bit)は動かせますか?
PC購入で64bitのほうが欲しいのですが動かせない場合は32bitのほうを買います
07077062011/10/23(日) 00:21:53.84ID:46NA/uhd
id出し忘れました
0708nobodyさん2011/10/23(日) 00:55:28.77ID:???
>>705
阿呆はお前だ
何をもって「非効率」じゃないといってるんだ阿呆
お前はmysql_connect使うだけのものを
class connectとかつくってかぶせる馬鹿だろ
0709nobodyさん2011/10/23(日) 01:27:06.66ID:???
オウム返しするやつの反論はやっぱり低レベルだな
何を言いたいのか全く意味がわからんw
0710nobodyさん2011/10/23(日) 01:32:28.10ID:???
全く意味が分からんのなら高レベルすぎるって可能性もあるなw
0711nobodyさん2011/10/23(日) 01:34:07.14ID:???
class connectをつくってかぶせるとか意味不
0712nobodyさん2011/10/23(日) 01:43:59.33ID:???
オウム返ししないやつの反論はやっぱり高レベルだな
何を言いたいのか凄く意味がわかるんw
0713nobodyさん2011/10/23(日) 01:47:05.90ID:???
>>689
質問にまともに答えてもらえなかったからってID消してムキになんなよw
下らねぇ質問には下らねぇ回答しか付かないのさ
0714nobodyさん2011/10/23(日) 02:03:41.77ID:???
馬鹿丸出しでムキになってんのは1人だろ
0715nobodyさん2011/10/23(日) 02:30:57.21ID:???
そうだな。お前一人だけだな。
0716nobodyさん2011/10/23(日) 11:52:53.69ID:???
おはよぉ〜

 PHPプログラマ〜のお姉さんだよぉ〜
 今日はどんな質問が残ってるのかな?
 暇だから質問に答えるよぉ〜
0717nobodyさん2011/10/23(日) 14:30:36.06ID:???
相変わらずここも知恵袋のほうも同じ奴が回答していると思われるからレベル変わらないな
0718nobodyさん2011/10/23(日) 15:52:41.94ID:???
質問の意味を理解しないで適当な回答するアホが多すぎる
■ このスレッドは過去ログ倉庫に格納されています