1 名前:nobodyさん [2009/02/18(水) 21:09:16 ID:xNLzAD7T] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 80 pc11.2ch.net/test/read.cgi/php/1233479457/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
108 名前:nobodyさん mailto:sage [2009/02/19(木) 22:56:12 ID:???] >>105 スレチと思ったが開発環境スレが落ちてるな Eclipseのいいところは、 クラスや関数のアウトライン参照、コンテキストに沿ったコード補完、リファクタリング(まだまだ貧弱だが)、 ブレークポイントやステップ実行、その際の変数参照、 プラグインを導入すればバージョン管理システムやDBMSともIDE上から作業できる これらに興味がなければ無理して乗り換える必要もないかな
109 名前:nobodyさん mailto:sage [2009/02/19(木) 23:01:15 ID:???] DWでもCVSやSVNと接続できるけどな。 PDT使ったら、DWには戻れない。 まぁ、でも、サイトにすぐアップできるとか、いいよね。 でも、コードカラーリング崩れない? > DW
110 名前:nobodyさん mailto:sage [2009/02/20(金) 00:57:08 ID:???] DWはIDEじゃないから比較するものじゃないでしょ 使ったことないから知らないけどデバッガとかついてないでしょ?
111 名前:82 [2009/02/20(金) 01:21:04 ID:w405pQbs] >>86 >>104 ありがとうございます。 あと、たとえば$data[2]はたとえば3645.5218のような数字なのですが 桁を変えて36.455218にしたうえで10進から60進にしたいんです。 度 = int(36.455218) = 36 分 = int(0.455218 * 60) = int(27.31308) = 27 秒 = int(0.31308 * 60 *1000) / 1000 = 18.7848 = 36°27′18.7848″といったような感じにしたいんです。
112 名前:nobodyさん [2009/02/20(金) 01:37:44 ID:r16tK4jF] Smartyの質問なのですが、、PHPと関連するので質問させていただきます。 テンプレートを表示する時 $smarty->display("index.html"); で表示できますが、display()の中を変数にする事って出来ないでしょうか? それが出来たら、DBに保存しているHTMLをSmartyに反映させることが 出来るのですが、$smarty->display($html);とする方法では無理でした。
113 名前:nobodyさん mailto:sage [2009/02/20(金) 02:41:12 ID:???] demiru
114 名前:nobodyさん [2009/02/20(金) 05:22:05 ID:nLAMcH0P] PHPのメモリって勝手に開放されるのですか? デストラクタでunsetとかしないでも大丈夫ですか?
115 名前:nobodyさん mailto:sage [2009/02/20(金) 07:29:32 ID:???] 自動的に開放する。 無闇にunsetすると非効率になることが多いらしい が、処理時間の長いジョブとかの場合は開放した方がいい場合もある
116 名前:nobodyさん mailto:sage [2009/02/20(金) 08:38:58 ID:???] >>112 www.smarty.net/manual/ja/template.resources.php#templates.from.elsewhere これでできないか?
117 名前:nobodyさん mailto:sage [2009/02/20(金) 09:18:57 ID:???] はい? $template = 'index.html'; $smarty->display($template); で普通にできるのでは?
118 名前:nobodyさん [2009/02/20(金) 10:16:20 ID:P+ZCl9Zr] 昨日今日からの初心者です。 <html><body> <?php if(!適用条件) { echo "適用外"; exit;} // 適用条件内 ... ?> </body></html> と書くと適用条件外の場合"</body></html>"が出力しないようなのですが仕様なのでしょうか? その場合回避策としてタグの終りにジャンプとか抜けるみたなことは出来るのでしょうか? (適用条件内を1スコープにして括弧で括る、は出来ればしたくないので…)
119 名前:nobodyさん mailto:sage [2009/02/20(金) 10:29:22 ID:???] >>118 exitじゃなくて、goto ラベル;にしたらいいよ
120 名前:nobodyさん mailto:sage [2009/02/20(金) 10:39:43 ID:???] >>119 5.3以降でしか使えない変な物を教えるな >>118 条件外の時はexitしてるからそれ以降が実行されないので それ以降の</body></html>が出力されない そういう風に書くなら if (適用条件) { 条件内処理 } else { 条件外処理 } にすればいい あと、こっちのスレのがオススメ pc11.2ch.net/test/read.cgi/php/1227303362/
121 名前:nobodyさん mailto:sage [2009/02/20(金) 10:45:06 ID:???] 条件内処理をブロックに入れたくないって言ってるんだから、>>120 は無理でしょ。 せめて、 { echo "適用外</body></html> "; exit;} だな。
122 名前:nobodyさん mailto:sage [2009/02/20(金) 11:05:37 ID:???] 低級者向け:関数化すれ 中級者向け:テンプレエンジン使え 上級者向け:フレームワーク使え
123 名前:nobodyさん mailto:sage [2009/02/20(金) 11:05:49 ID:???] いや、なんでそこでexit使うか分からんな。 >>118 はexit使わなくても問題ないし。
124 名前:nobodyさん [2009/02/20(金) 11:06:54 ID:/aL6hv6c] >>122 逆じゃない?PHPで自分で作れないからフレームワーク使うんだろ?
125 名前:nobodyさん mailto:sage [2009/02/20(金) 11:06:57 ID:???] exitしないと、適用外のときでも、適用内の出力がまざっちまうじゃねぇか
126 名前:nobodyさん mailto:sage [2009/02/20(金) 11:08:20 ID:???] まず、初心者がくくりたくないとかいうわがままを許していいのかってことじゃねぇか。
127 名前:nobodyさん mailto:sage [2009/02/20(金) 11:10:01 ID:???] >>125 適用外のときは別途処理すればよくね?
128 名前:nobodyさん mailto:sage [2009/02/20(金) 11:10:28 ID:???] >>118 なぜ「出来ればしたくない」のか聞かせてくれ。
129 名前:nobodyさん mailto:sage [2009/02/20(金) 11:18:07 ID:???] >>127 詳しく
130 名前:nobodyさん [2009/02/20(金) 11:23:24 ID:P+ZCl9Zr] 回答・説明ありがとうございます。 取りあえず出来る書き方で書いて、天に祈りが届いたと思ってPHP5.3を待つ事にします。 >>128 Cで例外処理の場合はgoto文を使いたい(条件文が増えるとネストが深くなったりコードが重複したりするので) みたいなものです、プログラム思想みたいなものなので余りこれ以上の突っ込みはご勘弁を…
131 名前:nobodyさん mailto:sage [2009/02/20(金) 11:25:54 ID:???] gotoの方がよっぽど悪質だよww
132 名前:nobodyさん mailto:sage [2009/02/20(金) 11:34:03 ID:???] try-catch
133 名前:nobodyさん mailto:sage [2009/02/20(金) 11:39:58 ID:???] こんなところでtry-catchを持ち出そうとするからPHPerは糞だって言われるんだ
134 名前:nobodyさん mailto:sage [2009/02/20(金) 11:41:19 ID:???] >>133 すまん 例外処理と聞いて反射的に貼り付けただけなんだ
135 名前:nobodyさん mailto:sage [2009/02/20(金) 11:56:07 ID:???] >>130 それは貴方のロジックとかが悪いだけ
136 名前:nobodyさん mailto:sage [2009/02/20(金) 11:56:21 ID:???] gotoが許されるのはHSPだけです
137 名前:nobodyさん mailto:sage [2009/02/20(金) 11:59:50 ID:???] finallyを実装しなかった罪は思い
138 名前:nobodyさん mailto:sage [2009/02/20(金) 12:55:37 ID:???] 設計が悪いのにプログラム思想がうんぬん言われてもな…w 困るんだわ…w
139 名前:nobodyさん mailto:sage [2009/02/20(金) 13:12:10 ID:???] せっ・・・けい・・・?
140 名前:nobodyさん mailto:sega [2009/02/20(金) 15:34:00 ID:???] PHPのデバッガで、gdbのようなものはありますか? 主にコマンドラインプログラムが対象です attachの機能(すでに起動しているものを乗っ取れる)が 必須なんですが
141 名前:nobodyさん [2009/02/20(金) 16:27:31 ID:DGCUxhS+] 組込Linux C/C++ なドライバ屋(PHP歴は5日w)が質問させていただきます。 // 赤の他人の尻拭い中 識者いらっしゃいましたら助けてください。 よろしくお願いします。 【OS名】Linuxカーネル 2.6.18-92 (RHEL5.3) 【PHPのバージョン】php5.1.6 【連携ソフトウェア】Akelos 【質問内容】 XHTML 1.0 / UTF-8 な日本語ページ(タイトルも日本語)を出力する view があります。 IEやFireFoxなどのブラウザ、docomo iモードでは期待する内容が表示されます。 が、ezwebで文字化けします。 UTF-8が問題かと思ったのですが、同ページをPCブラウザ上で表示させ、 ソースを xx.html として保存。 このxx.html をezwebで表示すると、文字化けせずに期待通りの表示になります。 ezweb のブラウザ側の問題の可能性もあるかもしれませんが、回避策など ありましたら、教えてください。 --- xx.html の内容 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html xmlns="www.w3.org/1999/xhtml "> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>たいとる</title> // 以下略
142 名前:nobodyさん mailto:sage [2009/02/20(金) 16:33:21 ID:???] どうしてもUTF8でやりたいのなら ezwebだけ出力するときだけsjisに変換したら?
143 名前:nobodyさん mailto:sage [2009/02/20(金) 16:35:22 ID:???] >>141 www.au.kddi.com/ezfactory/tec/spec/4_2.html > また、EZwebでサポートする文字コードはShift-JISです。
144 名前:141 mailto:sage [2009/02/20(金) 16:44:08 ID:???] >>142 ,143 返答ありがとうございます。 Shift-JISに変換して出力するようにします。 ですが、.html拡張子のUTF-8なページは文字化けしないのが疑問のままなのは ちょっとモヤモヤが残ります。 識者いらっしゃいましたら、引き続きよろしくお願いします。
145 名前:nobodyさん mailto:sage [2009/02/20(金) 18:39:08 ID:???] >>144 header送信はどうやってる?
146 名前:nobodyさん [2009/02/20(金) 18:58:54 ID:QkuM0xlT] PHPの中から、apache上で走っているのか バッチファイル的に使われているのか(シェル上で、php hoge.php)を 判断する方法を教えて下さい
147 名前:nobodyさん mailto:sage [2009/02/20(金) 19:04:26 ID:???] >>146 phpinfo保存してdiffして好きなのを使うとか
148 名前:nobodyさん mailto:sage [2009/02/20(金) 19:12:40 ID:???] >>147 ありがとうございます それをヒントにして$_SERVERを比較したところ SHELLというキーが、シェルから呼んだ場合には設定されていました
149 名前:nobodyさん mailto:sage [2009/02/20(金) 19:17:35 ID:???] jp.php.net/manual/ja/function.php-sapi-name.php もろそういう用途の関数がありますよ
150 名前:nobodyさん mailto:sage [2009/02/20(金) 20:55:16 ID:???] php_sapi_name()ならpearのgo-pearを参考にしてもいいかも。 pear.php.net/go-pear
151 名前:nobodyさん mailto:sage [2009/02/20(金) 21:07:24 ID:???] めちゃめちゃPHP覚えてきた 自分の才能がコワイお(´・ω・‘)
152 名前:nobodyさん mailto:sage [2009/02/20(金) 21:09:59 ID:???] ほう,じゃ最近学んだこと何か語ってみてくれ
153 名前:nobodyさん [2009/02/20(金) 21:34:19 ID:JGeRmwBm] URLのうち、ドメイン直下の最上位ディレクトリを抽出するにはどうしたらいいですか? str系の関数組み合わせて3個目の/が何文字目で4個目が何文字目で… ってやれば出来るでしょうが、非効率というかアホっぽいので、正規表現でバキっと出す方法を 教えてください よろしく御願いします
154 名前:nobodyさん mailto:sage [2009/02/20(金) 21:37:09 ID:???] >>153 scandirが使えるバージョンならドメイン直下のディレクトリ名を取得すればおk 使えないならopendirとreaddirでググレカス
155 名前:nobodyさん mailto:sage [2009/02/20(金) 21:44:06 ID:???] >>141 GWの文字コード変換対象はtext/〜から始まるコンテンツのみ。 SSLも変換噛まさないけ
156 名前:nobodyさん mailto:sage [2009/02/20(金) 22:16:34 ID:???] >>152 文字コードがshift-jis、Euc-jpだとSQLインジェクションされる かといってutf-8は安全?というとそうでもない。
157 名前:nobodyさん mailto:sage [2009/02/20(金) 22:24:54 ID:???] php関係ねー 氏ねや
158 名前:nobodyさん mailto:sage [2009/02/20(金) 22:27:27 ID:???] そ・・・そんなん 必死に覚えてきたお(´・ω・‘)
159 名前:nobodyさん mailto:sage [2009/02/20(金) 22:37:43 ID:???] >>158 世の中にはいくらやっても報われないことが二つある ひとつは賽の河原の石積み もうひとつはお前のPHPの勉強だ
160 名前:nobodyさん [2009/02/20(金) 23:27:51 ID:r16tK4jF] SQLインジェクション対策は、 基本的に外部入力値をhtmlspecialcharsしていれば良い って考えは間違い?
161 名前:nobodyさん mailto:sage [2009/02/20(金) 23:31:06 ID:???] >>160 大間違い
162 名前:nobodyさん mailto:sage [2009/02/20(金) 23:34:48 ID:???] htmlspecialcharsで防げるだろ >>161 はhtmlspecialcharsを使用しても抜けられる穴について説明よろ
163 名前:nobodyさん mailto:sage [2009/02/20(金) 23:39:40 ID:???] >>160 htmlspecialchars(,ENT_QUOTES)で防げるのは「Script Injection」。 Javascript埋め込みとかそんなヤツ。 「SQLインジェクション」は別問題。 「PHPサイバーテロの技法」を買って読んどけ。
164 名前:nobodyさん mailto:sage [2009/02/20(金) 23:47:18 ID:???] >>162 LIKEのとこに%とか*突っ込んでみるとか。 select * from table where name like '%' ;
165 名前:nobodyさん mailto:sage [2009/02/21(土) 00:28:20 ID:???] >112 $str = '<font size="10">でっかい</font>'; $smarty->assign('tag', $str); $smarty->display('hoge.tpl'); ---hoge.tpl--- <body> {$tag} </body> とかいう意味だったら笑う。 >162 >164の変数名のところに「' OR 1=1」と入れるとレコードが全件変数に入り個人情報大暴露大会。 「'; DROP なんたらかんたら」と書くとテーブルがぶっ飛ぶ。レプリケーション先も全部死ぬからサービス復旧不能で店じまい、会社は倒産。 MySQLの設定が甘いと、管理テーブルを書き換えられてroot奪われるとかもあるな。
166 名前:nobodyさん mailto:sage [2009/02/21(土) 00:32:30 ID:???] あーっと、ENT_QUOTESだったか。死んでくる。
167 名前:nobodyさん mailto:sage [2009/02/21(土) 00:38:03 ID:???] >>160 addslashes
168 名前:nobodyさん mailto:sage [2009/02/21(土) 00:44:54 ID:???] >>167 addslashesも大間違い
169 名前:nobodyさん mailto:sage [2009/02/21(土) 01:19:11 ID:???] mysql_escape_string
170 名前:nobodyさん mailto:sage [2009/02/21(土) 01:34:53 ID:???] >>169 それも%とかをエスケープできないので間違い mysql_real_escape_string
171 名前:nobodyさん mailto:sage [2009/02/21(土) 01:47:18 ID:???] 可能な場合常にプレースホルダを使う、でFAだろ クエリの9割以上はカバーできるはずだ
172 名前:nobodyさん mailto:sage [2009/02/21(土) 02:05:10 ID:???] めんどいから ' と ; は削っちゃえ
173 名前:nobodyさん mailto:sage [2009/02/21(土) 02:17:42 ID:???] mysql_escape_stringって%エスケープしないのか ありえねーな likeを使ってなかったらだいじょうぶ?
174 名前:nobodyさん [2009/02/21(土) 02:35:53 ID:60WB0UqA] addslashesじゃだめなの? ある本にmysql_escape_stringより良いって書いてあったのに、早いって。。 純朴な素人をバカにしやがって
175 名前:nobodyさん mailto:sage [2009/02/21(土) 02:37:42 ID:???] お前は何を言ってるんだ 本にWebに書いてあることを鵜呑みにすることが「勉強」じゃないぞ?
176 名前:nobodyさん mailto:sage [2009/02/21(土) 02:44:35 ID:???] 何ぬかしてる、mysql_real_escape_string() は非推奨の mysql_escape_string() と機能は同じ だいたいこの関数はSQLステートメントとして成立する文字列リテラルを作るためのものだ %を勝手に殺したりする用途に使うもんじゃない
177 名前:nobodyさん mailto:sage [2009/02/21(土) 02:45:52 ID:???] %殺されちゃたまらないな。しかも%なんてSQLインジェクションには使えないだろ エスケープする必要ない
178 名前:nobodyさん mailto:sage [2009/02/21(土) 02:46:31 ID:???] PDOで解決
179 名前:176 mailto:sage [2009/02/21(土) 02:46:46 ID:???] 悪いアンカーが抜けていた >>176 は>>170 ,173へのレス
180 名前:nobodyさん [2009/02/21(土) 02:49:17 ID:RWcdEiGu] phpでhtmlのinputのtype="text"でreadonly='true'して printしているのですが、これってもしreadonlyに対応していない ブラウザとかだったら変更可能ですかね?ブラウザとか関係なく、 もし確実じゃなければ、それに代わる確実な方法を実現したいのですが 何か方法があれば教えてください。
181 名前:nobodyさん mailto:sage [2009/02/21(土) 02:58:27 ID:???] >>180 変更されてはならないものはクライアントに持たせない セッション変数なりストレージなりに保持しておく
182 名前:nobodyさん mailto:sage [2009/02/21(土) 05:32:46 ID:???] >>118 phpにおけるexitは強制終了。 それに続くタグとかは、一切実行も表示もされない。
183 名前:nobodyさん mailto:sage [2009/02/21(土) 12:05:11 ID:???] >180 そもそも、ブラウザなんぞ無くともデータは送受信可能だ。 HTTPなんて、テキストデータを送受信してるだけだからな。 クライアントに渡した全ての値は改竄され得るし、クライアントから送信される値は全て信用ならない。 input type="select"の中に、選択肢にない文字列が入ってくるなんてのはよくある事だ。
184 名前:nobodyさん mailto:sage [2009/02/21(土) 12:05:51 ID:???] <select><option>だったか。まあいいや。
185 名前:nobodyさん mailto:sage [2009/02/21(土) 13:04:41 ID:???] ちょっと気になったんだが、>>165 が書いている方法も SELECT * FROM test WHERE name='".htmlspecialchars($_POST["name"],ENTQUOTES)."' としていれば大丈夫なんじゃないのか? 「%」の件もlike使わなければいいわけだし。 like使う用途って「検索」が多いだろうから、表示されても良いデータだろうし。
186 名前:nobodyさん mailto:sage [2009/02/21(土) 13:10:29 ID:???] >>183 >選択肢にない文字列が入ってくる てっきりvalueにテキストを挿入してるかと思ったwwww
187 名前:nobodyさん mailto:sage [2009/02/21(土) 13:10:58 ID:???] >>185 そのセンス、感服するわ。 htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが、 SQLにlikeを使わなきゃいいって制約を追加するわけだが、
188 名前:nobodyさん mailto:sage [2009/02/21(土) 13:14:04 ID:???] なんでそこまでしてhtmlspecialcharsに拘るのかが理解できない。 mysqlなら何も考えずmysql_real_excape_stringが一番安全確実簡単だろ。 htmlspecialchars使うと、<や>、&のような文字が全部変換されてDBに入力されてしまう。 検索なら対象がうまくヒットしなくなるし、画面表示文字列だとエスケープ/アンエスケープのタイミングを考慮しないといけない。 DBからCSVに書き出したくなったらどう変換すればいいんだ?JavaScriptに渡す時は? mlsql_real以下略なら、入力データはそのままの形でDBに格納されるし、そのままの形で検索される。この上なく分かりやすい。
189 名前:nobodyさん mailto:sage [2009/02/21(土) 13:16:13 ID:???] >>187 うん?クラスの処理とかすべて書けば良かったか? 単純かしたことに「こいつ馬鹿だwww」と感服したのかもしれないが。 そもそも、出力する時もフィールド指定するだろ。 だから、like使ってもパスワードが漏れないよな。 全件出力されるとか書いてたけど、普通limit指定するし。 >htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが かからなくていいんじゃないか?検索させない場合は、変換入れるだろうが。
190 名前:nobodyさん mailto:sage [2009/02/21(土) 13:16:27 ID:???] 未だにDBで何をエスケープしておけばいいかわからないやつ多いよな。 基本的には「'」と「\」だけでいいんだぜ
191 名前:nobodyさん mailto:sage [2009/02/21(土) 13:19:03 ID:???] >>188 「そのままの形で格納されると困る」んだよ。 お前、WEBアプリケーション作ったことあるか? または、会員制サイト作って誰かに利用させたことあるか? その際、htmlspecialcharsで変換されない文字があるとどうなるかわかるだろ。 それに、htmlspecialcharsだけでも、CSV出力やJavascript(AJAX)の利用は出来る。
192 名前:nobodyさん mailto:sage [2009/02/21(土) 13:25:16 ID:???] >>189 おいおい、 記事中から、bread&butterって検索したくてもできないじゃないか。
193 名前:nobodyさん mailto:sage [2009/02/21(土) 13:26:33 ID:???] zend server 人柱だれかよろ ttp://sourceforge.jp/magazine/09/02/19/2316221
194 名前:nobodyさん mailto:sage [2009/02/21(土) 13:27:24 ID:???] >>191 が作ったWebアプリケーションは穴だらけ、バグだらけだろうなぁ。 ご愁傷様
195 名前:nobodyさん mailto:sage [2009/02/21(土) 13:27:36 ID:???] Zendワロタwwwwwwwww よく開発続けられるよなwwwww不人気なのにwwwwwww
196 名前:nobodyさん mailto:sage [2009/02/21(土) 13:29:18 ID:???] htmlspecialcharsをDBアクセスで使用するバカ 後輩とかに指摘されて恥かくまでずっとやってろ
197 名前:nobodyさん mailto:sage [2009/02/21(土) 13:30:31 ID:???] 俺はforeachのことを「フォレーチ」って読んでた 先輩は「フォー・イーチ」って読んでた 別に恥ずかしくないんだからねっ!これからも「フォレーチ」って読むわ
198 名前:nobodyさん mailto:sage [2009/02/21(土) 13:32:44 ID:???] >>191 なぁ、ちょっと確認していいか? 入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示 おまえこの流れは理解してるってことでいいんだよな?
199 名前:nobodyさん mailto:sage [2009/02/21(土) 13:34:46 ID:???] xamppに代わる開発環境になるかな?
200 名前:nobodyさん mailto:sage [2009/02/21(土) 13:35:45 ID:???] >>199 ネーミングが悪かったかもしれない XAMPPは初心者もなじみやすい名前だから、暫くはそっちが流行ると思うな
201 名前:nobodyさん mailto:sage [2009/02/21(土) 13:36:24 ID:???] >191 会員制の課金の発生する、バックエンドでCSVとTSVでレポートを吐くwebアプリを仕事で書いてるが、 ・DBに渡す際にPDOのプレースホルダで渡す、あるいはmysql_real_escape_stringなどでクエリを構成する ・画面表示する際にはビューに渡す時点で原則全ての値をhtmlspecialcharsでエスケープ (タグを書き出さないといけない箇所や、HTML以外の箇所などの例外は慎重に検討したうえでエスケープせず渡す) ・DBには、例えばフォームからの入力なら入力値がそのままの形で格納される このルールが一番分かりやすいし、安全だし、汎用性がある。 出力部で「この文字列はDBから来た値だからhtmlspecialcharsは不要、こっちはクライアントからの入力値だから必須…」とかやってると、絶対変換ミスが発生する。 何も考えずルールにさえ従ってさえいれば脆弱性が発生しない事をシステムが担保してくれる形にするのが一番安全なんだよ。 俺はMySQLでの危険文字を全て列挙すら出来ない低能だし、職場には俺以下の屑が溢れているが、このルールに従う限り絶対安全だとシステム側で保障できるコードを組める。
202 名前:nobodyさん mailto:sage [2009/02/21(土) 13:41:28 ID:???] >>198 してるわけないだろ。関数の使いどころすらわかってないんだから
203 名前:nobodyさん mailto:sage [2009/02/21(土) 13:41:54 ID:???] >>201 それでOKなんだけど、>>191 はフィルターやバリデーターとDB登録時のエスケープを混同してるらしいからw
204 名前:nobodyさん mailto:sage [2009/02/21(土) 14:03:40 ID:???] 俺が使ってるサービスで ↓を混同してるプログラマがコード書いてませんように・・・ ・DB入力時(SQLインジェクション) ・画面出力時(Scriptインジェクション)
205 名前:nobodyさん mailto:sage [2009/02/21(土) 14:14:16 ID:???] >>193 雑談はネタ不足気味な雑談スレで。 pc11.2ch.net/test/read.cgi/php/1200314111/
206 名前:nobodyさん mailto:sage [2009/02/21(土) 14:20:49 ID:???] >>198 ああ。実際に>>201 が書いているようなことはしているよ。 例として>>185 みたいな簡単な1行ソース出したから 「こいつ何も知らない馬鹿だなwww」と煽りたい気持ちも分かる。 だが、1から10までここに書けないだろ。 入力時、出力時にそれぞれ適切に変換するのは、初歩中の初歩だと思う。 201がああだこうだ書いてるが、俺は自作クラス作ってDB処理をしているから 変換ミスがどうのこうのはない。 ま、そういう自分の事はどうでも良くて、>>185 の意見を出しただけなんだが なぜか俺自身を煽りたい馬鹿がいるな。そんな事しても無駄だろ
207 名前:nobodyさん mailto:sage [2009/02/21(土) 14:22:00 ID:???] >>185 みたいなコードが出てくる時点でお前が一番馬鹿だよ
208 名前:nobodyさん mailto:sage [2009/02/21(土) 14:26:20 ID:???] >>207 >だが、1から10までここに書けないだろ。 ちゃんと読めよ・・・わかりやすいように簡単に書いたって言ってるだろ それに、htmlspecialcharsで変換しないでそのまま格納したとする その場合、phpMyAdminなどで管理する時。どうなるかわかるよな?