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

【PHP】下らねぇ質問はここに書き込みやがれ 29

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/09/17(日) 04:26:39ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0514nobodyさん2006/09/25(月) 17:54:15ID:???
>>511
あぁー、レン鯖で外部URLがphpから見れない設定とかなのかな。
05155042006/09/25(月) 17:56:20ID:???
>>508
header("Content-Type: text/html;charset=UTF-8");
と指定したのですが、変わりませんでした。

>>509
MySQLです。
データベース作成時には特に何もいじっていません。
また、設定の仕方がわかりません。

>>512
それはもともと表記されていましたが、消しても書いても変化はありませんでした。

>>513
UTF-8では文字化けした状態で表示
EUC、SJIS、JISでは何も表示されません。


DBの方に言ってみることにします。
有難うございました。
0516nobodyさん2006/09/25(月) 18:00:54ID:???
そもそもDBでも文字化けしていないかも心配
0517nobodyさん2006/09/25(月) 18:01:25ID:???
Image Magickの話が出たので便乗して質問です。

WinXP、PHP 5.1.4
php_imagick.dllをphp.iniに追加しましたがロードに失敗してしまいます(読み込めないとのエラーがログに吐かれていた)。

mbstringやpdoなど、他のモジュールはロードできています。ファイル名が間違っていないか何度もチェックしましたが合っています。何が原因なのですか?
0518nobodyさん2006/09/25(月) 18:13:04ID:???
function str($str){
$str .= aaa;
return($str);
}

$str = "あいうえお";
echo str($str);

上記のようにすると、「あいうえおaaa」と出力されます。
ここまではいいのですが、$str以外の変数にも同じようにしたいのですが、
どのようにすれば良いのでしょうか?


つまり、$strだけじゃなく、
str($hogehoge);や
str($aiueo);など
いろんな変数にも対応できるようにしたいです。
0519nobodyさん2006/09/25(月) 18:15:19ID:???
>>518
echo str($hogehoge);
echo str($aiueo);
0520nobodyさん2006/09/25(月) 18:17:14ID:???
>>519
ありがとうございます!
functionの変数はその場限りで特に関係ないのですね
0521nobodyさん2006/09/25(月) 18:18:36ID:???
>>518
function ($a)
{
    $a .= 'aaa';
    return $a;
}

$str = 'あいうえお';
$hogehoge = 'ほげほげ';
$aiueo = 'あいうえお';

echo( $str );
echo( $hogehoge );
echo( $aiueo );
0522nobodyさん2006/09/25(月) 18:19:31ID:???
>>521もありがとうございます。
function内で使った変数はその場限りで他に支障はないのですか?
0523nobodyさん2006/09/25(月) 18:31:39ID:???
エンコードの話が出ていたので便乗

SJISとJISとEUCとUTF-8
どう違うのでしょうか?
また何か説明の載っているわかりやすいサイトはありませんか?
0524nobodyさん2006/09/25(月) 18:33:50ID:???
>>522
せめてもう少し書籍等を読んだほうが・・

関数内の変数は外には影響しません

このあたりを実行すれば理解出来るんじゃない
---------------
$a = 5;

print $a . '<br>';
test();

function test(){
$a = 1;
print $a;
}
--------------
0525nobodyさん2006/09/25(月) 18:36:42ID:???
>>523
文字コード
とかでぐぐれ
0526nobodyさん2006/09/25(月) 18:39:28ID:gQCSf4GG
>>515

セットの仕方が分かりませんってさ

mysqlならcharacter set utf8
pgsqlなら--encoding=utf8

