トップページphp
1002コメント362KB

PHP質問・雑談スレ【初心者お断り(ROM歓迎)】©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net2016/04/22(金) 08:58:11.47ID:???
PHP関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。

PHP未導入の方や、手取り足取りが必要な初心者の方はくだスレへどうぞ。
【PHP】下らねぇ質問はここに書き込みやがれ 4
http://echo.2ch.net/test/read.cgi/tech/1457792733/

その他リンク
・PHPマニュアル
 https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
 http://ideone.com/
・プログラミングのお題スレ Part8 (求PHPer参戦)
 http://echo.2ch.net/test/read.cgi/tech/1444216746/

このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
 (FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼

このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
 (HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0112nobodyさん2016/07/26(火) 11:50:37.27ID:???
>>111
> なわけないじゃん。
なわけないじゃん。

> ログファイルは問題が起きた時に原因を調べるため
なのだから、ユーザの入力データが元でエラーが発生したのなら、その内容を保存するしか
あとから検証することは不可能。

> 暗号化もしてないただのテキストファイルに一切合切記録してます、
読める人が限定されてるなら問題ないね。

> 全然知らないマイナーな店で買い物する時、
> 自前でクレジット決済してるようなとこでお前はクレジットカード情報入力してるの?
> 普通は決済代行サービス使ってなきゃ代引きとかにするんじゃないか?
話が変わってるな。
自システムの入力にクレジットカード番号があり、その入力データが元でエラーが発生したなら、
それを保存しておく必要がある。
0113nobodyさん2016/07/26(火) 13:22:03.73ID:???
エラーログを暗号化すれば?
0114nobodyさん2016/07/26(火) 14:37:44.59ID:???
ログを盗まれる状況なら鍵も盗まれるだろ
0115nobodyさん2016/07/26(火) 16:14:37.96ID:???
public_key.public_encrypt(log)とかすれば?
で、秘密鍵は複雑なパスフレーズ
(そして、監視系でパースできなくなる)
0116nobodyさん2016/07/26(火) 16:57:25.88ID:???
公開鍵暗号は重いからログ出力に直接使うのは適さないと思う。
0117nobodyさん2016/07/26(火) 17:21:21.13ID:???
エラーログの話
0118nobodyさん2016/07/26(火) 18:35:51.05ID:???
ログを盗まれる状況なら公開鍵も差し替えられる
01191122016/07/27(水) 15:45:47.15ID:???
あのさ、なんか脳みそ腐ってる人が多いみたいだけど、
エラーの原因調べるのにいちいち複合して調べるのか、お前らは?

マトモな奴は >>117 だけだな。さすが2chだ。馬鹿しかいない。
0120nobodyさん2016/07/27(水) 15:47:16.29ID:???
復号 の間違いだけど、お前らには誤字で十分だな。
0121nobodyさん2016/07/27(水) 15:52:15.81ID:???
もう一つ、分かってねーみたいだから言っとくけど、
ログにクレジットカード番号とか記録するなって言ってるのは、
「敵は外にいるとは限らない」からだぞ。

お前らみたいな馬鹿に見られたら、ベネッセみたいになりかねねぇだろ。
だからマトモなシステムでは、そんなとこに秘匿情報は記録しねぇよ。
0122nobodyさん2016/07/27(水) 15:58:50.74ID:???
>>119
古いログは圧縮されてるからzlessで見たりするけど
その延長のノリでならイエスかなぁ
0123nobodyさん2016/07/27(水) 16:01:19.35ID:???
>>121
まあログに個人情報を書くと個人情報保護法が面倒だから
おれはログには個人情報は書かないかな

プログラム内のデバッグ用の細かい情報は生でもりもり書くから
それみられるのも恥ずかしいので暗号化くらいはしてもいいと思う
0124nobodyさん2016/07/27(水) 17:26:21.33ID:???
>>121
> だからマトモなシステムでは、そんなとこに秘匿情報は記録しねぇよ。
そうでもないよ

>>123
> まあログに個人情報を書くと個人情報保護法が面倒だから
全然面倒じゃありませんが
てか、小間個人情報を扱うシステムに携わったことないだろ?
0125nobodyさん2016/07/27(水) 17:31:27.04ID:???
>>121
> もう一つ、分かってねーみたいだから言っとくけど、
> ログにクレジットカード番号とか記録するなって言ってるのは、
> 「敵は外にいるとは限らない」からだぞ。
エラーログの話なんだが

お前の所のエラーログには、秘匿情報が山盛りなのか?
そんな低品質なプロダクトを公開するんじゃねーよ
0126nobodyさん2016/07/27(水) 18:55:05.35ID:???
>>124

お前が関わってるプロジェクトがそうであるかどうかは俺のしったこっちゃない。
一般論の話だ。おまえがどんなゴミクズ触ってようと、知らない。

>>125

おまえ、日本語読めない人? 本当に馬鹿ばっかだな。
0127nobodyさん2016/07/27(水) 18:56:58.55ID:???
とりあえず、>>125 みたいな馬鹿だけは発言出来ないようにしてくんねぇかな?

話が前に進まない。
0128nobodyさん2016/07/28(木) 08:32:23.41ID:???
>>124
あなたみたいなのがパスワード平文でDBに突っ込むんだな
0129nobodyさん2016/07/29(金) 08:02:10.25ID:???
クレジットカード番号保存って、決済代行会社のシステムだよな。
そういう会社の処理ログが、顧客の入力した値を記録しないで成り立つの?
0130nobodyさん2016/07/29(金) 08:36:16.04ID:???
amazonにバッチリクレカ情報のこるで
0131nobodyさん2016/07/29(金) 09:47:50.67ID:???
文盲の >>129 が現れました。仲間にしますか?
0132nobodyさん2016/08/01(月) 11:38:46.41ID:???
エラーログを暗号化するという人は、鍵管理はどうやってるの?
0133nobodyさん2016/08/01(月) 14:21:42.59ID:???
エラーログ暗号化とかどんな機密情報がはいってrんw
0134nobodyさん2016/08/01(月) 16:47:30.92ID:???
>>133
クレジットカード番号とか暗号化してるみたいだよ。
0135nobodyさん2016/08/02(火) 20:44:34.08ID:???
クレジットカード番号をエラーログに書き込むの?
0136nobodyさん2016/08/03(水) 05:52:42.70ID:???
それが必要なら。
0137nobodyさん2016/08/03(水) 07:14:20.85ID:???
必要でもないのにそうしたから、
見れちゃいけないオレが見放題になってるんだけどなw

お前らの「必要だ!」なんか信じてたらWEBで買い物なんかできねーよw
0138nobodyさん2016/08/03(水) 14:04:49.45ID:???
クレカ情報をエラーログに書き込むような基地外システム使いたくないよな
個人特定する情報ならユーザIDでいいし
決済エラーでどのクレカ番号が決済できなかったとかそんなもん管理者が知る必要はないし
どう考えても悪意以外でクレカ情報をエラーログに書き込む必要性を感じない
0139nobodyさん2016/08/03(水) 17:04:25.17ID:???
>>128
ログを暗号化する話とパスワードを平文で保存するかどうかの話には大きな隔たりがあるんだけど、なんで同列の話であるかのようなレスをしたの?
0140nobodyさん2016/08/03(水) 18:14:54.51ID:???
>>138
> どう考えても悪意以外でクレカ情報をエラーログに書き込む必要性を感じない
ユーザの入力間違いが原因かもしれんで
0141nobodyさん2016/08/03(水) 18:19:45.35ID:???
>>138
例えばさ、ユーザから「ちゃんとパスワードを入力してるのにログインできない」とか言われたとき、
パスワードをログに出力しておかないと、本当に正しく入力したのかどうかわからんでしょ

まぁそれを暗号化してログに出力するかどうかは別問題だが
0142nobodyさん2016/08/03(水) 18:33:34.90ID:???
そもそも、決済時に決済と同じトランザクションでクレカ番号を受け取るようなシステムって存在するのか?
そんなシステムみたことないけど。
0143nobodyさん2016/08/03(水) 18:34:56.68ID:???
ログレベルをマックスまで上げたなら パスワードだろうが住所だろうが
全部ログに吐くようにするわな
普段は生でも問題ないレベルにしておくけど
0144nobodyさん2016/08/03(水) 20:02:41.89ID:???
>>140-141
エラーログってのはエラーの内容を特定するために必要なものであって
入力内容をエラーログに書き込むようなことしないでしょ
パスワードが本当に正しいかなんてのは
そんなのパスワードリマインダー使うなり変更して下さいで済む問題で
管理者が知る必要のない情報
0145nobodyさん2016/08/03(水) 20:45:26.54ID:???
「エラー」ログってところに捕らわれてるのかね
0146nobodyさん2016/08/04(木) 04:09:07.48ID:???
質問です。

二次元配列をテキストファイルに行列形式で出力したいです。
fwriteとかfput_outなどで通常の配列は出力していたのですが、二次元配列だと
それができないようで、何か便利な関数や方法があれば教えていただきたいと思います。
よろしくお願い致します。
0147nobodyさん2016/08/04(木) 11:10:02.45ID:???
>>144
> エラーログってのはエラーの内容を特定するために必要なものであって
> 入力内容をエラーログに書き込むようなことしないでしょ
だから、その入力内容が原因でエラーが発生したという場合もあるのだから、入力内容を
ログ出力しておかないと後で調査できないという話なんだが。

> パスワードが本当に正しいかなんてのは
> そんなのパスワードリマインダー使うなり変更して下さいで済む問題で
いや済まない。
まず、ユーザが正しい入力をしたという認識なのだから、原因を特定するのはこちらの責任。
そもそも、ユーザがどうやってパスワードを管理・入力しようが、こちらは関係ないし。
0148nobodyさん2016/08/04(木) 11:11:19.67ID:???
>>146
> それができないようで、
できない。

> 何か便利な関数や方法があれば
ない。

それくらい、自分でコード書け。
0149nobodyさん2016/08/04(木) 12:10:21.37ID:???
>>144
多分 デバッグログ のつもりで書いているんだと思う。

デバッグログには、そりゃあもう何でも書くよ! 何でもだ!
0150nobodyさん2016/08/04(木) 13:17:48.14ID:???
パスワードに関して言えば、データベースに保存するときと同じロジックで変換した結果をログ出力すればいい
それがデータベースの値と異なるとき、
* 過去にそのユーザのログイン実績があるなら、今回はユーザの入力間違い
* 過去にそのユーザのログイン実績がないなら、パスワード登録時にミスったか、今回ミスったかのどちらか
* 微レ存でバグ
0151nobodyさん2016/08/04(木) 17:14:33.17ID:???
>>150
PHPのアップデートでハッシュ関数にバグが入り、極まれな特定の入力でハッシュ値が以前と合わなくなっていた、なんてケースに当たったらどうするよ
0152nobodyさん2016/08/04(木) 17:55:18.33ID:???
>>151
CPUに宇宙線があたって計算ミスが発生することも考えないとね
0153nobodyさん2016/08/04(木) 18:20:22.43ID:???
>>152
実際それは考慮しないといけないかもよ。
入力もロジックも間違ってないことの確証が得られなければ永遠に原因追求させられかねん。
ここには絶対に間違いが無いので別の要因ですと言える証拠は必要。
0154nobodyさん2016/08/04(木) 18:33:56.52ID:???
パスワードを生で出力しとけばOK
0155nobodyさん2016/08/04(木) 19:59:39.18ID:???
>その入力内容が原因でエラーが発生したという場合もあるのだから
欠陥PHPer
0156nobodyさん2016/08/04(木) 22:54:18.36ID:???
テストケース書かないの?
0157nobodyさん2016/08/04(木) 22:57:55.21ID:???
>>147は想定する必要のないことまで想定するタイプなのかな
0158nobodyさん2016/08/05(金) 07:56:52.51ID:???
秘匿情報もログに全部出すべきだって言っちゃって引っ込みつかなくなってるだけだから
もうほっといた方がいいよ。
馬鹿だからプライドが一番大事なんだから、そいういう奴は。
0159nobodyさん2016/08/05(金) 10:55:34.15ID:???
パスワードをログに出しとけば入力エラーなのかどうかすぐにわかるのに、
それをしない奴ってマゾか何かなのか
0160nobodyさん2016/08/05(金) 10:57:27.14ID:???
うちでは、エラーログに$_GET, $_POSTの内容全部出してる
調査楽だし
0161nobodyさん2016/08/05(金) 10:58:43.00ID:???
>>158
> 秘匿情報もログに全部出すべきだって言っちゃって引っ込みつかなくなってるだけだから
俺は逆にログに「出すべきじゃない」って奴のほうが引っ込みつかなくなってるように見えるが
0162nobodyさん2016/08/05(金) 11:30:43.27ID:???
>>159
最近はパスワードをログに出すのは良くないっぽいよ
システムのログでもデフォじゃパスワードっぽいのは *** にされる
おかげで入力ミスかどうかを調査するとき難儀したわ

ログには生の情報出せよ・・・ といつも思うわ
ログレベルで出力絞るのはいいけど、加工すんなや
0163nobodyさん2016/08/05(金) 14:09:14.63ID:???
うちもset_error_handler()で一括ログ出力してるから、個別の事情なんか考えずに
$_GET, $_POST, $_SESSION, $_COOKIE, backtrace
を毎回全部出してるから、ログイン処理で致命的エラーが発生したら、パスワードも出力されるよ。
(E_NOTICE, E_USER_NOTICEはエラーログ出力しないとかはあるけど)

まぁ、エラーログ見られなきゃいいんじゃねーの的な。
0164nobodyさん2016/08/05(金) 14:11:38.28ID:???
何が問題かをプログラム側で調べる努力もせずに
調査楽だという理由にしても秘匿情報そのまま出すとか基地外
0165nobodyさん2016/08/05(金) 14:27:12.27ID:???
>>164
どこに出すかによるだろ
中か、外か、ゴム内かでそれぞれまったくケースが異なるのはわかるよな?
0166nobodyさん2016/08/05(金) 15:43:30.42ID:???
>>164
> 何が問題かをプログラム側で調べる努力もせずに
意味がわからん
0167nobodyさん2016/08/05(金) 17:43:50.33ID:???
>>164
で、君はどうやってるの?
0168nobodyさん2016/08/05(金) 18:36:53.61ID:???
エラーログを見れる権限でログインされるレベルの事象が発生したら、エラーログ内の秘匿情報がどうこういう問題じゃなくなる可能性大
0169nobodyさん2016/08/05(金) 23:23:47.40ID:???
$items = [ [key=>’a’, value=>’va’], [key=>’b’, value=>’vb’]… ]
みたいな連想配列からユニークなvalueの一覧を作成するのってどうするのが一般的でしょうか。

とりあえず思いついているのは以下の通りです。1で大丈夫か心配です。

1. foreach( $items as $item )
if ( ! in_array($item[‘value’], $uniques )
$uniques[] = $item[‘value’]

2. foreach( $items as $item )
if ( ! isset( $item[‘value’], $uniques ))
$uniques[‘$item[‘value’]] = 0; // 0はダミー

3. array_column して array_unique

4. array_flip
0170nobodyさん2016/08/05(金) 23:33:19.70ID:???
>>164が攻撃される意味が分からん
テストケース書けば済む話
0171nobodyさん2016/08/06(土) 08:22:43.60ID:???
>>166
素人は初心者スレいけな
0172nobodyさん2016/08/07(日) 01:59:22.71ID:???
>>169
1でいいけど条件文いれんでも$uniques[$item['value']]+=1;とかにしてarray_keys()とかkey()で取ればいいんじゃねと思う
配列操作はたいていforeachが早いイメージだけど3のやり方も好き
0173nobodyさん2016/08/07(日) 08:54:37.17ID:???
>>172
それが2でしょう。
+=1 する意味は分からんが。
0174nobodyさん2016/08/07(日) 12:35:28.47ID:???
2も条件文入ってるだろう。
重複してれば何個重複してるかわかるし0入れるよりはいいんじゃね。
0175nobodyさん2016/08/07(日) 13:01:13.41ID:???
条件文抜きにして += 1 にするとNOTICE出るようにならない?
2から条件文抜くだけならいいけど。
0176nobodyさん2016/08/07(日) 13:59:05.52ID:???
notice出したくないなら条件文なり三項演算子でやらないとだめだね
01771692016/08/07(日) 15:48:01.41ID:???
レスありがとうございます。
1より2の方が速そうだけども、キーだけが重要な配列は違和感が強く心配だったので意見いただけて助かりました。
集計にもなるって見方はなかった・・・どこかで使わせてもらいます。
0178nobodyさん2016/08/08(月) 09:32:58.64ID:???
>>168
なにいってんのこいつ
0179nobodyさん2016/08/08(月) 14:44:32.91ID:???
>>170
> テストケース書けば済む話
素人は初心者スレいけな
0180nobodyさん2016/08/08(月) 14:54:28.09ID:???
AよりBの方が速いとかいうのは、大抵100万回やって100ms程度違うとかそんなパターンが多い
0181nobodyさん2016/08/08(月) 15:54:57.80ID:???
悔しいやつが1人いるようだ
0182nobodyさん2016/08/08(月) 16:53:05.12ID:???
PHPerには素人しかいないわけだがw
0183nobodyさん2016/08/08(月) 19:07:01.10ID:???
>>178
そいつはいまだに敵は外にしか居ないと思ってる馬鹿だ。ほっとけ。
0184nobodyさん2016/08/12(金) 15:36:43.59ID:???
エラーログにパスワードを出力すると発狂する
0185nobodyさん2016/08/12(金) 17:14:20.68ID:???
$_SESSIONに突っ込む馬鹿もいるな。何に使うんだよ。
0186nobodyさん2016/08/13(土) 00:20:42.61ID:???
いないだろ
さすがにお前らつくり話がすぎるぞwww
0187nobodyさん2016/08/13(土) 11:20:29.98ID:???
$_SESSIONは実話だよ。プログラマ仲間が見た仕事で、流石に呆れてた。
0188nobodyさん2016/08/13(土) 13:46:49.50ID:???
関数定義してんのに、その中身をそのままコピーして各方面で使うバカもいるんだから何が来ても俺は動じない
0189nobodyさん2016/08/13(土) 20:36:20.52ID:???
たぶん188は初心者だったころの本人の体験談だな
0190nobodyさん2016/08/14(日) 05:54:00.76ID:???
全ページのPHPに同じ関数をコピペして定義したとかな
あったあった
0191nobodyさん2016/08/14(日) 13:52:21.17ID:???
もっと高度な馬鹿もいるぞ。

メンバ変数全てにゲッターとセッターを作ってそれ経由で値を出し入れしてるんだが、全メンバ変数 public。

プログラムの方もメチャクチャなんだが、そっちはもう、キチガイすぎて語りきれない。
0192nobodyさん2016/08/14(日) 14:05:05.36ID:???
getter setter自体要らねーだろって代物
0193nobodyさん2016/08/14(日) 14:31:47.30ID:???
全くいらないわけではない。

だが、全部の変数用のgetter、setterを作るのは、間違いなく思考停止した馬鹿。
そういうのは昔のデバッガが貧弱だった時代に妥協策だっただけだ。
0194nobodyさん2016/08/18(木) 13:52:33.66ID:???
cookieにuser_idとpassword(生)が保存されてるんだが
0195nobodyさん2016/08/18(木) 14:05:59.58ID:???
クッキーにパスワードは保存しないなぁ
ユーザーIDは普通に保存するけど
いや普通はセッションIDだけか
あーでもユーザIDくらいならついでに置いとくか
0196nobodyさん2016/08/18(木) 14:28:41.06ID:???
パスワードなんてのは保存するかどうかはブラウザの機能に任せるのが普通で
いちいち再ログインのための仕組みをプログラマー側が用意する必要はないだろ
0197nobodyさん2016/08/18(木) 17:42:27.41ID:???
それ、お前の「普通」だよね
0198nobodyさん2016/08/18(木) 19:50:44.85ID:???
クライアント側にセキュアに保存出来るならいいけどそうでないならブラウザに任せるべきだな
0199nobodyさん2016/08/18(木) 22:40:16.06ID:???
俺は大丈夫ってやつに限っておもらしするからな
いくらクッキーが安全といってもそれを適切に管理できないと凶器でしかない
0200nobodyさん2016/08/19(金) 00:15:57.40ID:???
cookieが安全かどうかはブラウザがhttponlyに対応しているかとXSSを封じているかが関与してくる。
そんなとこにpasswordを入れるかどうか議論したい馬鹿がいるのか?
もっと言うと、自動再ログインにpassword利用する猿がいるのか?
0201nobodyさん2016/08/19(金) 01:32:24.21ID:???
password以外のログインに必要な情報はクライアントが持ってるんだし
それが漏れたら一緒でしょ
0202nobodyさん2016/08/19(金) 01:54:04.00ID:???
えぇ・・・・・?
0203nobodyさん2016/08/19(金) 02:02:30.14ID:???
password以外の(例えばセッション情報等の)ログインに必要な情報は(結局password同様)クライアントが持ってるんだし
それが漏れたら一緒でしょ
0204nobodyさん2016/08/19(金) 03:43:44.27ID:???
正気?
0205nobodyさん2016/08/19(金) 10:46:10.69ID:???
>>203
初心者にもほどがある
0206nobodyさん2016/08/19(金) 12:58:11.17ID:???
PHPしか知らない奴って、この程度の認識なんだろうよ。
0207nobodyさん2016/08/19(金) 13:01:18.67ID:???
どうやら猿は存在したようだな… 実に素晴らしい世界だ。
0208nobodyさん2016/08/19(金) 13:05:46.20ID:???
railsしか知らん奴も似たようなもんだと思うぞ
0209nobodyさん2016/08/19(金) 13:23:55.93ID:???
そもそもパスワード入力させてる時点で、キーロガーやソーシャルハックの可能性もあるし
0210nobodyさん2016/08/19(金) 14:17:27.06ID:???
>>209は「全く話の本質がわかってません」っていう自己紹介だな。
論点がぜんぜん違うよ。
0211nobodyさん2016/08/19(金) 14:27:14.14ID:???
ガラケー用にGETパラメーターでセッションID付けざるを得ない事が昔は良くあったわけだ。

ある会社のWEBサービスが、皆さんよくご存知のセッションフィクセーション脆弱性があって、
その事を報告したら、
「んー、でもこれはガラケーに対応するにはしょうがないですからねぇ」
と言っていて、
『ああ、こいつどうしようもないな…」と思いながら、「まぁ、そうですね」と適当にあしらっておいた。
完全に避けることが出来ないのは事実だけからな。本人が良いって言ってるなら良いんだろう。
そんなサービス、俺は絶対使わないけど。

そのアホ管理職は経由したサーバーにどうしても残ってしまうセッションIDと、
だれかが罠はって仕掛けたセッションIDが受け入れられてしまう問題を同じだと考えている、

わけではなく、全く何がどうなっているのか分かっていない。

>>209の言っていることは、そういうことだ。
■ このスレッドは過去ログ倉庫に格納されています