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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0037nobodyさん2012/07/26(木) 17:21:26.83ID:TjRZ3BtP
>>36
巣に帰れボケ
0038nobodyさん2012/07/26(木) 17:23:13.29ID:???
>>36
>>1
0039nobodyさん2012/07/26(木) 17:30:16.41ID:???
http://kohada.2ch.net/test/read.cgi/php/1168450843/
こっちで教えてやる
0040nobodyさん2012/07/26(木) 18:47:13.02ID:???
正規表現でHTML操作すんのは止めとけ
0041nobodyさん2012/07/26(木) 19:15:35.08ID:???
DOM操作ならまだ許せるが
0042nobodyさん2012/07/26(木) 20:22:09.11ID:???
>>36

> どういう正規表現のコードを書けばいいのでしょうか?

正規表現についての質問ならば、>>39 が書いてるね。
0043nobodyさん2012/07/26(木) 20:37:19.31ID:???
HTMLはタグの対応が取れてなくても表示されたりするから
正規表現で厳密に捉えるのは無理
0044nobodyさん2012/07/26(木) 20:39:28.54ID:???
PHPのDOMパーサーはちょっと使いにくいよな
ちゃんとしたHTMLが前提な感じがする
0045nobodyさん2012/07/26(木) 21:03:14.31ID:???
simpleXMLはクソだけどDOMはそうでもなかったきがする
0046nobodyさん2012/07/26(木) 21:43:09.02ID:???
こちらにはクソ回答者はいませんので大歓迎です!

【PHP】気軽にPHP質問スレ
http://kohada.2ch.net/test/read.cgi/php/1343015189/
0047362012/07/26(木) 22:05:24.63ID:Oe0470hh
>>39は過疎っているのでここで教えて欲しいのですが、、
無理そうなので諦めます。お騒がせしました
0048nobodyさん2012/07/26(木) 22:07:54.28ID:???
あっち行けば教えてやるって言ってるのに
あほだな
まぁ諦めるかどうかは勝手だが
0049nobodyさん2012/07/26(木) 22:08:21.51ID:kczABB77
phpで任意のファイルがアスキーかバイナリか判別することってできますか?
プラットフォームはUNIXです
0050nobodyさん2012/07/26(木) 22:10:16.81ID:TjRZ3BtP
データもそんなにないしDBにデータ保存するの面倒だから、
セッションにデータ保存しといて使おうと思ってます。
でもセキュリティがちょっと心配なので
session_regenerate_id使って毎回セッションIDを変えて、セキュリティを高めようと思うのですが
この方法アリですか?
0051nobodyさん2012/07/26(木) 22:12:09.43ID:???
php6からはis_binaryなる関数があるけどな(どういうのかは不明)
まぁ制御文字があればバイナリって判断でいいんじゃないの
0052nobodyさん2012/07/26(木) 22:12:40.82ID:???
>>50
>>1
0053nobodyさん2012/07/26(木) 22:17:03.88ID:???
毎回セッションIDを変えることでセキュリティが高まる根拠は?
0054nobodyさん2012/07/26(木) 22:17:32.33ID:???
マルチ&態度がデカイ
0055nobodyさん2012/07/26(木) 22:18:42.10ID:TjRZ3BtP
わーったよ
DBつくるよ
ありがとな!
0056492012/07/26(木) 22:23:55.33ID:kczABB77
>>51
バイナリなら必ずぬるぽって入りますかね・・・?
0057nobodyさん2012/07/26(木) 22:24:17.14ID:???
SQLite厨がセッション厨になって再登場
0058nobodyさん2012/07/26(木) 22:26:57.14ID:???
>>57
よく覚えてるな
これからもよろしくな!
0059nobodyさん2012/07/26(木) 22:27:56.63ID:???
次は何厨に?
0060nobodyさん2012/07/26(木) 22:28:28.73ID:???
もうちょっと自分で解決しないとな
聞いてばかりだと時間の無駄になるぞ
本当に躓いた時だけに聞くようにするといい