って書いたじゃん・・・
0527nobodyさん2006/09/25(月) 18:53:09ID:???
ページの表示時間を遅くするのってどうやったらいいですか?
0528nobodyさん2006/09/25(月) 18:54:18ID:???
>>527
sleep();
0529nobodyさん2006/09/25(月) 18:55:49ID:???
ありがとう
今辞書でちょうど見つけたところw
聞く前に調べるべきでした・・・
0530nobodyさん2006/09/25(月) 20:09:31ID:???
>>526
次スレで、テンプレに追加した方がいいかもね。
0531nobodyさん2006/09/25(月) 20:13:43ID:???
mysql 文字コード指定
でググって一個目で何とかなるんとちゃう
0532nobodyさん2006/09/25(月) 20:56:02ID:???
sleep(20)で停止中に再読み込みしたら
スクリプトを停止にしたいんですが
どうやったらいいですか?
0533nobodyさん2006/09/25(月) 21:24:44ID:???
>>532
http://www.php.net/manual/ja/features.connection-handling.php
これででき・・ないかな
試したことないから分からん
0534nobodyさん2006/09/25(月) 21:25:50ID:???
>>532
勝手に止まらなかったっけ?
ブラウザが再読み込み→Apacheにリクエスト中断発信→ApacheはプロセスにAbortシグナル発行
って流れだったと思う。
問題はPHPがsleep中にシグナルを受け取れるかどうかだと思うけど、SQLクエリー発行中はともかく
sleep中なら多分受け取ってると思うんだけど。
0535nobodyさん2006/09/25(月) 22:23:46ID:UugMM9l5
IISサーバで、直前に表示していたページのURLを取得したいのですが
そのような関数や変数はありますか?
0536nobodyさん2006/09/25(月) 22:28:48ID:???
Referer
0537nobodyさん2006/09/25(月) 22:29:11ID:???
IISだと$_SERVER['HTTP_REFERER']って使えないの?
0538nobodyさん2006/09/25(月) 23:42:58ID:???
とある外来オープンソース(I18N化対応、日本語は EUC-JP,SJIS,UTF-8を選択)で、
メールを送信するとISO-2022-JPで送信されない。
なにも特別な対応していないからあたりまえだが。

いままでは、mb系のfunctionで対応してきたが、コアチームからバグが登録されたからどうにかしろ
といわれたんだげど、ポリシーでiconv系もmb系も使用しないらしい。

この条件で一体何ができるだろう。なんかいい方法ある?
0539nobodyさん2006/09/25(月) 23:51:09ID:???
jcode.phpで頑張るw
0540nobodyさん2006/09/25(月) 23:52:31ID:???
ISO-2022-JPで送信するfunctionなりclassなりを追加する。
0541nobodyさん2006/09/26(火) 00:03:35ID:???
>>539 540
いいアイデアだけど、日本語に特化したのは130%拒否される。
バグ登録した方がパッチを出しているが、日本語オンリーな上にバグってる。w

事象はわかっていたけどまともな対応はできないので、放置しておいたのになぁ。
いらんことを。
0542nobodyさん2006/09/26(火) 00:07:42ID:???
早いうちに、その(クソ)ルールでは無理です、ときっぱり言った方がいい
0543nobodyさん2006/09/26(火) 00:14:49ID:???
なんか話がよくわからん・・・

538,541は、そのオープンソースのメールシステム(パッケージ)を使う側じゃないの?
ん・・・コアチームではないけど、開発してるってことかな。

もしそうだとしたら、コアクラスを拡張してISO-2022-JPで送信できるようにするのはパッケージが「日本語に特化する」ことにはならないと思うけど。
0544nobodyさん2006/09/26(火) 00:15:51ID:???
>>542
だね。とりあえず、日本ではそのルールをかえない限り、野良パッチするしかないと書いといた。
XOOPSみたいに、日本語版を出すしかないのか。ニッチなOSSだから喜ぶひとはいないし、報われないし。
放置決定。
0545nobodyさん2006/09/26(火) 00:19:35ID:???
>>543
いや、翻訳してるだけなんだけど、使う側ではないのよ。キムチの人とか、4000年の人が、
いろいろバグを登録するので、コアチームがわからないとメールをなげてきた。
0546nobodyさん2006/09/26(火) 00:23:35ID:???
ごめん。

話から察するにコアチームが言語の汎用性を深く考えてなさそうだから、簡単に拡張できないっていう難しさがあるんだろうね。
ISO-2022-JPに対応するサブクラスを作成したとしても、コアクラスに小さな、または大きな修正が必要になるだろうと。

それをコアチームが認めないのかな。仕事だとプログラミング以外の難しさもあるからね。
0547nobodyさん2006/09/26(火) 00:27:51ID:???
543,546です

勝手な想像で見当違いな事を言ってしまい申し訳ない。
バグを登録してくる人達に、コアチームのポリシー・「バグ」ではないこと・修正されないことを伝えるだけだね。
05485452006/09/26(火) 00:36:18ID:???
>>547

いや、普通に考えるとそうだと思う。
Exciteで翻訳しながらそう回答した。
マルチバイトをアメリカンに説明するのはムズい。日本語でも説明できないのに。

