のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,668,509人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - shutdown + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
101 : nobodyさん - 2010/06/02(水) 23:31:43 ID:??? (+65,+29,-22)
>>98
{} なんぞ使ってて速度を気にするような人なんておらんだろ?
そもそも文字列内に変数を展開なんてしないし
102 : nobodyさん - 2010/06/02(水) 23:37:57 ID:??? (+71,+29,-28)
速度の違いが分かるほど複雑なスクリプト組んでるわけじゃないけど
>>100の理由でシングルしか使ってないな。妄信的に
105 : nobodyさん - 2010/06/03(木) 00:42:40 ID:??? (+11,-25,-1)
>>102
{}使ったほうがすっきりする場合は使ってる。
106 : nobodyさん - 2010/06/03(木) 01:25:57 ID:??? (+28,-30,-275)
88です
>>91
ありがとうございます。
print '<a href="'.$_SERVER['PHP_SELF'].'"> 削除 </a>';
は無事動きました。
href="
の部分のダブルクオテーションは文字という考え方ということですよね?
なので、
'<a href="'
という、シングルクオテーションで囲まれている
<a href="
が文字と言う考え方であってますでしょうか?


次に、変数を""というダブルクオテーションで囲むと、
その囲まれてる変数は展開されるという認識の下、以下にしてみるとダメでした。
print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';

今回、a href=の後のクオートがもともとのHTMLの仕様では、
ダブルクオテーションであり、そのあとに、変数を囲むダブルクオテーションが続くと
何か問題が出てしまうのでしょうか?


さらに、{}で変数を囲めるということでためしてみました。

print '<a href="'{$_SERVER['PHP_SELF']}'"> 削除 </a>';
も、
print '<a href="'.{$_SERVER['PHP_SELF']}.'"> 削除 </a>';
も動きませんでした。
書き方がまちがっていますでしょうか?
107 : nobodyさん - 2010/06/03(木) 01:26:34 ID:??? (+62,+29,-65)
展開可能とはいえ文字列ん中に変数入れるとか普通気持ち悪くね?
HTMLの中に書くって事でスタートしてるからこうなってるんだと思うよ
つまりビュー層のハナシ
zend のコーディング規約でもシングルクオートで変数は連結しろとかなかったっけ?
他言語の使い手にも読みやすいって事まで考えてそうなってると思うんだけどな
108 : nobodyさん - 2010/06/03(木) 01:35:04 ID:??? (+20,-30,-116)
>>106
<a href="
が文字と言う考え方であってますでしょうか?

あってる