一般的かどうかとかそういうのは気になるかもしれないが
そういうの考えるのはまずは物ができてからだ
0061nobodyさん2012/07/26(木) 22:32:42.54ID:???
>>56
大きな指標にはなるが完全ではない

http://d.hatena.ne.jp/oooooooo/20050113/p5
0062nobodyさん2012/07/26(木) 22:50:09.05ID:???
finfo使ってみたら
0063492012/07/26(木) 23:00:53.12ID:kczABB77
>>61
ありがとございます。奥深すぎですね
0064nobodyさん2012/07/26(木) 23:22:48.47ID:???
>>60
ダメ出しされてから作り直しの方が時間の無駄だろ
0065nobodyさん2012/07/26(木) 23:30:24.26ID:???
時間の無駄と考えてるならプログラム向いてないからやめたほうがいいわ
0066nobodyさん2012/07/26(木) 23:33:03.18ID:???
お前が向いてないからやめとけ
前もって分かるアンチパターン実践とかアホかと
0067nobodyさん2012/07/26(木) 23:33:20.89ID:???
手間を省くために手間を掛ける、それがプログラミング
0068nobodyさん2012/07/26(木) 23:36:22.51ID:TjRZ3BtP
すいません
セッションってどんなときに使うんですか?
クッキーさえあればログイン処理ってできますよね?
いまいちセッションの使い時がわかりません。
0069nobodyさん2012/07/26(木) 23:43:01.26ID:???
>>68
例えば、ログイン済み状態でどのページにもユーザー名を表示するとする

ページ切り替えのたびに、データベースからユーザー名を検索するのは無駄なので
セッションデータ内にユーザー名をキャッシュしたりする

クッキー内に入れておくと、ユーザーが変更できてしまう

変更されて困るデータや個人情報など重要な情報をクッキーに入れてはいけない
0070nobodyさん2012/07/26(木) 23:43:24.75ID:???
わからないなら必要ないのでしょう
0071nobodyさん2012/07/26(木) 23:46:14.83ID:???
自分で擬似セッションIDを発行してクッキーで管理すればいいじゃんってことだろ?
でも手間じゃん
0072nobodyさん2012/07/26(木) 23:48:23.67ID:???
>>69
なるほど〜!
丁寧に回答していただいてありがとうございます!
0073nobodyさん2012/07/27(金) 01:02:56.40ID:???
PHPでオススメのオブジェクト指向フレームワークを教えてください。
0074732012/07/27(金) 01:04:06.73ID:???
Mojaviということで自己解決しました
0075nobodyさん2012/07/27(金) 01:06:44.81ID:???
メジャーな物から何でもいいから自分で試してみればいい
0076nobodyさん2012/07/27(金) 01:19:09.92ID:???
そんなもんねえよ。
0077nobodyさん2012/07/27(金) 01:31:31.07ID:???
>>73
PHPでtieは使えますか?
0078nobodyさん2012/07/27(金) 01:32:12.56ID:???
PHPでMacアプリは作れますか?
0079nobodyさん2012/07/27(金) 01:51:29.70ID:???
ルールない向こうのスレへ帰れよ
0080nobodyさん2012/07/27(金) 08:11:37.25ID:pwFITbw+
>>69
もう一つ教えてください。
クッキーに重要な情報は入れないことは理解しました。
ではセッションにデータを入れておくのと、DBにデータを入れておくのでは何が違うのでしょうか?
どちらかにセキュリティに問題があるならその危険性をご教授いただきたいです。
0081nobodyさん2012/07/27(金) 09:23:39.58ID:???
セッションデータに入れるのは
・そのユーザーのみに関係するデータ
・本体がデータベースに入っているので、消えても構わないデータ

で、これに上記のユーザー名が該当する
セッションデータは、データベースに入っているユーザー名のキャッシュの役割
Cookieを消した場合など、セッションが消えてもデータベース内のユーザー名は消えない

