くだすれPHP(超初心者用)5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/22(土) 06:36:02ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0722nobodyさん
2009/02/09(月) 09:20:54ID:???0723nobodyさん
2009/02/09(月) 21:42:26ID:???使える箇所ならプリペアドステートメント。これが一番安全。
ttp://jp2.php.net/manual/ja/mysqli.prepare.php
ttp://jp2.php.net/manual/ja/pdo.prepare.php
使えない箇所ならmysql_real_escape_stringなど。
どの文字が危険かはDBによって違うので、MySQLにはMySQLの、OracleにはOracleの、SQLiteにはSQLiteの専用の関数がある。
0724nobodyさん
2009/02/11(水) 12:21:22ID:???ユーザのトップディレクトリを調べる方法はありますか?
0725nobodyさん
2009/02/11(水) 13:56:50ID:???0726nobodyさん
2009/02/11(水) 14:12:44ID:???ああすみません。
開発環境はPHP5.2.6でOSXなんですがWebサーバはまだ借りてないのでどうなるかはわかりません。
PHP5でApachサーバのところを借りようとは思ってます。
なので開発環境との違いや引っ越し時のことを考えて汎用的な関数がないかと質問しました。
一応マニュアルのファイルシステム関数は目を通したんですが…
0727nobodyさん
2009/02/11(水) 14:24:23ID:???たとえばエラーチェック時にdieの代わりに自作関数呼び出して終了みたいな場合など
function return_json($flag, $data){
if($flag == true)
$result = $data;
else
$result = "ERR:".$data;
$res = array(
"status" => $flag,
"result" => $result );
print(json_encode($res));
exit();
}
if(エラーチェック1) return_json(false,"エラー1です"); //エラーなら終了
if(エラーチェック2) return_json(false,"エラー2です"); //エラーなら終了
//最後に
return_json(true,"成功です。");
0728nobodyさん
2009/02/11(水) 14:33:34ID:???0729nobodyさん
2009/02/11(水) 15:13:35ID:???あちこちの関数で好き勝手に処理を中断したり画面出力してたりすると、そのうち管理しきれなくなる。
同じ理由で、printするよりは文字列を返す(printは「メインのルーチン」で行なう)方がいいと思う。
俺ならreturn_json()はjsonを返すだけ(exitもprintもしない)にして
function generare_json(){
if(isError1()){
return return_json(false,"エラー1です");
}
if(isError2()){
return return_json(false,"エラー2です");
}
return return_json(true,"成功です。");
}
とし、echo generate_json()を最後に呼び出す。
exit()はスクリプトの末尾のみ、出力はこの文のみになる。
0730nobodyさん
2009/02/11(水) 15:20:37ID:???boolを渡すより、return_error_json()の方が分かりやすい。
0733nobodyさん
2009/02/11(水) 17:30:07ID:???/Applications/MAMP/htdocs/
となります。
実行ファイルがトップにあるわけではないので相対パスでのファイル指定より
基点からの絶対パスのほうがわかりやすいかなと。
0737nobodyさん
2009/02/11(水) 18:00:00ID:???0738724,733
2009/02/11(水) 19:15:46ID:???$_SERVER['DOCUMENT_ROOT']で希望のパスを得ることができました。
ありがとうございました。
0739727
2009/02/12(木) 16:10:42ID:rITuikA6それだとプログラム毎にgenerare_json()を書き換えるって事ですよね
(エラーチェックは入力値が対象なのでプログラム毎に変わるから)
if〜elseのネスト地獄に陥りたくないので、if文でエラーなら残りをすっ飛ばしたいだけなのです。
それとメインルーチンのほとんどがgenerare_json()内に入ってしまうような・・・
他の方法(関数内でprintもexitもなし)だと
1.エラー時、gotoでメインルーチン末尾に飛んでprint実行
2.フラグを用意し初期値true、エラー時falseにして、if(!フラグ && isError2())と毎回チェックする
3.例外処理
が思い浮かんだんですが、gotoはv5.3からだし、2は毎回チェックが煩わしい(スマートじゃない)、
3の入力値チェックのエラーは例外とは違う気がしたり・・・
それとも例外として処理してもいいのかな・・・?
チェック用自作関数は真偽を返すのでif文でエラーならthrowとか
0740727
2009/02/12(木) 18:57:04ID:???色々調べたら入力値チェックで期待しない値は異常なエラーとして例外処理してもよい、
みたいに書いてあったので例外処理することにしました。
function throw_except($msg){
throw new Exception($msg);
}
try {
if( isError1() ) throw_except('エラー1');
if( isError2() ) throw_except('エラー2');
return_json( $xxx );
} catch ( Exception $e ) {
return_err_json( $e->getMessage() );
}
例外処理になったからreturn_xxx関数内でprintさせてます(exitは削除)
print文を関数外に出した方がいいのかもしれませんが
0741nobodyさん
2009/02/12(木) 19:05:55ID:???0742nobodyさん
2009/02/12(木) 19:11:40ID:???0743nobodyさん
2009/02/12(木) 20:08:20ID:???try {
isError1();
isError2();
return;
} catch (isError1Excetion $e) {
} catch (isError2Exception $e2) {
}
0744nobodyさん
2009/02/12(木) 21:20:57ID:???0745729
2009/02/12(木) 23:45:53ID:???if else地獄?>729のコードにはelseが一行も出てないだろ。これは偶然そうしたんじゃなくて、意識してそうデザインしたんだ。
適切な規模で関数を切って、returnでエラーを通知可能にすればelseは削れるし、多くの場合throwは不要になる。
すぐthrowを使いたがる奴は、GOTO時代と脳の構造が一緒の、OOPどころか関数指向にすらなれない原始人。
ぱっと思いつく欠点挙げてやろうか。throwだと妥当性検証エラーの結果を最初のひとつしか出力に反映できない。
他にも、どこまで処理が継続するのか、どこからの処理はすっ飛ばされうるのかを判定しにくいのも例外の欠点。
ロックファイルを作って、ファイルに書き出して、さあ安心と思ったら変なところから例外が飛んできて、ロックファイル削除せずに終了、とかな。
例外は、複数の呼び出し階層をぶっ飛ばして上位層にエラーをダイレクトに通知したい場合に使うものであって、GOTO代わりに使うものじゃない。
>729のコードの完成版 ttp://gist.github.com/62642
isError1とisError2の中身を替えれば、チェックする内容はそのまま置き換わる。
両者をまとめて関数化してしまえば追加も可能。generate_jsonはノータッチでいける。
入力値検証らしい構造に書き直した版 ttp://gist.github.com/62643
入力値チェックの内容が変わる場合、validate関数を差し替える。処理内容が複雑ならisError1みたいな関数を書いてvalidateから呼んでもいい。
0746739
2009/02/13(金) 00:56:29ID:???if else地獄というのは>>729のコードではなく(>>727の)自作関数内でexitしない場合のこと。
(一応自分でも>>727や>>740で意図してelse使わないようにしてます)
ただ作例だとisError1,isError2,validate,build_responceなど関数自体を毎回書き直す羽目になるし、
メインルーチンがほぼ丸ごと関数化(build_responce)してるのもどうも・・・
関数は一度作ったら修正したくない、極力同じような文を書きたくない、ってのが元々の理由なので。
今作ってるのは妥当性エラーは1つ(というか「入力値が間違ってる」だけ)でいいのですっ飛ばしてます。
通常の入力ではなく意図的に変更してる場合しかありえないので。
確かに原始人と思いますが、GOTOも上手く適度に使えばいいんじゃないんでしょうか?
反GOTO教信者ではないし。
まあバリデーションにthrowの使うのは>>739にも書いたけど微妙だとは思いますが↓のようにあったので使ってみました
http://takagi-hiromitsu.jp/diary/20051227.html
>>パス名を受け取ることを想定したパラメタに「../」や「..\」が含まれていたら、削除とか変換をするのではなく、
>>エラーとして例外処理して終了するというのが、本来のそのプログラムの正しい動作だろう*5。
クライアント側でもチェックしてるのでそれをわざわざ変更して送ってくるのは上記にあてはまるかと。
0747nobodyさん
2009/02/13(金) 01:41:35ID:???グローバル空間の処理や他の関数は一切触れなくて平気。
グローバル空間の処理を書き換える方が、関数を書き換えるより簡単だって言い張るならもう何も言わん。ダイクストラ以前の時代に帰れ。
「メインルーチンがほぼ丸ごと関数化してる」のは、確かに設計としては甘い。
本来は、「100%すべてを関数化すべき」だしな。
0748746
2009/02/13(金) 02:05:40ID:???参考にして勉強させていただきます。
0749nobodyさん
2009/02/13(金) 11:16:46ID:???現在、PHP4を使って携帯サイトを作っています。
新規登録してログインして日記みたいなのを登録するシステムなんですが、
ログインした後の日記登録の部分は問題なく動作します。
ところが新規登録のところで動作がおかしい部分があるのです。
動作確認はdocomo,au,softbankの実機とPC上のエミュで行っています。
現象はsoftbankの実機のみで起こるのですが、スクリプトでは
header("Location:xxxxxx.php?id=xxxxx")でページを飛ばすところで問題が起きます。
docomo,au実機、PC上の3キャリアのエミュでは問題なく動作、ところがsoftbankの実機のみ
ページが飛ばずに「このページは開けません」みたいなエラーが出ます。
ソースレベルでは、その他の日記登録などとほぼ同じなのですが・・・。
softbank携帯だけ、何か仕様が違うのでしょうか?ちなみにセッションを使っています。
0750nobodyさん
2009/02/13(金) 11:18:06ID:???飛び先のphpスクリプトにダイレクトに接続した場合、問題なく動作する事は確認済みです。
0751nobodyさん
2009/02/13(金) 11:24:03ID:???header Locationで飛ばさずに、aタグを使って間にワンクッション置く(クリックさせる)と正常に動作します。
どのみち、その先でまたheaderで飛ばすところで駄目なんですが・・・。
0752nobodyさん
2009/02/13(金) 11:45:37ID:???> softbankの実機のみページが飛ばずに「このページは開けません」みたいなエラーが出ます。
このときの、サーバーに残るアクセスログは?
んで、Locationで指定しているURLはドメイン込のフルパスで書いてるよね?
0753nobodyさん
2009/02/13(金) 11:52:57ID:???Locationには絶対ではなく、相対アドレスで指定しています。
0754nobodyさん
2009/02/13(金) 12:03:26ID:???http://www2.developers.softbankmobile.co.jp/dp/tool_dl/download.php?docid=119
これの、143ページ
0755nobodyさん
2009/02/13(金) 12:05:58ID:???要求しているURLは、変ではなくアクセス出来るURLでした。
0756nobodyさん
2009/02/13(金) 12:09:54ID:???その直後に正しいリクエストが来てるかどうか。
0757nobodyさん
2009/02/13(金) 13:01:14ID:???0758nobodyさん
2009/02/13(金) 13:46:02ID:???PDFの資料、大変役に立ちました。
locationで指定しているアドレスを相対から絶対にしたところ、動作しました。
ありがとうございました。
でも、他の部分では相対にもかかわらず正常動作しているんですけどね・・・。
やはり携帯サイトは難しいです。
0759nobodyさん
2009/02/14(土) 13:18:20ID:???rfc2616の14.30 Location
原文
http://tools.ietf.org/html/rfc2616
和訳
http://www5b.biglobe.ne.jp/~type-aya/rfc/rfc2616j.txt
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec14.30
ソフバンの方が厳密に仕様に沿っているんでしょう
0760nobodyさん
2009/02/18(水) 18:43:17ID:???いるのでしょうか?
例えば、認証するサイトでパスワード変更の時、応答メールで、
ttp://hoge.co.jp/mail/CSDFG365
へアクセスをすれば作業完了という場合の、CSDFG365や
ダウンローダーでttp://hoge.co.jp/download/CSDFG365にアクセス
すると、別名のファイル名が保存できる機能が、どう実装されているのか
知りたいのです。検索キーワードが悪いのか、ファイルの暗号化ソフト
ばかりヒットして解らずにいます。
どなたか教えてください。
0761nobodyさん
2009/02/18(水) 19:28:28ID:???0763nobodyさん
2009/02/18(水) 23:18:25ID:???アカウント情報とそのキーを一緒にDBかなんかに突っ込んでおく
アクセスがあったらアカウントを有効にしてそのキーを削除する
とやってるだけ。
その文字列とあなたのアカウントIDやメールアドレスに直接の関係(例えば、メールアドレスを「暗号化」するとその文字列になるとか)
はないと思うし、むしろあったら設計として不味い。
後者も、文字列と実際のファイル名なりデータなりを関連付けるDBを保持しているだけ。
ダウンロードさせるファイルの名前はヘッダで指定できる。Content-Dispositionでぐぐれ。
0764nobodyさん
2009/02/18(水) 23:18:58ID:???皆さん、日記やブログを作るときどのような感じでスクリプトを組んでいますか?
例えばhtml文字をエスケープして、マジッククォートを取り除いて…といった形で教えてくださるといいんですが。
0765nobodyさん
2009/02/18(水) 23:38:29ID:???0766nobodyさん
2009/02/19(木) 11:06:34ID:???mod_rewriteを使ってるんだろうね。
0767nobodyさん
2009/02/19(木) 12:40:19ID:???0768nobodyさん
2009/02/19(木) 18:38:41ID:???暗号云々ではない。ズレてしまって申し訳ない。
0769760
2009/02/19(木) 22:42:44ID:???パラメータをディレクトリとしていたんですね。
mod_rewriteを使って解釈しないといけないので、ズレていないと思いますよ。
使わずにすむ方法は思いつかないんですが・・・。
助かりました。ありがとうございました。
0770760
2009/02/19(木) 22:50:42ID:???ダウンローダーとか、宅ファイル便とかだとファイルの公開日というのが
指定できるのですが、その指定した日時まで公開というのはどう実装するので
しょうか。ユニークキーと期日を保存して、その期日にユニークキーを
削除すると思うのですが、「その期日」に動作される方法が解らないのです。
教えて君ですみませんが、どなたかアドバイスください。お願いします。
0771760
2009/02/19(木) 22:54:01ID:???×「その期日」に動作される方法
○「その期日」に動作させる方法
でした。何卒よろしくお願いします。
0772nobodyさん
2009/02/19(木) 22:56:59ID:???データを信用するなとのことなので出力時にhtmlspecialcharsを挟んでます
しかし装飾系のタグが使いたいので以下のようにしてみました
問題ありますか?
$str = "@<b@>強調@</b@>@<span class=@”red@”@>赤色@</span@>"; //DBから取得したデータ
echo str_replace(array("@<","@>","@”"), array("<",">","\""), htmlspecialchars( $str, ENT_QUOTES, "UTF-8" ));
検索文字はすべて全角、上はあくまでサンプルで実際の検索文字は違います
0773nobodyさん
2009/02/19(木) 23:52:31ID:???ファイルそのものを削除するならcronなんかを走らせておくのでしょうが、
ファイルを直接DLではなくCGI/PHP経由でのみDL許可にすれば
期日後はユニークIDをDBから取り出せなくするだけで実現できるのでは?
0774nobodyさん
2009/02/20(金) 04:23:24ID:???閉じタグ打たなかったら、ページの最後まで
適用されてしまうんでない?
<h1>おはよう
↑こんなの。ひろゆきがあめぞうを
つぶしたときに、「スタイルシート破壊攻撃」というのを
使ったのだ。「あめぞうウイルス」でググるとわかる。
0775760
2009/02/20(金) 08:00:28ID:???アドバイスありがとうございます。
その期日後にPHPを起動(?)させる方法を知りたいのです。
だれもその期日(後)にPHPにアクセスしなければ、PHPは動作しないので。
あっ誰かがアクセスする時に、期限のチェックをすれば済む話ですね。
なんか自動的に削除処理しなきゃと思い込んでました。
超初心者ということで許してください。ありがとうございました。
0776nobodyさん
2009/02/20(金) 08:15:05ID:???PHP内でcrontabを書き換えられるかどうかは知らんけど。
0777nobodyさん
2009/02/20(金) 15:07:58ID:???0778nobodyさん
2009/02/21(土) 00:09:46ID:???scriptタグを埋め込まれると、ページ内の全表示内容、クッキーを外部のURLに送信される可能性がある。
onloadなどのJavaScriptを実行されるものは全て同じ。
多くのシステムがタグを回避するのはこの脆弱性対策のため。
imageタグによる画像貼り付けや、objectタグによるFlash貼り付けなど、考慮しないといけない事は山のようにある。
脆弱性対策ってのは、猿真似してりゃいいってもんじゃない。
「何故」HTMLタグに警戒しないといけないのかを理解し、適切な対策を自分で考える必要がある。
勘違いするといけないのではっきり言うが、その処理を挟んでもセキュリティは一切向上しない。無駄だ。
0779nobodyさん
2009/02/21(土) 06:29:21ID:wFQNH0340780nobodyさん
2009/02/21(土) 06:30:12ID:wFQNH034perl X
PHP ○
0781nobodyさん
2009/02/21(土) 07:16:06ID:???0782nobodyさん
2009/02/21(土) 07:51:36ID:???0783779
2009/02/21(土) 10:59:46ID:???ブラウザーアドベンチャーゲームなんだけど。
300行分を10本ね
連絡先 adobentya@hotmail.com
0784nobodyさん
2009/02/21(土) 11:05:48ID:???0785779
2009/02/21(土) 11:11:58ID:???0786nobodyさん
2009/02/21(土) 11:20:40ID:???入場者名と退場者名を同じ1ページ内で、上下のスパン(上半分が入場者名、下半分が退場者名)
にしてPDF出力したいと考えています。
プログラムはそれぞれ"nyuujyou.php"、"taijyou.php"が用意されています。
このように別々のプログラムの結果を、同じページ内でPDFで同時に表示させることはできますか?
共通の変数は日付$ymdだけです。
0787nobodyさん
2009/02/21(土) 11:54:46ID:???入場.php、退場.phpを、出力結果をechoするのではなく、出力結果を文字列として返す関数に書き直すのが正しい道。
こういう事は非常によくあるので、「出力結果を組み立てる」部分と「書き出す」部分は明確に分けたほうがいい。
「入場者名や属性の配列をDBから取ってくる部分」→「それを使ってHTML文字列を組み立てる部分」→「それを受け取って書き出す部分」
の三段階に分けると使い回しが効く。ロジックの殆どは最初の部分に来て、変更が多いのは簡単な後半だからな。
例えばCSVでファイルに書き出したい場合、最初の難しい部分にはノータッチで後ろの2つだけ書き換えればよくなる。
前から順に「モデル」「ビュー」「コントロール(の一部だが)」層と呼ぶ。
で、レシピだが。
<?php
$ymd = '2009/02/21';
ob_start();
require_once("入場.php");
$result1 = ob_get_flush();
ob_start();
require_once("退場.php");
$result2 = ob_get_flush();
でresult1、$result2に両phpの実行結果が文字列として入る。PDF変換はライブラリを自分で漁れ。
0788786
2009/02/21(土) 11:59:35ID:???わかりました、丁寧にありがとうございました。
0789nobodyさん
2009/02/21(土) 12:59:33ID:???厳しいご意見どうも
前段に関してはセキュリティ関連のサイトとか見てるんで
scriptを仕込まれてとかはまあ理解してます(というかこんなことがあると把握してる程度というか)。
その上で>>772が全くの無駄となるとhtmlspecialcharsが意味を成さないんでしょうか
それとも関数の後に置換をしてるからダメになるんでしょうか。
これで100%対策してるとはもともと思ってませんが、htmlspecialcharsで
ある程度の対策になるという考えは間違ってるでしょうか。
>>772も置換パターンが読まれたらアウトですが、どういった部分がだめなのか1例だけでも
教えてもらえないでしょうか。
0790nobodyさん
2009/02/21(土) 14:46:55ID:???自信ないけど、こんなの入れたらどうなるでしょうか。
0791nobodyさん
2009/02/21(土) 15:18:21ID:???つまり789の最後に言ってるように@<が<に変換されるのが
ばれているということが前提ですか?
ならば置換を行わずにhtmlspecialcharsのみなら問題ないということでしょうか。
当初の一部タグを有効にしたいというのはとりあえず置いときますが。
0793nobodyさん
2009/02/21(土) 15:51:07ID:???万一、SQLインジェクションされて、不正なデータを注入されても htmlspecialchars が出力時に噛ませてあればほんの少しダメージを軽減できる。
# まぁ、SQLインジェクションが起こった時点でいろいろ見直すべきだと思うけど。
装飾のタグが使えるのは素敵な機能だと思うけど、自力で組むのは難しいんじゃなかろうか。
自分ではどんなに完全だ、と思ってても意外なところに穴があったりするし。
ここで「大丈夫でしょうか?」って聞くくらいならば、そんなものは実装しないのが一番。
少なくとも str_replace() とかの単純な手法で実装できるような機能ではないと思う。
置換パターンが読まれてなければ云々については、
攻撃するときは攻撃者はいろんなパターンの文字列をスクリプトに投げてみて、置換や変換のルールを推測した上で攻撃するんだろうから、
あんまり考える意味がない。
0794nobodyさん
2009/02/21(土) 15:54:51ID:???ttp://phpspot.net/php/man/php/function.strip-tags.html
この関数は、allowable_tagsで許可した全てのタグ の属性を修整しません。
これには、style お よび onmouseover属性が含まれており、悪意のあるユーザが他のユーザに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。
0795791
2009/02/21(土) 16:08:04ID:???ちょっと忙しくなったので夜に反応します。
0796nobodyさん
2009/02/21(土) 19:23:46ID:???設計はすでにできていてあとはコードを書くだけ?
それなら設計の読み方わかるニートがやってくれるかもね
普通の人に頼むならまぁ無理だと思ったほうがいいわ
時給換算して300行400円はわりにあわない
10分で300行かけるような超人がいたとしたら
人の○倍仕事量こなすから○倍よこせってなるのでますます無理
設計書くなら値段は跳ね上がるから設計書いらないっていうのが
PHPクライアントなわけだけど
それだとお金にならないからスルーするというのが業界の流れ
0797nobodyさん
2009/02/21(土) 21:09:34ID:1h/i9qY8<?php
$numbers = range(1, 20);
shuffle($numbers);
for($i = 0; $i < 20; $i++) {
echo $numbers[$i]."<br>\n";
}
?>
0798nobodyさん
2009/02/21(土) 21:19:21ID:???$CountLogFile = "カウントログへのファイルパスを指定";
session_save_path("セッション情報を記録するディレクトリパスを指定");
session_start();
if(!file_exists($CountLogFile))
{
touch($CountLogFile);
}
$File = fopen($CountLogFile , "r+" ) or exit("FileOpenError...");
flock($File , 2);
if(empty($_SESSION["Count"]))
{
$_SESSION["Count"] = "1";
$Count = fgets($File , 16);
$Count = $Count + $_SESSION["Count"];
}
else
{
$Count = fgets($File , 16);
}
rewind($File);
fwrite($File , $Count);
flock($File , 3);
fclose($File);
?>
<?php echo "AccessCount : $Count"; ?>
0799nobodyさん
2009/02/21(土) 21:19:50ID:???0800nobodyさん
2009/02/21(土) 21:35:22ID:???0801772
2009/02/21(土) 21:58:27ID:???wiki風なキーワード+対象文字っていうのも考えてたんですけど、それはそれで抜き出しのための正規表現とかで
>>793でも言われているどんな抜けがあるかが想像つかないものでして。
とりあえず今回はあきらめることにします。ありがとうございました。
0802nobodyさん
2009/02/21(土) 22:35:15ID:???万一、SQLインジェクションされて、不正なデータを注入されても htmlspecialchars が出力時に噛ませてあればほんの少しダメージを軽減できる。
お前、いろいろと混同してないか?
0803nobodyさん
2009/02/21(土) 22:42:59ID:q8fBHhcW<?php
if( $_POST['insert'] == 'insert' ) {
echo "インサート";
}
?>
・・・
<form action="test.html">
<input type="text" name="text">
<input type="submit" value="送信">
<input type="hidden" name="insert" value="insert">
</form>
送信を押したときにだけ、インサートを表示するようにしたいのですが、リロードした場合も表示されてしまいます。
POSTされた中身が保持されているからだと思うのですが、
送信を押したときにだけ表示するにはどうしたらよいでしょうか?
0804nobodyさん
2009/02/21(土) 22:45:45ID:???つまり、そういう事だ。
0805nobodyさん
2009/02/21(土) 23:01:17ID:???不正に注入されたデータがJSとかのスクリプトを含むもので、html..を噛ませてなかったら、出力時に実行されてScriptInsertionにならない?
そこで、データの出力時にhtml..を噛ませてあれば、JSの実行は防げるから多少は軽減できる、って意味。
別にSQLInjectionが防げるっていう意味のつもりじゃないよ。
0806nobodyさん
2009/02/21(土) 23:42:58ID:???file_get_contents()って第一引数にファイル名を指定しなければならないと聞きましたが、ファイル名を変数に代入してそれを指定しても動きますでしょうか?
0807nobodyさん
2009/02/21(土) 23:48:15ID:???0809nobodyさん
2009/02/22(日) 00:11:37ID:???いやそこでSQLインジェクションが出てくるのがおかしいよ。
意図したとおりのSQLが実行されて、意図したとおりDBに保存されるんでしょ?
文字型のカラムに入るデータがHTMLだろうとJavaScriptだろうと
DB的にはなにも問題ない。
それを取り出して表示するときにHTMLならHTML用の処理が必要ってこと。
。。。ほかのとこにいた人?
0811nobodyさん
2009/02/22(日) 00:23:28ID:???インジェクションが万一、起こってしまった場合の話。
html..が対策になるなんて思ってないよ。
データベースから引っ張ったデータでも信用せずに、出力時にhtml..をかけておけば万が一、JSとかの意図しないデータを混入させられても少しは安全になるだろう。
って言いたかった。
間違えたこと言ってたらすまない。
0812811
2009/02/22(日) 00:34:57ID:???言いたいことは>>809と同じのつもりなんだけど……。
ぐちゃぐちゃにしてしまった、申し訳ない。
IDスレのほうも似た話題になってるけど別の人です。
失礼しました。
0813nobodyさん
2009/02/22(日) 00:39:28ID:???俺に読解力がないんだろうか
0814nobodyさん
2009/02/22(日) 00:43:08ID:???配列の値をカンマで繋げたいんですがそういった関数はないでしょうか。
配列関数のところにはなさそうなんですがforeachでループさせるぐらいしかないんでしょうか。
0815nobodyさん
2009/02/22(日) 01:09:34ID:???0816nobodyさん
2009/02/22(日) 01:23:04ID:???0818nobodyさん
2009/02/22(日) 01:28:17ID:???はい、しかと覚えました。
ていうか今回はこちらの調べ方不足だったけど
関数多すぎでいまいちマニュアルから探しづらい・・・
0819nobodyさん
2009/02/22(日) 01:32:17ID:???0821nobodyさん
2009/02/22(日) 01:50:01ID:???php 配列 値 繋げる
今回は悪かったって
たいていググルで見つかるけどマニュアル内検索でヒットしたらいいんだけどね
とまた転嫁
■ このスレッドは過去ログ倉庫に格納されています