print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';
では,"$_SERVER['PHP_SELF']" のパースができない(だったような

print '<a href="' . "{$_SERVER['PHP_SELF']}" . '"> 削除 </a>';
なら動くと思う。

素直に
print '<a href="' . $_SERVER['PHP_SELF'] . '"> 削除 </a>';
でいいじゃんかよ

ちゃんとエスケープもしろよ?歯も磨けよ?
109 : nobodyさん - 2010/06/03(木) 01:35:14 ID:??? (+39,-30,-159)
>>106
> '<a href="'
> という、シングルクオテーションで囲まれている
> <a href="
> が文字と言う考え方であってますでしょうか?

あってる。

> 次に、変数を""というダブルクオテーションで囲むと、
> その囲まれてる変数は展開されるという認識の下、以下にしてみるとダメでした。
> print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';

print '<a href="'."{$_SERVER['PHP_SELF']}".'"> 削除 </a>';
にしてみて。

> print '<a href="'{$_SERVER['PHP_SELF']}'"> 削除 </a>';

.が無いし、{}が不要。

> print '<a href="'.{$_SERVER['PHP_SELF']}.'"> 削除 </a>';

{}が不要。
110 : nobodyさん - 2010/06/03(木) 01:36:35 ID:??? (+41,-30,-49)
>>106
$_SERVER['PHP_SELF']はセキュリティ上の問題があるのでHTMLとして出力する物には使わない
$_SERVER['SCRIPT_NAME']またはbasename(__FILE__)で代用
111 : nobodyさん - 2010/06/03(木) 01:40:41 ID:??? (+33,-30,-14)
$_SERVER['PHP_SELF']や$_SERVER['SCRIPT_NAME']を使わなくても
<a href=""> 削除 </a>
でいけるやん
112 : nobodyさん - 2010/06/03(木) 03:47:38 ID:??? (+57,+29,-4)
みんなよくつきあうな。どうみても釣りじゃん。
113 : nobodyさん - 2010/06/03(木) 05:12:55 ID:??? (+39,-30,-41)
{}で囲むのはダブルクオテーション中のときだけでいいです

//ダブルの場合
echo "こんにちわ、{$name}さん。";

//シングルの場合
echo 'こんにちわ、' . $name . 'さん。';
115 : nobodyさん - 2010/06/03(木) 07:26:38 ID:??? (+51,+29,-27)
>>114
そういうのはそのまま考えて分割して連結でよくね?
マルチバイトとか絡んでくると面倒になるし
116 : nobodyさん - 2010/06/03(木) 07:28:03 ID:??? (-6,-29,+0)
sprintfとか使うけどな
118 : nobodyさん - 2010/06/03(木) 07:37:57 ID:??? (+10,+27,-15)
>>117
変換してんじゃないの?
120 : nobodyさん - 2010/06/03(木) 08:26:57 ID:??? (+31,+3,-7)
PHP でやってるとしたらそうじゃね? auto は微妙だけど
121 : nobodyさん - 2010/06/03(木) 10:56:12 ID:??? (+66,+29,-1)
>>109
>>110
>>111
>>113
ありがとうございました。
おかげさまで完全に理解できました!!
122 : nobodyさん - 2010/06/03(木) 12:10:17 ID:??? (+71,+29,-31)
>>121
おめ。

どうやって勉強してるかわからないけど、
今の知識だとセキュリティ対策が十分にできないと思うから
本とか読んで学んだほうがいいよ。
123 : nobodyさん - 2010/06/03(木) 15:18:39 ID:??? (+42,-30,-41)
>>89 >>108
元の質問者とは別人ですが、便乗して質問させてください

$_SERVER['PHP_SELF']より$_SERVER['SCRIPT_NAME']のほうが安全ということですが、
$_SERVER['SCRIPT_NAME']を使ってもエスケープは必要なんでしょうか?
124 : nobodyさん - 2010/06/03(木) 16:24:14 ID:??? (+69,+29,-21)
>>123
確かにそちらの方が安全だが、アンカーの先にはそれについて言及していない。
誰にレスをしたんだ?
125 : nobodyさん - 2010/06/03(木) 16:51:43 ID:??? (-17,-29,-27)
>>123
なぜ危険/安全なのか理解してる?
「php_self script_name」で検索すれば比較してるサイトがいっぱいでてくるよ
126 : nobodyさん - 2010/06/03(木) 16:55:55 ID:??? (-1,-29,-33)
http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
>第1章 総論
>より良いWebアプリケーション設計のヒント
(1) プログラミング言語の選択
>1) 例えば、PHPを避ける
127 : nobodyさん - 2010/06/03(木) 17:15:09 ID:??? (+15,-30,-124)
>>124
> 誰にレスをしたんだ?

主に>>108の「ちゃんとエスケープもしろよ」へのレスです。

>>125
はい、$_SERVER['PHP_SELF']のほうをそのまま出力すると
JavaScriptを仕込まれてしまう可能性があるということですよね?
なので、エスケープする理由はわかります。

お尋ねしたいのは、_SERVER['SCRIPT_NAME']でもエスケープする必要があるのかということです。
SCRIPT_NAMEにはPHP_SELFのようなXSSの脆弱性はないと思ってたんですが、
何か特殊な方法による攻撃の対象になることがあるんでしょうか?
128 : nobodyさん - 2010/06/03(木) 17:55:31 ID:??? (+5,-30,-64)
>>127
http://www.php.net/manual/ja/reserved.variables.server.php
'PHP_SELF'
現在実行しているスクリプトのファイル名です。
ドキュメントルートから取得されます。
例えば、http://example.com/test.php/foo.bar というアドレス上にあるスクリプトでは
$_SERVER['PHP_SELF'] は /test.php/foo.bar となります。

'SCRIPT_FILENAME'
現在実行されているスクリプトの絶対パス
130 : nobodyさん - 2010/06/03(木) 18:08:47 ID:??? (-7,-29,-5)
>>129
fopenでmodeにbフラグ付けてる?
132 : nobodyさん - 2010/06/03(木) 18:15:38 ID:iSHgRF9v (-20,+29,-24)
ごめんなさい文末一行
○前者はコンパイルなんかのコスト分遅いっていう認識はあってますか?
×後者はコンパイルなんかのコスト分遅いっていう認識はあってますか?
133 : nobodyさん - 2010/06/03(木) 18:19:41 ID:??? (+12,-29,-22)
>>130
はい。読み込み専用で開けばよいので
パラメータは'rb'をつけています。

