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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2012/01/20(金) 05:43:23.62ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0878nobodyさん2012/02/23(木) 00:42:33.05ID:???
>>877
パス間違ってるとかパーミッションがマズイとか。
ちょっと情報少なすぎ。
warningかnoticeも出てないの?
08795532012/02/23(木) 01:24:46.92ID:???
含まれていないんだから、読み込まれないのは問題無いだろw
0880nobodyさん2012/02/23(木) 02:36:14.38ID:???
CakePHPは重いですね
0881nobodyさん2012/02/23(木) 02:52:55.61ID:???
マシンパワーアップしようぜ
i7っでサックサクにしようぜ
0882nobodyさん2012/02/23(木) 07:04:30.49ID:???
>>879
ん?
0883nobodyさん2012/02/23(木) 11:23:14.79ID:???
>>880
同意。WordPressも激重。
0884nobodyさん2012/02/23(木) 11:28:18.18ID:???
スレチ
0885nobodyさん2012/02/23(木) 11:29:42.88ID:???
チッ
0886nobodyさん2012/02/23(木) 11:35:04.06ID:GMJguUp1
セッションを利用したログイン認証について質問です。
ログインページでは、ID(メアド)とパスワードの一致をもって、認証OKとしています。
その後、各ページでは何をもって認証OKとすれば良いのでしょうか?

入門書では、
1.ログイン時に、各ユーザー情報をセッションに保持し、各ページでは、それがあれば認証OKとする。
2.ログイン時に、暗号化した認証キーを作成してセッションに保持し、各ページで再度、認証キーを作成し、セッションの認証キーと照会する。
3.ログイン時に、セッションID(session_id())をセッションに保持し、各ページでは、そのページでのsession_id()と照会する。

などの方法を確認しました。個人的には、1の方法で足りると思うのですが、2や3の方法のほうがセキュリティーは高まるのでしょうか?
0887nobodyさん2012/02/23(木) 12:26:00.63ID:???
ログインフラグだけで十分
08888772012/02/23(木) 13:56:23.63ID:QQ9YytJp
>>878
パスは間違ってないようです パーミッションもちゃんと644になってます
直接関わるwarning・noticeは出ていないようです

情報が少なすぎるとのことなので問題の背景を説明します

レンタルサーバでXOOPSを使いサイトを運用しています
ある日すべてのページが500 Internal Server Errorになるようになりました
"php_flag magic_quotes_gpc Off"とだけ書かれたXOOPS_ROOT_PATH/.htaccessがあったのでこれを削除したところ、
だいたいのページは元通り見られるようになりました

しかし、管理メニューの互換モジュールで
Fatal error: Class 'Legacy_ActionFrame' not found in XOOPS_ROOT_PATH/modules/legacy/admin/index.php
とエラーが発生します
該当する.phpファイルではそのクラスを定義しているXOOPS_ROOT_PATH/modules/legacy/class/ActionFrame.class.phpをrequire_onceしているようなので、
このファイルにでたらめな文字列を書き足してSyntax errorを期待したのですが結果は変わりませんでした
また、require_onceの下にvar_dump(get_included_files());を書き足しても、このファイルは含まれていませんでした
以上にもかかわらず、require_onceの戻り値は1( != FALSE)でした

どうすればこのファイルはrequire_onceで読み込まれるようになるでしょうか?
よろしくお願いします
0889nobodyさん2012/02/23(木) 14:11:01.61ID:???
>>886
どんな入門書読んだのか知らんが、2と3は明らかにおかしなこと言ってるぞ。
もう一回しっかり読め。
セッションとクッキーは別物だということを頭に置いてな。
0890nobodyさん2012/02/23(木) 15:06:37.39ID:pOv6kBFH
smp.tsv
あああ\\t2012.01.23\\tききき\\n
いいい\\t2012.01.23\\tくくく\\n
ううう\\t2012.01.23\\tけけけ\\n
えええ\\t2012.01.22\\tこここ\\n
おおお\\t2012.01.22\\tさささ\\n
かかか\\t2012.01.21\\tししし\\n

今日 = 3
昨日 = 2
一昨日 = 1

このような値を取り出したい場合はどのような手順になるのでしょうか?
よろしくおねがいします。
08918862012/02/23(木) 15:11:52.08ID:AL17q7mx
>>887 889 レスありがとうございます。
3.のコードです。関数化されてます。
これは間違いなのでしょうか?