セッションとデータベースのセキュリティはプログラマー次第
用語を挙げとくので調べなさい
・セッションハイジャック
・SQLインジェクション
http://note.openvista.jp/2008/php-security-memo/
0082nobodyさん2012/07/27(金) 09:56:01.19ID:???
>>81
なるほど〜!
こんな怠け者に何度も回答していただいてありがとうございます!
URLのほうについても熟読させていただきます!
0083nobodyさん2012/07/27(金) 14:12:22.79ID:pwFITbw+
ログインまでは実装できたのですがログインを持続させる方法がわかりません。
例えばニコ動ならブラウザ閉じたりしてもまだニコ動に行けばログインしたままの状態になってますよね?
この実装方法がわかりません。
たぶんクッキーにログイン中である情報を書き込んでいるんだと思いますが、
クッキーにあまり重要な情報は入れられないのでどういう情報をクッキーに残しておくのかわかりません。

単純にPHPSESSIDだけ書き込んでおいて、
セッションが残っていればログイン中であると判断する、みたいな感じでいいんでしょうか?

でもそれだとセッションの有効期限を随時延長しなければなりませんが、
その方法も分かりませんでした。

かなりうざがられてると思いますが、ご回答よろしくお願い致します。
0084nobodyさん2012/07/27(金) 14:28:07.48ID:???
PHPのセッションってめんどくさいな
自分で管理したほうがよさそうだ。
0085nobodyさん2012/07/27(金) 14:35:29.64ID:???
うざいとわかってるなら
本を買って読みなさいよ
ネットで集められる情報なんて切れ端のものばかりだし
本なら体系的に基本から勉強できるよ
0086812012/07/27(金) 14:56:43.17ID:???
キリがない
本を買いなさい
複数買って読み比べるのがベター
0087nobodyさん2012/07/27(金) 15:01:01.79ID:pwFITbw+
もうそのレベルまで来てますかよね・・
ちゃんと俺がやりたいようなこと載ってるかな〜
ありがとうございました
0088nobodyさん2012/07/27(金) 16:28:38.87ID:???
>>87
その程度ならいくらでも載ってるよ。
ただ、カンナを木を削って寸法調整に使うものと勘違いするような
頭の硬さがあると何読んでもアウトだろうけど。
0089nobodyさん2012/07/27(金) 22:12:52.40ID:???
>>81
ユーザーに限定しないデータはどこに入れればよいですか?
0090nobodyさん2012/07/27(金) 22:35:33.49ID:???
>>89
分からないなら本を読みなさい
0091nobodyさん2012/07/27(金) 23:27:44.27ID:???
>>89
そんなに量がなくて複雑なもんでなければテキストファイルにでも入れときなさい
0092nobodyさん2012/07/27(金) 23:40:33.05ID:???
回答者のみなさま、こんばんは!
0093nobodyさん2012/07/27(金) 23:52:38.04ID:???
こんばんわ!
0094nobodyさん2012/07/28(土) 00:05:04.16ID:???
最高ですかーーー\(^o^)/
0095nobodyさん2012/07/28(土) 00:17:31.05ID:???
最高でぇーーーーす!
0096nobodyさん2012/07/28(土) 14:41:41.60ID:???
回答者のみなさま、こんにちは!
0097nobodyさん2012/07/28(土) 15:15:10.43ID:???
こんにちわ!
0098nobodyさん2012/07/28(土) 15:24:37.93ID:esfgE5V2
漢字をひらがなに変えて返すようなことってできますかね?
完璧は無理だと思うので出来るだけ意味がわかる程度に変換されればよいのですが
なんか関数あったら教えて下さい
0099nobodyさん2012/07/28(土) 15:32:33.89ID:???
>>98
まず、漢字とひらがなの対応表を用意します
0100982012/07/28(土) 15:34:26.87ID:esfgE5V2
>>99
用意したら使えるものがあるんですか?

用意する必要がないとよいのですがやっぱきついのかな?
専鯖なので標準バンドルじゃなくても全然いいです
0101nobodyさん2012/07/28(土) 15:36:51.91ID:???
phpにできないことはない
0102nobodyさん2012/07/28(土) 15:37:23.86ID:???
kakasi
0103nobodyさん2012/07/28(土) 15:38:58.25ID:???
>>100
用意すればできるに決まってるだろ
PHPerには馬鹿しかいないな
0104982012/07/28(土) 15:46:55.77ID:esfgE5V2
>>102
これはよさそうですね
PHPのモジュールが用意されてないようなのでちょっと残念ですが
(探せばありそうですが)
この部分だけPerlでやるのもいいですが
コンソールで使えるみたいなのでPHPでもいけそうですね