134 : nobodyさん - 2010/06/03(木) 19:59:49 ID:??? (+3,-30,-19)
>>133
file_get_contentsやreadfileは試してみた?
135 : nobodyさん - 2010/06/03(木) 20:02:16 ID:??? (+27,-29,-53)
>>131
requireやincludeは外部ファイルのスクリプトを読み込むもの。
extension_dirなどの拡張モジュールは、
Cなどの低級言語で書かれているのでPHPより高速で、当然にコンパイルされているので速い。
136 : nobodyさん - 2010/06/03(木) 20:22:42 ID:??? (-3,-29,-30)
>>129
PHPスクリプトにBOMが付いてないかい
こういう問題はHTTPをモニタリングするツールを入れて
実際に送られたヘッダとデータを確認するのがいいんだが
137 : nobodyさん - 2010/06/03(木) 21:00:55 ID:??? (+7,-29,-131)
>>133 >>136

先ほど自己解決しました。
おそらく・・なんですが。
サーバ側のファイルとクライアントでダウンロードしたファイルを
比較したところ、クライアント側には行頭に改行コードが入ってました。

そのせいでファイルサイズも1バイト分差異がありました。

対策としてサーバ側のスクリプトファイルの
不要な改行コードを削除しました。

<?
--色々なロジック--
?>
 ←この辺りの不要な改行コードを削除。


そうしたところ、こちらが意図するとおりにファイルを
送ることが出来ました。

どうもありがとうございました。
138 : nobodyさん - 2010/06/03(木) 21:02:06 ID:??? (+0,-29,+0)
137ですが、
>>133ではなく、>>134でした。

申し訳ありません。
139 : nobodyさん - 2010/06/03(木) 21:30:19 ID:??? (-1,-29,-39)
SAPIのCGIを見ると、「PHP5.3まで」とあるんですが、PHP5.4以降はどうなってしまうのでしょうか?

http://jp2.php.net/manual/ja/function.php-sapi-name.php
140 : nobodyさん - 2010/06/03(木) 21:56:52 ID:??? (+68,-29,-48)
>>137
XML吐く時に同じ事食らったよ
以来終了タグ ?> は書かなくなった
zend framework のコーディング規約でも書くなってなってる
141 : nobodyさん - 2010/06/03(木) 22:36:01 ID:??? (+99,+29,-19)
>>140
バカよけのための規約で、結構前からあるにはある
142 : nobodyさん - 2010/06/04(金) 02:08:52 ID:??? (+62,+29,-123)
PHPをプログラミングするのにお薦めの最適な開発ツール(エディタ)って何になりますか?

コード補完してくれて,定義済みのうユーザー定義関数もアシストしてくれるような定番があれば是非知りたいです
MySQLのクエリも同時に書くのでそれも補完アシストしてくれたりしたら最高ですがそんなのってあるんでしょうか?

開発効率が格段にあがるのでしたら有料でも全然かまいませんので お願いします
ちなみに今は秀丸で書いてます
143 : nobodyさん - 2010/06/04(金) 02:19:59 ID:??? (-2,-29,+0)
NetBeans Eclise
144 : nobodyさん - 2010/06/04(金) 02:26:29 ID:??? (-6,-29,-12)
vim emacs
145 : nobodyさん - 2010/06/04(金) 02:36:38 ID:??? (+57,+29,-104)
プログラマならvimとかemacsみたいな自分でカスタムできるエディタを
早いうちから使っといた方がいいよ

秀丸でもマクロで多少のカスタムはできるんじゃなかったっけ
使ったことないから知らないけど
146 : nobodyさん - 2010/06/04(金) 02:51:45 ID:??? (+4,-29,-34)
ちょっとした編集 gvim/vim
デバッグまでする場合 netbeans
147 : nobodyさん - 2010/06/04(金) 03:35:38 ID:??? (-1,-29,-19)
Eclipseは導入までがちょっと面倒なんだよな、NetBeansは簡単なのに
148 : nobodyさん - 2010/06/04(金) 05:42:14 ID:??? (+61,+29,+0)
>>135
やっぱりそうでしたが、ありがとうございました。
149 : nobodyさん - 2010/06/04(金) 10:31:22 ID:??? (+110,+29,-78)
>>140 >>141

たしかにzend frameworkには?>が書かれていないですね。
規約だったとは・・・。

ということは、皆さんの開発現場でも
?>は書かないようにされているのでしょうか?

?>を書かないことでのデメリットはないのでしょうか?
もしデメリットがあればそれを認識した上で
私も活用したいと考えておりますので
教えていただけないでしょうか。

150 : nobodyさん - 2010/06/04(金) 10:48:26 ID:??? (+106,+29,-16)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - shutdown + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について