<?php
##### セッションの開始
function session_idset() {
  session_start();
  $_SESSION['auth'] = session_id();
}

##### セッションのチェック
function session_check() {
  session_start();
  $rtn = TRUE;
  if($_SESSION['auth'] != session_id()) {
    $rtn = FALSE;
  }
  return $rtn;
}
?>
08928862012/02/23(木) 15:23:33.04ID:AL17q7mx
2.のコードです。これもおかしいですか?

//セッションの開始
$_SESSION['login_id'] = $_POST['login_id'] ;
$_SESSION['auth'] = md5($salt . $_POST['login_id']) ;

//セッションの確認
function auth() {
  global $salt;
  if (md5($salt . $_SESSION['login_id']) == $_SESSION['auth'] ) {
    return TRUE;
  } else {
    return FALSE;
  }
}
0893nobodyさん2012/02/23(木) 16:00:34.17ID:???
1〜3は比較する情報が違うだけでやってること同じじゃん
0894nobodyさん2012/02/23(木) 16:26:52.69ID:???
おかしいというか、扉に同じ鍵で開く鍵穴が2つあるみたいなもん。
やるんであれば、例えば、ランダム文字列を生成してクッキーに保存
その文字列をハッシュかけてセッションに保存
確認のときはクッキーのデータにハッシュかけたものとセッションのデータが一致するか
ってやればセッションハイジャックに対して少しは強くなりそう。
0895nobodyさん2012/02/23(木) 16:36:47.58ID:???
>>891
本当にその入門書がその通りに書いているなら今すぐ燃やして他の本から学ぶべきだな

>>894
効果のないものを初心者に教えるな
0896nobodyさん2012/02/23(木) 16:40:30.49ID:???
>>888
requireでは読み込めるってこと?
08978942012/02/23(木) 17:08:07.42ID:???
>>895
何で効果がないのか教えてくれ
0898nobodyさん2012/02/23(木) 17:22:52.85ID:???
>>897
もしかして、セッションファイルを一般ユーザが見られる場所に
保存するシステムを前提に、ローカルユーザからの攻撃対策の話をしてる?
それだと、サーバの設定を見直した方がいいような……
0899nobodyさん2012/02/23(木) 17:29:45.68ID:???
>>897
sidについて触れない時点でハイジャックには何の効果もないんじゃないの?それ
0900nobodyさん2012/02/23(木) 17:31:23.55ID:sgcZLa3B
>>899
セッション固定攻撃に対しては効果があると思うけど。
0901nobodyさん2012/02/23(木) 17:38:14.99ID:???
何で効果があるのか教えてくれ
0902nobodyさん2012/02/23(木) 17:39:09.99ID:???
>>890
一行読んで、\tで分けて、二つ目の要素の日付調べて、該当する日のカウント増やす
09038862012/02/23(木) 17:59:29.91ID:+MEbH08X
1.のコードです。遅れてすみません。
やはり、このシンプルなコードが妥当なのでしょうか?

//$rowにDB取得データ代入済み
// ログイン情報を記録
$_SESSION["login"] = array("user_id" => $row["user_id"]," login_time" => time())

// ログインしているかどうか調べる関数
function is_logined() {
   return isset($_SESSION["login"]);
}
0904nobodyさん2012/02/23(木) 18:09:26.05ID:???
>>890
fgetcsv
array_count_values
09058942012/02/23(木) 18:21:05.98ID:???
>>898
仮にセッションIDが漏れた場合とか想定してるんだけど。
セッションIDだけじゃなくて、発行時のクライアントのチェックとして有効じゃない?
886の対案として出してるだけだから、ベストの方法とは思わんけど。

>>899
論点がぜんぜん違う
0906nobodyさん2012/02/23(木) 18:24:58.57ID:pOv6kBFH
$lines = file($tsv);
for($i = 0; $i < count($lines); $i++){
list(,$day,,)=explode("\t",$lines[$i]);
$today = date("Y.m.d");
$match_tday = preg_match("/$today/",$day);
}