Thanks.
0549nobodyさん2006/09/26(火) 03:46:23ID:byyWwaMP
>>523
文字コードはUTF-8で作っていった方がいいと思うよ。これからの時代。
0550nobodyさん2006/09/26(火) 07:53:34ID:???
あるSNSに↓のフォームがあったんですけど、
actionにある記述って拡張子とかいらないのですか?
てか、これだけでPHPで作られてるのかわかりますか?
<form name="link" method="post" action="../diary/Detail" >
0551nobodyさん2006/09/26(火) 09:26:19ID:???
それだけじゃPHPかどうか分からない
0552nobodyさん2006/09/26(火) 09:33:10ID:???
自分も疑問だなあ。
たまに拡張子のないページ見かける。
ページ遷移でjspとか出てきたりして、
はじめてJavaだったのかーって感じだったり。
これはいったいどういう仕組み?
htaccessかなんかかな?
0553nobodyさん2006/09/26(火) 09:49:17ID:???
>>549
自鯖立ててる人は真似しちゃダメよん
※転送量1.5倍(当社比)
05541502006/09/26(火) 09:49:36ID:???
>>551
552
エイリアスじゃない?
プログラム自体の位置を見せたくないとか。
0555nobodyさん2006/09/26(火) 09:51:01ID:???
やっぱりわからないですよね。。
拡張子ってどうやれば、隠せるのでしょか?
あと、そのサイトがphpやperlで作られているって見分ける方法ってあるのでしょうか?
0556nobodyさん2006/09/26(火) 10:18:54ID:???
GREEの写真登録みたいに、登録したあとに、「登録しました」って表示させ、
数秒後に次のページ渡すにはどうすればいいのでしょうか!?
sleepとheaderではできないですよね。。
0557nobodyさん2006/09/26(火) 10:25:13ID:???
>>556
<meta http-equiv="Refresh" content="秒数;URL=移動先URL">
0558nobodyさん2006/09/26(火) 10:36:35ID:???
>>557
おぉー簡単だ!!ありがとうございます!
0559nobodyさん2006/09/26(火) 10:41:25ID:???
>>550 >>552
たとえば mod_rewrite
0560nobodyさん2006/09/26(火) 10:44:49ID:???
もしかしたら../diary.phpかもしれん。
0561nobodyさん2006/09/26(火) 11:06:44ID:???
function henkan($string){
if(get_magic_quotes_gpc()){
$string = stripslashes($string);}
$string = htmlspecialchars($string);
return $string;
}
こうしたstringをそのまま、データベース(mysql)にぶち込んでるけど、
問題ってあるかな?
0562nobodyさん2006/09/26(火) 11:20:06ID:???
>>559
アパチェの設定でできるだぁ。ほう〜
0563nobodyさん2006/09/26(火) 11:23:45ID:???
>>555
作る側が意識して隠してれば分からない
Content negotiationとかrewriteとかScriptAliasとか方法はいろいろある
0564nobodyさん2006/09/26(火) 11:26:30ID:???
>>561
問題ありまくる
普通にSQLインジェクションできちゃうよそれじゃあ
0565nobodyさん2006/09/26(火) 12:47:34ID:???
564
ですよね。これはXSS対策で、HTMLに表示しなければ関係ないですよね??
これとは、全く別に、POSTで送られてきた値にinitvalやaddslashを用いればいいのでしょうか?
それとも、561の関数にinitvalやaddslashを入れればいいのでしょうか?
0566nobodyさん2006/09/26(火) 12:59:28ID:???
理想はマジッククォートはOFFで、リクエストされたデータには
何もフィルタかけず(オーバーヘッドを減らすため)
SQLInjection対策でDBに突っ込むものを直前にエスケープ(addslashes)
XSS対策で出力するものを直前にHTML特殊文字変換(htmlspeicalchars)
っていうことじゃないかね
0567nobodyさん2006/09/26(火) 13:15:21ID:???
$_SERVER[PHP_SELF]で、ファイルをアップしmove_uploaded_fileで失敗したら、
エラーを表示させてるのですが、この場合、エラーが出たら、
unlinkで削除するのが良いのでしょうか?したら、このファイルは存在しないみたいな
エラーがでたので、アップされたファイルは保存されていないのでしょうか?
0568nobodyさん2006/09/26(火) 13:17:42ID:???
>>566
なるほど。勉強になります。あざっす!
でも、ホスティングだとマジッククオートonになってるんですよね。。