どうもありがとうございました
0105nobodyさん2012/07/28(土) 15:49:41.74ID:???
http://developer.yahoo.co.jp/webapi/jlp/
0106982012/07/28(土) 15:57:42.03ID:esfgE5V2
>>105
こういう類のものは通信コストがかかってレスポンスが返ってこない危険性があるのと
使用回数の上限がある可能性があるので出来れば避けたいところです

ご紹介ありがとうございました
0107nobodyさん2012/07/28(土) 16:03:11.87ID:???
>>106
本日の串メニューとおしながら使い切らないようにすればよくね?
0108nobodyさん2012/07/28(土) 18:11:15.75ID:3yuInUep
<?php

echo "aaa";
return
?>

<!doctype・・・・


ってhtmlを書く前にPHPのコードを書く場合ってよくあると思いますが、
phpのコード内でreturnするとそこで出力がとまってしまって下のhtmlが出力されません。
でもエラーが発生したときはphpの処理を途中で止める必要があるのでreturnは外せないんですが、
止めつつもhtmlを出力するにはどうすればいいんでしょうか?
0109nobodyさん2012/07/28(土) 18:17:18.02ID:???
returnする前に残りのhtmlを出力する
0110nobodyさん2012/07/28(土) 18:21:56.71ID:???
phpをやめる
0111nobodyさん2012/07/28(土) 18:23:10.15ID:???
もうちょっと簡単な回答ないですかね
0112nobodyさん2012/07/28(土) 18:23:56.21ID:3yuInUep
もうちょっと簡単な回答ないですかね?
htmlはphpのコードより後ろに書いてるんで無理です
0113nobodyさん2012/07/28(土) 18:30:40.17ID:???
なんで無理と決めつけるの?
phpで出力すればいいだけでしょ

初心者のうちは仕方ないけど
そもそもそういう構造になること自体がおかしいんだよ
0114nobodyさん2012/07/28(土) 18:32:50.62ID:???
関数化すれば?
0115nobodyさん2012/07/28(土) 18:36:38.86ID:3yuInUep
関数化してみるわ
めんどくせ
サンキュな
0116nobodyさん2012/07/28(土) 18:39:47.46ID:???
>>112
phpをやめろ
0117nobodyさん2012/07/28(土) 18:44:40.42ID:???
いいこと教えてやろうと思ったけど
なんか態度がでかいからやめた
0118nobodyさん2012/07/28(土) 18:51:32.58ID:3yuInUep
ああああああああごめんなさい
私が悪かったです
よかったら教えてください
お願いします!
0119nobodyさん2012/07/28(土) 18:53:43.17ID:???
でも教えたらまた態度がでかくなるんでしょう?
0120nobodyさん2012/07/28(土) 18:58:53.72ID:3yuInUep
態度がでかくなるのはストレス発散です
心の中では本当に感謝してます
とりあえず関数化してみますわ
0121nobodyさん2012/07/28(土) 19:01:27.21ID:???
そりゃストレス発散場所まちごうとるわ

return

header('Location: error.php');
0122nobodyさん2012/07/28(土) 19:06:33.49ID:3yuInUep
>>121
え?
これじゃerror.phpに移動しちゃって下のhtmlは出力されない気が・・
ちょっとやってみます
あざっす!
0123nobodyさん2012/07/28(土) 19:09:06.12ID:???
いや、全部そっちで出力したらって言いたかったんだけど
それか同じスクリプトで後ろに?error=1とかつけて
getで処理わけたり
0124nobodyさん2012/07/28(土) 19:11:46.01ID:3yuInUep
あ、そういうことですね。
そういえばパラメータも使えましたね
どうもイライラしてると何も思いつかなくって。
本当にありがとうございました
0125nobodyさん2012/07/28(土) 20:01:23.66ID:???
>>108
<?php
...

//return
goto end;
...