今一歩前へ進めません。次のヒントお願いします。
0907nobodyさん2012/02/23(木) 18:41:27.89ID:???
PHPSESSID決め打ちでそれだけが盗まれたら〜ってこと?
0908nobodyさん2012/02/23(木) 18:42:59.47ID:???
>>900
session_regenerate_id(true)で済む話だろJK…
0909nobodyさん2012/02/23(木) 18:49:26.85ID:???
>>906
$lines = file($tsv);
for($i = 0; $i < count($lines); $i++){
list(,$days[],,)=str_getcsv($lines[$i],"\t");
}
print_r(array_count_values($days));
09108772012/02/23(木) 20:38:51.67ID:QQ9YytJp
>>896
試してみました
requireに書き換えると、多少崩れたページが表示され、
Fatal errorではなくなりました
0911nobodyさん2012/02/23(木) 20:40:13.32ID:???
session_registerって使っちゃまずいらしいけど
じゃあ代わりに何を使えばいいの?
0912nobodyさん2012/02/23(木) 20:54:09.81ID:???
>>911
非推奨なのを知ってるということは
マニュアルを途中まで読んだな?
もっと下まで読めば書いてあるだろw
0913nobodyさん2012/02/23(木) 20:57:03.04ID:???
最近は、ID出さなくても答えて貰える様になったのか。
これがゆとりか。
0914nobodyさん2012/02/23(木) 21:00:17.68ID:???
回答しない自治気取り君お疲れ様です。
俺、アンタみたいな人嫌いですw
0915nobodyさん2012/02/23(木) 21:10:37.40ID:???
お前が言うな
0916nobodyさん2012/02/23(木) 21:44:28.17ID:P+2F5uLF
正規表現で既に取得しているものは取らない方法はありますか?

<?php
$data=
ABCDABCD;
$match='/A|B/';
preg_match_all($match, $data, $matches[0]);
print_r($matches[0]);
?>

結果
Array ( [0] => Array ( [0] => A [1] => B [2] => A [3] => B ) )

これを、AとBをそれぞれ一つだけ取得したいです。 1回取得したものと同一のものは取得しない方法はありませんか?
preg_matchを2回使うと一応できるのですが、それだと

結果
Array ( [0] => A )
Array ( [0] => B )

このようにそれぞれ別になってしまいます。
何かやり方はないでしょうか?
0917nobodyさん2012/02/23(木) 22:13:07.95ID:???
print_r(array_keys(array_flip($matches[0][0])));

print_r(array_unique($matches[0][0]));
0918nobodyさん2012/02/23(木) 22:28:16.08ID:???
>>913
主気取り乙。ずっとこんなところにばかりいないで他いくといいとおもう
0919nobodyさん2012/02/23(木) 22:44:37.14ID:???
自己紹介おつ
0920nobodyさん2012/02/23(木) 22:48:53.56ID:???
>>866です。レスありがとうございました。
>>894さんの「おかしいというか、扉に同じ鍵で開く鍵穴が2つあるみたいなもん」
というご指摘で、2.3.のおかしな点がよく理解できました。

ランダム文字列クッキーを認証に利用する方法は、自分も考えたのですが、
XSSでJSによりクッキーを盗まれる場合には、セッションクッキーとともに
そのランダムクッキーも盗まれるので効果が無いと思いました。
また、セッション固定化攻撃には、>>908 さんのいうsession_regenerate_id(true)が
適切だと考えます。それとともに、php.ini、.htaccessでセッション付きリンクを
使用不可にするのがよいのかなと。
0921nobodyさん2012/02/23(木) 22:51:08.67ID:???
>>920
スレのルールは守ろうな
09228862012/02/23(木) 23:14:53.15ID:NC9JkONA
>>921 失礼しました。>>920 は886です。
0923nobodyさん2012/02/23(木) 23:58:21.36ID:P+2F5uLF
>>917ありがとうございます、できました。
0924nobodyさん2012/02/24(金) 00:05:55.32ID:???
ルール厨うぜー
0925nobodyさん2012/02/24(金) 00:12:55.29ID:???
>>924
スレのルールは守ろうな
0926nobodyさん2012/02/24(金) 00:25:39.45ID:???
おまえがいうな
0927nobodyさん2012/02/24(金) 07:08:08.38ID:???
守ってるじゃん
0928nobodyさん2012/02/24(金) 08:26:18.43ID:???
>>894
それ意味ないじゃん
ハッシュ化したところでクライアントの情報(そのハッシュ化したランダムな文字列)が盗まれれば意味がない
あとその処理自体にセッションハイジャックに強くなる要素が見当たらない