0569nobodyさん2006/09/26(火) 13:54:17ID:???
567です。
すいません。タイプミスでした。ちゃんと削除されました。
0570nobodyさん2006/09/26(火) 16:31:25ID:EMjXfoVa

絶対に見逃せないエロ娘たち
http://wanwanwan.mine.nu/uploader/src/up0045.jpg
http://wanwanwan.mine.nu/uploader/src/up0044.jpg
0571nobodyさん2006/09/26(火) 17:08:26ID:???
>>570
うほ!見逃せねーぜ!
0572nobodyさん2006/09/26(火) 18:26:08ID:???
class内の処理を途中で抜け出すことって可能でしょうか?
$obj = new EveLove();
$obj2= new EveDisLove();
class EveLove{
function EveLove() {
echo "test";
echo "test2";
ここで抜ける
.....echo "test20";
}
}
class EveDisLove{
function EveDisLove() {
echo "1";
echo "2";
.....echo "20";
}
}
表示を
test
test2
1234...20となるようにしたいです
可能であれば関数等教えてくださいm(_ _)m
0573nobodyさん2006/09/26(火) 18:51:35ID:???
return
0574nobodyさん2006/09/26(火) 18:52:43ID:???
>>572
意味が分からん。が、書いてる内容そのままに答えるなら
returnで抜けるか、実行させたくない部分をコメントアウト、もしくは削除しろよ。
05755322006/09/26(火) 20:00:27ID:???
やっぱり
sleep(20)で一時停止中に再読み込みやストップボタン押しても、20秒後停止が解除されたら
スクリプトが最後まで実行されてしまうんですが、
どうしたらいいのですか?

頭にignore_user_abort(1);
をつけたのですが変わらずでした
おしえてください
0576nobodyさん2006/09/26(火) 20:05:52ID:???
>>565、>>566
なぜ、わざわざaddslashesを使うんだよ?
SQLエスケープ専用の関数があるんだからそれを使えよ。

お前程度の知識でaddslashesを使うと、必ず穴が出る。
0577nobodyさん2006/09/26(火) 20:12:45ID:???
>>576
これ、読め。
http://www.amazon.co.jp/gp/product/4883374718/ref=sr_11_1/250-2846891-3685828?ie=UTF8
お前程度の知識でaddslashesを使うと、必ず穴が出る。
0578nobodyさん2006/09/26(火) 20:42:55ID:???
>>576
だからエスケープって書いてるじゃん
上でのaddslashes云々の話から繋がるように例として挙げてる
文脈から判断してくれよそれくらい
0579nobodyさん2006/09/26(火) 21:14:43ID:OUvdqD7Q
PDOのエスケープは楽ちんだけど、あれって大丈夫?
0580nobodyさん2006/09/26(火) 21:25:16ID:4x0TvdIu


echo レベルひっくぅ・・・・

0581nobodyさん2006/09/26(火) 21:43:25ID:???
>>577
バカかお前は。俺はその本はもちろん持ってるし、高木浩光氏のサイトも読んでる。
お前みたいなバカがいまだにaddslashesなんか使ってるから問題発生するんだ。

>>578
はぁ? 何言ってんの? 勝手に無茶苦茶な話をしてんじゃねぇよチンカス。
だからエスケープにはaddslashesじゃなくて専用関数(mysql_real_escape_string等)使えっての。
0582nobodyさん2006/09/26(火) 21:44:36ID:???
郵便番号入れると住所がはいるフォームがありますが、なにか
スクリプトは公開されていないでしょうか。
0583nobodyさん2006/09/26(火) 22:18:16ID:???
なにやら半島人が紛れ込んでますね^^;
そんな真っ赤にならんでも^^;;;;;
0584nobodyさん2006/09/26(火) 22:25:25ID:???
>>581
その本読んでるなら、そんなにaddslashesを批判する必要なくない!?
まあ、おれはよくわからんがその本では、mysql_real_escape_stringよりも
addslashesを薦めてるぞ。
05855782006/09/26(火) 22:31:27ID:???
>>581
はぁ?何言ってんの、チンカスレベルプログラマw
0586nobodyさん2006/09/26(火) 22:39:58ID:???
あなたはどっち派?
mysql_real_escape_string or addslashes

おれ、addslashes
0587nobodyさん2006/09/26(火) 22:45:50ID:???
>>585
具体的に反論できないチンカス乙