end:
?>
<!doctype ...
0126nobodyさん2012/07/28(土) 20:02:05.42ID:KrNBno09
セキュリティについて質問です。

画像をアップロードする機能を作りました。
(記事ナンバー).jpg というような 形式で
ファイルがどんどんアップロードされるようにしています。

ここで、ひとつ思ったのが
アドオンのwebDeveloper 等で、hiddenの値を操作することができますが
hidden の値を変えて つまり(記事ナンバー) の値を変えて
本来 01.jpg とアップされるところを 04.jpg 等と自由に変えられて
しまうことはないのか? ということです。
というか実際やってみたら変えれました。

そしてすでにある (記事ナンバー)にすると上書きされてしまいました。
つまり、過去にすでにアップされた画像を
全く別の画像に書き換えれてしまうということです。

この問題に対してなにかしらどのようなセキュリティ対策が考えられるでしょうか?

ちなみに、画像の上書き保存をできないようにするのは
画像を表示する側の仕様上あまりしたくありません。
0127nobodyさん2012/07/28(土) 20:04:53.62ID:3yuInUep
>>125
goto文ってPHP5.4ぐらいからじゃないと使えませんよね?
ったく関数は良いのたくさんあるのにgoto文がいままでなかったってどういうこったよ
まあgoto文はプログラマをダメにすると思うがな
2重ループとかを抜けるときだけ使えばいいけどな
0128nobodyさん2012/07/28(土) 20:05:48.13ID:???
>>126
クライアント任せにしないでサーバ側でリネームして下さい
連番にしてどっかに最終番号の情報もっておいて
それに+1した名前をつけるとか
アップロードを受け付けた時点のmicrotimeにsalt加えたものをハッシュ化したものを名前にするとか
0129nobodyさん2012/07/28(土) 20:15:44.56ID:KrNBno09
>>128
ということは、保存時のファイル名を<img src="">記述時、
再び呼び出すためにデータベースに保存しないとダメですね。

うーん、やっぱデータベースがいるか。





0130nobodyさん2012/07/28(土) 20:22:48.36ID:???
>>126
既に出てるように、クライアントを信用するのが最も危険
0131nobodyさん2012/07/28(土) 20:23:21.57ID:???
連番の管理程度ならファイルで十分
ちゃんとロックして整合性保たせることだけ注意

>アップロードを受け付けた時点のmicrotimeにsalt加えたものをハッシュ化したものを名前にする
この手法じゃそもそもいらないけどね

サーバ側に同名のファイル名があったら
なんか適当な文字を加えてリネームする
ってのを重複しないまで繰り返すとか

まぁ方法はいろいろあるがとりあえずクライアント任せにはしない
0132nobodyさん2012/07/28(土) 20:31:56.48ID:KrNBno09
>>131
回答ありがとうございます。

一応、使用してるフレームワーク(codeigniter)に
同じ名前が存在した場合、上書きを許さない機能がついてるんですが、
そうなると、ハードコーディングじゃなくてで、画像のURLを書きたい場合
どないして呼び出すねん っちゅう話やねん。

なんです。
0133nobodyさん2012/07/28(土) 20:44:34.80ID:???
ユニークなIDが欲しいなら
UUIDを使えばいいだけ。

自分でコード作るな。

>アップロードを受け付けた時点のmicrotimeにsalt加えたものをハッシュ化したものを名前にする
microtimeが同じなら、salt加えてハッシュ化しても
microtimeの値をそのまま使っても同じだろ。
0134nobodyさん2012/07/28(土) 21:00:52.86ID:KrNBno09
>>答えてくだった方々

回答有り難うございます。

以下のロジックで作成することにしました

画像 アップロード

[アップロード時の、ID]+[microtim].jpg

同時にデータベースにファイル名をインサート

<img src="<?= $row['ファイル名'] ?>"> でよびだし
0135nobodyさん2012/07/28(土) 21:10:38.71ID:???
>>133
saltってなんのことかわかってんの?
0136nobodyさん2012/07/28(土) 21:15:32.99ID:???
げんざいぐぐっています
しばらくおまちください
■ このスレッドは過去ログ倉庫に格納されています