サーバ側でセッションハイジャックされないような対策を考える場合XSSだけに気をつければいい
結局ハイジャックされるかどうかはクライアント側の行動次第
リンクにセッション情報を含めないほうがいいのはクライアント側の行動次第では漏れる可能性が高いから
クライアント側がそれなりの知識を持ってるならリンクにセッション情報を含めても問題ない
0929nobodyさん2012/02/24(金) 08:36:25.74ID:???
>>873
自己解決しますた。
telnetじゃムリでした。
<? phpinfo(); ?>がスルーされたのがそもそもの発端だったんだけど、5.3.8と5.2.13ではshort_open_tagが違うんですね。
pukiwikiとかwordpressって律儀に<?php 〜 ?>ってやってるのかな?
09308942012/02/24(金) 09:27:38.22ID:???
>>928
前半の
>>ハッシュ化したところでクライアントの情報(そのハッシュ化したランダムな文字列)が盗まれれば意味がない
に関しては同意だけど、セッションIDとクライアントの情報を合わせて
盗まれなければ意味があるじゃん。
セッションIDだけ盗まれるってケースは意外とあると思うぞ。
>>920の言うようにクッキーまるごと盗まれたらしょうがないけど。

後半は同意できない。
0931nobodyさん2012/02/24(金) 09:38:18.08ID:???
実質的にセッションIDが漏れるってことはクッキーが漏れることと同義だろ
どこの実装もほぼ100%クッキーでやってるんだから
0932nobodyさん2012/02/24(金) 10:29:02.94ID:BAbDqRA5
eclipse3.7のphpで開発しているのですが、CVSからファイルを持ってきた時に文字化けをしてしまいます。
その為、使用するファイル(Sfit-JIS)を一つずつ選択し、プロパティーから文字化けしないUTF-8に変換しているのですが、
一括ですべてUTF-8にする方法はあるのでしょうか。
使用するフォルダ選択⇒プロパティー⇒リソース⇒テキスト・ファイルのエンコードから修正しても
だめでした。
0933nobodyさん2012/02/24(金) 11:10:06.07ID:???
>>930
それ同じこと思った。
なんでクッキーとセッションが別腹的な考え方なんだろ。
素人の俺にはわからん。
TLSかけるなりしてクライアントとPCの通信の盗聴防がなきゃ意味ない気が。
0934nobodyさん2012/02/24(金) 11:18:03.05ID:???
最新式の複雑な鍵を使ったとしても、
鍵盗まれたら困るってことの対策にはならんもんね。
09358772012/02/24(金) 12:51:09.28ID:i01HfJfE
>>877,888,910です
解決策ありませんか?
0936nobodyさん2012/02/24(金) 14:00:59.55ID:???
>>935
requireで読めたんならそれでいいだろ
2回以上読み込むファイルをrequire_onceで読み込むのがおかしい
0937nobodyさん2012/02/24(金) 17:03:51.32ID:???
>>932
>使用するフォルダ選択⇒プロパティー⇒リソース⇒テキスト・ファイルのエンコードから修正しても
だめでした。
それエクリプスの設定をUTFにしてるだけだし…

PHPでそのPHPファイルをfile_get_contentsで読み込んでエンコード変えて同じファイルに書き出すくらいじゃね?
0938nobodyさん2012/02/24(金) 18:34:59.75ID:???
0939nobodyさん2012/02/24(金) 20:44:15.85ID:???
>>929
毎回<?php って書いてるよ。
<?= とか便利かもって思ったこともあったけど、それが便利だと思える場面に遭遇しなくなった
0940nobodyさん2012/02/24(金) 20:51:14.32ID:???
コードアシストで解決
0941nobodyさん2012/02/24(金) 22:22:57.58ID:???
>>932
nkf使うとか。
0942nobodyさん2012/02/24(金) 23:20:35.88ID:???
$file_name="p/1.html"となってる時、
p/の部分だけを取り除いて、
$file_name2="1.html"とすることはphpでは可能ですか?
0943nobodyさん2012/02/24(金) 23:23:49.74ID:gMrEIIb2
$file_name="p/1.html"となってる時、
p/の部分だけを取り除いて、
$file_name2="1.html"とすることはphpでは可能ですか?