悔しかったらmysql_real_escape_stringよりも
addslashesを使うべき理由を挙げてみろ。
0588nobodyさん2006/09/26(火) 22:50:19ID:???
P D O 最 強
0589nobodyさん2006/09/26(火) 22:54:42ID:???
>>586
マニュアルにあるユーザ定義関数 quote_smart( ) なんてどうよ?
http://www.php.net/manual/ja/function.mysql-real-escape-string.php#AEN103489
0590nobodyさん2006/09/26(火) 22:55:04ID:???
基本的に、ストアドついてればいいよ。
0591nobodyさん2006/09/26(火) 23:02:26ID:???
>>585>>587
どっちもチンカス以下のなんだからわざわざしゃしゃり出てくるんじゃねーよマンカス。
0592nobodyさん2006/09/26(火) 23:03:25ID:???
>>589
これ↓、無意味なコードじゃねぇ? 別に数値かどうかに関わらず全てクォートすればいいわけで。
数値かどうか判定する分だけ無駄な処理に思われる。

// 数値あるいは数値形式の文字列以外をクオートする
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
0593nobodyさん2006/09/26(火) 23:04:37ID:???
mysql_real_escape_string
データの安全性を確保するため、MySQL へクエリを送信する場合には (わずかな例外を除いて)常にこの関数を用いなければなりません。
0594nobodyさん2006/09/26(火) 23:08:34ID:???
>>586
俺はmysql_〜派
理由。こっちなら文字コード設定に合わせて最適なエスケープをしてくれるから。

UTF-8しか使わないならどっちでもいーんじゃないの?
外部との連携とかあってSJIS使う羽目になったらaddslashesは「使えない」。
0595nobodyさん2006/09/26(火) 23:16:27ID:???
magic_quotesだけだと何がだめなの?
0596nobodyさん2006/09/26(火) 23:23:38ID:???
addslashesを使うメリットは、
処理が早い。
データベースコネクションの有無に影響されない。
逆変換が容易。
magic_quotes_gpcとの相性が良い。
0597現在2006/09/26(火) 23:27:22ID:???
addslashes 1票
mysql_real_escape_string  2票
0598nobodyさん2006/09/26(火) 23:29:52ID:???
そもそもmysql_real_escape_stringとaddslashesではエスケープする対象の文字が違う
0599nobodyさん2006/09/26(火) 23:33:15ID:???
>>596
> magic_quotes_gpcとの相性が良い。
なんてことを考えていること自体がだめ
0600nobodyさん2006/09/26(火) 23:37:15ID:???
magic_quotes_gpc = onだと、addslashesを使う必要ないの?
0601nobodyさん2006/09/26(火) 23:48:12ID:???
>>591
マンカスは美味なのでチンカス以下ではありません。明らかに上です。
0602nobodyさん2006/09/27(水) 00:02:57ID:???
>>596
逆変換が必要になるケースが理解できない…
どういう場面でそんなことする羽目になるんだ。

magic_quotes_gpcはそもそも真面目にエスケープ処理を考えてる人なら
最初から使うべきものじゃないんだから考慮する必要を感じない。
0603nobodyさん2006/09/27(水) 00:03:35ID:???
すまん、HTML中に

<?= echo 文字列 . $_POST['なんとか'];?>

これが危険な理由がバカな漏れには分からないorz
教えてたもれ。
0604nobodyさん2006/09/27(水) 00:10:17ID:???
>>603
XSS
クロスサイトスクリプティング
でぐぐれ
0605nobodyさん2006/09/27(水) 00:29:47ID:???
とりあえず、よく分からんヤツはPDOとかPEAR::DBのプレイスホルダつかっときゃ間違いない
0606nobodyさん2006/09/27(水) 00:44:56ID:S78j1V6H
$_SESSION変数は、そのセッション中、ずっとメモリに保持されているのでしょうか?
それとも、スクリプト内で呼ばれた時だけ、セッション・ファイルから
随時メモリに読み出されて利用されるのでしょうか?

たとえば$_SESSION['login']='ok'という内容で格納されているとして、
スクリプト中で、if ($_SESSION['login']=='ok') {} のように使った場合、
$_SESSION['login']は、そのスクリプト終了後にメモリから解放されるのか、
それともセッションが継続する限りメモリ内に$_SESSION['login']が残り続けるのかが知りたいです。
0607nobodyさん2006/09/27(水) 00:52:31ID:???
>>596
サイテロ本の丸写し乙。

>処理が早い。
処理時間に有意の差が出るほど長大なSQLを使う場面があるとは思えない。

>データベースコネクションの有無に影響されない。
通常、エスケープしたSQLは、当然DBに接続して使うわけで、
結局コネクションは必要になる。

>逆変換が容易。
俺は今まで数々のWebアプリを作ったが、逆変換が必要だった場面など記憶にない。

>magic_quotes_gpcとの相性が良い。
いくらテロリストと相性が良くても、テロリストはテロリストだ。
0608nobodyさん2006/09/27(水) 01:16:17ID:???
>>606
1点、そもそも間違ってる部分があると思うんだが、
> それとも、スクリプト内で呼ばれた時だけ、セッション・ファイルから
> 随時メモリに読み出されて利用されるのでしょうか?
と
> $_SESSION['login']は、そのスクリプト終了後にメモリから解放されるのか、
の部分。
まるでスクリプトが終了してもメモリ上にデータが残ってるかのようだが、
スクリプト終了=使われてた全メモリ解放だよ。

というわけで正解は
スクリプトの中でセッションを開始した時点で全部の内容がメモリに読み出され、
スクリプトが終了した時点で全部解放される。
となる。
> スクリプト内で呼ばれた時だけ、
は間違いだが
> そのスクリプト終了後にメモリから解放される
は正解。
0609nobodyさん2006/09/27(水) 01:22:05ID:S78j1V6H
>>608
>スクリプト終了=使われてた全メモリ解放だよ
よく考えたらそれはそうでしたね。分かってたのに勘違いしました。

>スクリプトの中でセッションを開始した時点で全部の内容がメモリに読み出され
ズバリその点について気になっていたのでした。
たとえば$_SESSION['A']、$_SESSION['B']、$_SESSION['C']とあった場合、
スクリプト中で$_SESSION['A']だけを使った場合、メモリに読み込まれるのは$_SESSION['A']だけなのか、
それともA〜Cまで全部セッション開始(session_start)時に全部読み込まれてしまうのか、
それが質問したい点でした。
0610nobodyさん2006/09/27(水) 01:28:24ID:???
>>592
どうなんだろうね。俺はこういうちゃんとした処理してるほうが好きだけど。
俺だったらis_boolも判断して0か1に変換するし。mysqlだとtrue,false使えないんだよね。
汎用性のある、エスケープするfunctionなりクラスなり作るならしっかりやっといた方がいいとは思う。

mysql_real_escape_stringのマニュアルでは、引数にstringとってる。
まぁ何にしろ正常に動作するなら、あとは好みの問題かなぁ・・・

>>600
magic_quotes_gpcがonで、addslashesすると2重にエスケープされちゃうでしょ。
俺はmagic_quotes_gpcがonだったらstripslashesしてDBのエスケープ関数使う派。
でもpostgresのpg_escape_stringは何か問題があるという記事を読んだような気が・・・もう1回調べよっと。
0611nobodyさん2006/09/27(水) 01:52:50ID:???
>>610
でもさ、数値かどうかを判定するロジックを仮に無くしたとして、
それで何か弊害が出るかい?

その判定ロジックを省いて、
とにかくmysql_real_escape_stringをかければ、結果は同じでしょう。
06126112006/09/27(水) 01:56:17ID:???
あと、サイテロ本では、クエリ内に「整数であることを期待される変数」を埋めこむときに、
intval()をかけないと致命的だ・・・とか書いてるけど、
俺はそうは思わない。

なぜなら、その変数をPOSTなどから受け取った時点で、is_numericやctype_digitなど
適切な手段にてしっかりバリデートしてれば問題ないわけで。
(むろん、この場合でもmysql_real_escape_stringは必須だが)
0613nobodyさん2006/09/27(水) 02:08:47ID:???
いや、だから「正常に動作するなら〜」って書いたじゃん。
好みの問題だから、そこをお互いどうこう言っても仕方ない。

postで受け取った時点でっていうのはあるね。俺も初めの頃はそうしてた。
でも毎回やるのが面倒になったから、DB用のクラスにエスケープするfunction作って、あとはデータ全部投げるだけ。
エスケープ以外のバリデートが必要なところはその場その場でやるけどね。

まぁ、それも好みの問題。

特に俺のDBクラスではいくつかのDBに対応させてて、magic_quotes_gpcがonの時にstripslashesするからfunction内でのis_boolチェックは必須。
■ このスレッドは過去ログ倉庫に格納されています