すいません、上げてました。
0944nobodyさん2012/02/24(金) 23:34:42.08ID:???
>>943
basename()がある
0945nobodyさん2012/02/24(金) 23:34:43.65ID:???
実際はディレクトリをのぞいてファイル名だけにしたいとかなんだろうけど
そんな質問の仕方だと
substrで三文字目以降を切り出せとか
p/を空文字に置き換えろとかいう答えが返ってくるぞ
09468772012/02/24(金) 23:48:54.24ID:i01HfJfE
>>936
requireで読むとFatal errorはなくなりますが、ページの表示が正常ではありません
2回以上読まれるかどうかは未検証ですが、
require_onceの前後のどちらでも、get_included_files()に該当するファイルが含まれないのは問題だと思います
0947nobodyさん2012/02/24(金) 23:51:09.90ID:kLSGsgF4
phpから現在動いているmtaが何か取得する方法ってありますか?
sendmailか否かさえ分かればいいのですが。
0948nobodyさん2012/02/24(金) 23:54:48.93ID:gMrEIIb2
>>944
ありがとうございました。
>>945
そうです、ディレクトリ名だけとっぱらいたかったんです。
なんか、適当に作ってたら、mysqlに入れた値が"p/1234.html"
となっていたんです。これはこれで表示されないデータなら
扱いやすいのですが、表示されるデータにディレクトリ名って
欲しいのか?という疑問にぶつかりました。basename()って便利な
関数ですね。
0949nobodyさん2012/02/25(土) 00:21:03.84ID:???
>>946
requireで読めて、require_onceで読めないファイルがあるってことだよね。
それがわかっているなら後は何が原因なのか、どんどんコードを削っていけばたどり着くと思うんだけど
0950nobodyさん2012/02/25(土) 00:55:13.78ID:???
>>947
Linuxなら、exec関数で "ps ax | grep sendmail" を実行して、その出力をチェックする
0951nobodyさん2012/02/25(土) 01:14:42.48ID:a/GXX7hd
メールを連続で送信する場合、マニュアルには、

>mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。
>この関数は 1 通のメールを送信するたびに SMTP ソケットをいったん閉じて開きなおします。これは非効率的です。
>大量のメールを送信する場合は、 ≫ PEAR::Mail および ≫ PEAR::Mail_Queue パッケージを参照ください。

と記述してありますが、PEARを使いたくない場合、
ソケット関数で自分でSMTP処理を書くしか無いですよね?
0952nobodyさん2012/02/25(土) 02:43:21.75ID:???
実現できる方法でどうぞ。
「しか無い」ってのはよほどのことが無い限り無いと思ったほうが。
0953nobodyさん2012/02/25(土) 02:47:59.67ID:???
PEAR::Mail および PEAR::Mail_Queue で必要な箇所を参考・コピペする。
0954nobodyさん2012/02/25(土) 18:02:10.27ID:???
>>912
session_register()使う代わりに
$_SESSION に値をぶっこむのね
ありがとう!
0955nobodyさん2012/02/25(土) 18:56:47.63ID:1lZdYX8R
たとえばですが、
wire.jpというサイトがあります。
内容的には好きなんですが、相当重いサイトです。
こういったPHPで作られたサイトのパフォーマンスを
上げるためにはどうしたらよろしいでしょうか?
0956nobodyさん2012/02/25(土) 19:08:41.43ID:???
キャッシュでも作れば?
0957nobodyさん2012/02/25(土) 19:09:58.04ID:r6BFdbus
RSSからforeachで値を取得したのですが、それをループの外で一つの変数として扱いたいのですが、どうしたらいいでしょうか?

<?php
$array=array(1,2,3,4,5,);
foreach ($array as $value) {
$a=$value;
}
echo $a;
?>

例えばこのようにすると、当たり前ですが結果はループで上書きされて5と表示されます。
foreachで取得したものを一つの変数に入れることは出来ませんか?
0958nobodyさん2012/02/25(土) 19:25:22.22ID:???
>>957
よく分からんけど仮に3つ目の値が取りたいなら
echo $array[2];
0959nobodyさん2012/02/25(土) 19:53:18.83ID:???
>>957

print_r($array);
して表示結果を見てみなはれ

その上で$array[x] ←xのところに対応した数字をいれる。
で出てくる。
0960nobodyさん2012/02/25(土) 20:48:35.56ID:???
$a=$value;を $a[] = $value;
0961nobodyさん2012/02/25(土) 21:26:32.82ID:r6BFdbus
>>960ありがとうございます。
0962nobodyさん2012/02/26(日) 00:47:29.55ID:???
いいってことよ
0963nobodyさん2012/02/26(日) 00:48:27.77ID:???
ほい
0964nobodyさん2012/02/26(日) 00:52:26.79ID:nCX4lbdW
>>956
キャッシュとはどのようなキャッシュですか?
0965nobodyさん2012/02/26(日) 01:35:13.43ID:nCX4lbdW
キャッシュとは言語レベルのサポートですか?

wire.jpはWordPressみたいですから
WP Super Cacheプラグインみたいなプログラムレベルの
キャッシュのことを意味していますか?
0966nobodyさん2012/02/26(日) 01:42:08.72ID:???
( >д<)、;'.・ キャッシュン
0967nobodyさん2012/02/26(日) 01:47:59.96ID:nCX4lbdW
>>956
例としてあげてwired.jpはW3 Total Cacheが入っているようです。
それでも遅い場合はどうしたらよろしいのでしょうか?
0968nobodyさん2012/02/26(日) 01:48:34.31ID:???
>>966
bless you
0969nobodyさん2012/02/26(日) 01:53:36.51ID:???
Thank you!
0970nobodyさん2012/02/26(日) 01:58:30.12ID:???
phpでデータベースを扱うには、何かと方法がありますが
エクセルのシートで外部参照するみたいに、この列はこっちの
データベースから引っ張って、この列はこっちから
というように複数のデータベースから情報を引っ張って
統合して表示、または登録変更をするためには、どんな
方法を使うのが最も適しているのでしょうか?
0971nobodyさん2012/02/26(日) 02:07:02.73ID:???
>>967
オーバークロックしかないな
0972nobodyさん2012/02/26(日) 02:16:44.23ID:oisclph1
質問させてください。
自動返信メールの内容に値を持たせたいんですが
値の入っていないものは表示させないようにしたいです。

<?php
$MESSAGE = "
注文がありました。

商品    個数
[[りんご]]  [[1]]
[[みかん]]  [[0]]
[[ぶどう]]  [[3]]
";?>

実行すると

りんご1個
ーー(みかんの注文が0なので表示されず空白だけできてしまう)ーー
ぶどう3個

というメールが来てしまうで、みかんの部分を上に詰めさせたいです。

メールが来る仕組みなどは人がしたものなのでよく分かってません。
よろしくお願いします。
0973nobodyさん2012/02/26(日) 03:04:07.86ID:???
>>972
$cart=array("りんご"=>"1","みかん"=>"0","ぶどう"=>"3")

$MESSAGE = "注文がありました。\n\n商品    個数\n"
foreach($cart as $key => $val){
  if ($val>0){                          //$valが0以下の時は処理しない
    $MESSAGE.="[[$key]] [[$val]] \n"
  }
}

備考 POST情報はクライアント側で詐称できるので 値段を表示させる場合はPOSTさせないでDBに取りに行ったほうがいいと思うよ
0974nobodyさん2012/02/26(日) 03:34:02.05ID:oyzRHeH9
俺は自分でも結構オブジェクト指向イケてるんじゃないかと思ってたんだが、
今日クラスを作成していたときにクラス名に悩んで、
候補のものをググってたら、C#の同名のクラスが出てきたんだ。
どんなメソッドがあるのかな?とチラっとみてみたら、
俺がクラスに含める予定だった処理が別クラスで処理されていた。
徹底的に細かくオブジェクトを分けていることに俺はショックを受けて絶望した。
これが本当のオブジェクト指向なのかと。
自信が一気になくなった俺はこれからやっていけるでしょうか?
0975nobodyさん2012/02/26(日) 04:34:33.44ID:???
細かく分けることがオブジェクト指向・・・?
0976sage2012/02/26(日) 09:48:27.16ID:???
>>974
そもそも論として
phpでオブジェクト指向実装は後付けの中途半端だし、
最適化されていないのでパフォーマンス悪いよ。

それだったらJava、C#みたいな強制的オブジェクト指向言語で
勉強して方がいい。他の言語で役に立つから。
0977sage2012/02/26(日) 09:49:49.71ID:???
>>975
PHPerから見ると、
オブジェクト指向言語のクラス設計はすべてが細かく見えるかと。
レス数が950を超えています。1000を超えると書き込みができなくなります。