【PHP】下らねぇ質問はID出して書き込みやがれ 81 at PHP
[2ch|▼Menu]
1:nobodyさん
09/02/18 21:09:16 xNLzAD7T
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
スレリンク(php板)

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

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


2:nobodyさん
09/02/18 21:09:49 xNLzAD7T
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ


3:nobodyさん
09/02/18 21:10:57 xNLzAD7T
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
スレリンク(php板)
【PHP】下らねぇ質問はID出して書き込みやがれ 79
スレリンク(php板)
【PHP】下らねぇ質問はID出して書き込みやがれ 78
スレリンク(php板)
【PHP】下らねぇ質問はID出して書き込みやがれ 77
スレリンク(php板)
【PHP】下らねぇ質問はID出して書き込みやがれ 76
スレリンク(php板)
【PHP】下らねぇ質問はID出して書き込みやがれ 75
スレリンク(php板)
【PHP】下らねぇ質問はID出して書き込みやがれ 74
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 73
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 72
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 71
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 70
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 69
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 68
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 67
スレリンク(php板)
【PHP】下らねぇ質問はここに書き込みやがれ 66
スレリンク(php板)


4:nobodyさん
09/02/18 21:11:25 xNLzAD7T
関連リンク
■本家マニュアル   URLリンク(www.php.net)
■日本PHPユーザ会 URLリンク(www.php.gr.jp)
■PEARマニュアル  URLリンク(pear.php.net)
■メーリングリスト   URLリンク(ns1.php.gr.jp)
■ZFマニュアル    URLリンク(framework.zend.com)
■Smartyマニュアル  URLリンク(www.smarty.net)

(以下英語)
■Zend本家      URLリンク(www.zend.com)
■Zend Framework  URLリンク(framework.zend.com)
■php | architect   URLリンク(www.phparch.com)
■Smarty       URLリンク(www.smarty.net)<)
■PECL本家(英語) URLリンク(pecl.php.net)

5:nobodyさん
09/02/18 21:11:49 xNLzAD7T
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → URLリンク(example.com)が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。

6:nobodyさん
09/02/18 21:12:14 xNLzAD7T
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  URLリンク(www.faqts.com)
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください

7:nobodyさん
09/02/18 21:12:52 xNLzAD7T
とりあえず以上かな?
不備があれば追記してください

8:nobodyさん
09/02/18 21:32:51
(。・ω・)もつかれ〜ふりふり

9:nobodyさん
09/02/19 01:04:54 DyMy4w1i
この人引き取ってくれませんか?><。

URLリンク(mixi.jp)

10:nobodyさん
09/02/19 01:13:59
まず僕をMIXIに入れて!話はそれからしましょ

11:nobodyさん
09/02/19 01:28:40
すいません、ボクもmixiに入れてもらっていいですかね?

12:やまは ◆2ch.net/cU
09/02/19 07:17:48 +vYGjReT
こんにちは。

ディレクトリの中身を全て表示するスクリプトを作っています。

もし、そのディレクトリの中にディレクトリがあればそれも表示するというスクリプトを書きたいのですがうまくいきません。

open.php
/test/index.php
log.dat
test2/test.php

例えば、こうなっているとします。
現在はopen.phpにいて、test2のディレクトリのtest.phpを表示したいです。【続く】

13:やまは ◆2ch.net/cU
09/02/19 07:23:16 +vYGjReT
【続き】
<?php
$dir = "./";
$i=0;
while($allfile = readdir($dir)){
if($allfile !== "." && $allfile !== ".."){
#これで、現在のディレクトリ表示
echo $allfile."<br>";
if(is_dir(($dir.$allfile)){
echo $allfile;

}
}
}
?>

これでは、現在のディレクトリにある、
『test』ディレクトリと『open.php』しか表示されません。
どうすればいいでしょうか?
よろしくお願いします

14:nobodyさん
09/02/19 07:49:11
>>13
再帰させる

15:nobodyさん
09/02/19 09:39:52
指定ディレクトリ配下を一覧表示するのに
わざわざ再帰とかありえない
WINの場合はdirだったか?find部分をおきかえれ

$path = dirname(__FILE__);
echo str_replace($path,"",shell_exec("find ".$path));


16:nobodyさん
09/02/19 09:43:41
指定ディレクトリ配下を一覧表示するのに
わざわざシェルコマンドとかありえない

17:nobodyさん
09/02/19 09:47:59
>>15
そんなのでわざわざコマンドを叩く方がありえない

18:nobodyさん
09/02/19 10:44:37
ディレクトリ一覧表示と階乗計算は再帰処理が一般的

19:nobodyさん
09/02/19 10:48:03
指定ディレクトリ配下を一覧表示するのに
わざわざ再帰とかありえない

20:nobodyさん
09/02/19 11:01:36
再帰使ってリンク数見て判断するのはプログラマーとしては定番だから覚えておいて
損はない

21:nobodyさん
09/02/19 11:08:49 vF1JGCVl
GIGAZINEとかTechCrunchって ブログツールなに使ってるの?
両方ともPHPっぽいから Wordpress だろうか?

URLリンク(gigazine.net)
URLリンク(jp.techcrunch.com)

22:nobodyさん
09/02/19 11:17:46
まぁ、コマンドもどうかと思うけど、再帰もありえんわ。

23:nobodyさん
09/02/19 11:18:31
>>21
その辺のフリーツールなんて使わないよ。
スケールできないじゃん。

24:nobodyさん
09/02/19 11:21:30
>>22
プロの俺が再帰でいいというんだから間違いない

25:nobodyさん
09/02/19 11:23:02
>>21
Gigazineはともかく下のTechCrunchはヘッダに書いてあるじゃん
generator WordPress 2.7って

26:nobodyさん
09/02/19 11:25:02
>>23

TechCrunch の方はコメント欄空でポストしたら WordPress のエラーメッセージが出た。
いろいろ改造してるのかも。

>>25
なんだ、ヘッダに書いてたか

27:nobodyさん
09/02/19 11:28:57
じゃあGIGAZINEにはプログラマーがいるってことですか?

28:nobodyさん
09/02/19 11:30:07
そりゃ聞いてみないとわからないだろw
その辺のCMS使ってるかもしれないしな

29:nobodyさん
09/02/19 11:41:17
4gamerはCMSですか?

30:nobodyさん
09/02/19 11:46:23
>>29
それはぜひ知りたい。

こういう企業向けのシステムとかあるのだろうか?

31:nobodyさん
09/02/19 11:55:59 PiBlHerA
MVCの基礎を学びたいのですがおすすめのサイトが御座いましたら教えてください

32:nobodyさん
09/02/19 11:59:37 2O78I8s0
linuxでローカルサーバ構築してPHPのテストしてる方に質問です
私はVirtualPCでvineを使って開発しているのですが
OpenSSLをアンインストールできなく、自分の入れたいバージョンが扱えないので不満です
同じようにlinuxを使用している方はどのディストリビューションをご使用されていらっしゃいますか?

33:nobodyさん
09/02/19 12:02:03
CentOS使ってるな
でもOpenSSLアンインストールできないってどういう事?
いくらでも消せると思うんだが・・・

34:nobodyさん
09/02/19 12:08:22
>>31
オブジェクト指向は理解してますか?
理解していて最初から学びたいのなら、本を買った方が早いかも。
サイトはいっぱいあるので適当に2〜3個見てみて具体的に分からないところを質問した方が良い。

>>32
PHPの質問?

35:nobodyさん
09/02/19 12:39:05
MVCとオブジェクト指向って被ってる領域もあるけど直接は関係ないだろ?

36:nobodyさん
09/02/19 12:57:34
オブジェクト指向のサンプル入り解説サイトはよく見かけるようになったが
MVCのサンプル入り解説サイトは見たことがないね
本でも一冊しか知らない

37:nobodyさん
09/02/19 13:01:34
オブジェクト指向は
$this-> こんな感じですね

38:nobodyさん
09/02/19 13:04:11
>>37
それと使う時にnewするって知っておけば、あとは何も勉強しなくていいよな。

39:nobodyさん
09/02/19 13:05:03
ぶっちゃけここのスレの住民にMVC分かるやつはいない

40:nobodyさん
09/02/19 13:05:21
いや、普通に使ってますがw

41:nobodyさん
09/02/19 13:12:59
おれが昔から自作してたものがMVCと似通ってることに最近気付いた

42:nobodyさん
09/02/19 13:14:22
***ここは初心者が初心者にハッタリで自慢するインターネットです***

43:nobodyさん
09/02/19 13:22:32 DiCiMFeX
サーバの状態を監視するツールって何使ってますか?
できればWebで確認できるやつがあればいいんですが

44:nobodyさん
09/02/19 13:23:03
ある

45:nobodyさん
09/02/19 13:25:40
>>36
基本的にフレームワークの本に載ってるよ

46:nobodyさん
09/02/19 13:26:02
初心者なオレがMVCをエスパーした。
MVCとは、初心者でもうm

47:nobodyさん
09/02/19 13:30:04
つうか、きょうび当たり前すぎてMVCを口にするの恥ずかしいだろ
その次のアーキテクチャについて話しようぜ

48:nobodyさん
09/02/19 13:37:13
すれたい が よめない ひと へ
スレリンク(php板)

49:nobodyさん
09/02/19 14:49:45 Y6HkRPoJ
Ubuntu上にPEARのライブラリをインストールしたのですが、
なぜか /usr/share/php にインストールされてしまいます。
これを /usr/share/php/PEAR にしたいのですが、どのように設定すればよいのでしょうか?

50:nobodyさん
09/02/19 14:51:13
パス指定してやればいいじゃん

51:nobodyさん
09/02/19 14:59:40 4v4/gEqf
$str = '1' * 8;
print $str;

とした場合、

8

になってしまいますが、

'11111111'

のように出力させるにはどうすればよいでしょうか?

52:nobodyさん
09/02/19 15:00:41
>>51
str_repeat

53:nobodyさん
09/02/19 15:11:16
>>40
$str = '1' * 8

これで

'11111111'

が出力されるだろうという発想が凄い。俺には無いわ。

54:51
09/02/19 15:14:06
>>52
即レス、サンクス。助かりました。

55:nobodyさん
09/02/19 15:15:47
>>53
rubyだと動いちゃうんですよ、それで。


56:nobodyさん
09/02/19 15:17:26
>>53ってPHPしかしらないの?w

57:nobodyさん
09/02/19 15:26:43
こういうゴミみたいな関数が役立つんだよな
Javaでやろうと思ったらめんどくさくてしょうがない

58:nobodyさん
09/02/19 15:37:45
>>55
マジでか!
世の中何があるかわからねーな。

>>56
すまん、勉強不足だ。
C/Java/PHPしかわからないんだ、許してくれ。

59:nobodyさん
09/02/19 15:38:26
perlだと
$str = '1' x 8;

うう〜ん直感的にわかりやすい

60:nobodyさん
09/02/19 15:40:00
PHPの場合は''や""で囲ってあっても
計算式であればintになるし、連結であればstringになるからなぁ


61:nobodyさん
09/02/19 15:40:47
>>58
vb/c/c++/java/cobol/python/ruby/perl/php/basic
これぐらい勉強してからでなおしてこい

62:nobodyさん
09/02/19 15:42:39
>>61
今時VBいるか?C#だろう、そこは。

63:nobodyさん
09/02/19 15:43:46
>>62
>>61は三十路VBおじさん

64:nobodyさん
09/02/19 15:43:48
>>59
Perlもそれで
'11111111'
になるのか?

65:nobodyさん
09/02/19 15:52:17
>>62
銀行系ではVBも使われてるの知らんのか

66:nobodyさん
09/02/19 15:57:42
>>65
今時ありえねーよ。

67:49
09/02/19 15:58:00 Y6HkRPoJ
>>50
毎回指定するということでしょうか?
どこかに設定ファイルがあるのでしょうか?

68:nobodyさん
09/02/19 16:02:26
>>67
いや、インストールする場所を指定しろってことだよ
何がしたいの?
/usr/share/php/PEARにインストールしたいんじゃないの?

69:nobodyさん
09/02/19 16:04:55
>>66
学生は黙ってろ

70:nobodyさん
09/02/19 16:06:01
>>69
待てよ。
VBつっても.netだよな?6じゃねーよな?

71:nobodyさん
09/02/19 16:09:19
>>65は既存アプリのこと言ってるんだろ。既存言い出したらなんでもあるわな

72:nobodyさん
09/02/19 16:22:50
>>64
URLリンク(q.hatena.ne.jp)

perlだと'1' x 8 で '11111111'で、
ruby、pythonだと'1' * 8 で '11111111'だな。


73:nobodyさん
09/02/19 18:53:18 wRj5eNSW
ファイルの文字コードを調べたいのですが
何かそのような関数はありませんでしょうか?

74:nobodyさん
09/02/19 19:09:05
>>73
マニュアルのmb_〜からはじまる関数を読み漁れば見つかりますよね

75:73
09/02/19 19:12:43 wRj5eNSW
>>74
先ほどから見てますが検討がつきません
一度文字列に格納してから調べろということなのでしょうか?

76:nobodyさん
09/02/19 19:17:38
>>73
何のために調べるの?

77:73
09/02/19 19:21:27 wRj5eNSW
>>76
ファイルをPHPの内部エンコードにあわせるのが目的です
mb_convert_encodingの第三引数にautoを渡したところ
うまく動作しなかったので
取得したものを第三引数にセットしようと思った次第です

78:nobodyさん
09/02/19 19:22:37
>>77
用意したファイルを内部エンコードにしておけばいいんじゃね?

79:73
09/02/19 19:23:17 wRj5eNSW
>>78
外部から第三者ガアップロードするものなので不可能なんです

80:nobodyさん
09/02/19 19:33:59
>>73
ファイルを読み込む前にチェックするっていうのは現実的じゃない。
それはわかるよな?

判定コードを書くのが面倒だったら nkfに通すとか。

81:nobodyさん
09/02/19 19:40:07
autoは設定されてないと使えないから
"SJIS,EUC-JP,UTF-8,JIS"みたいに書いてみそ

82:emi
09/02/19 19:46:09 62n5Tebm
スレ違いだったらすみません。質問です。
PHPとjavascriptを連携させるにはどうしたらいいのでしょうか。
<?php
$fp = fopen('http://自分のHP/GPS/20090109.txt', 'r');
$count = 0;
$remove_row_list = array(1, 2, 3, 4);
while ($data = fgetcsv($fp, 10000)) {
if (!in_array($count % 5, $remove_row_list)) {
echo $data[1] ."<br>\n";
echo $data[2] ."<br>\n";
echo $data[4] ."<br><br>\n";
}
{
$count++;
}
}
fclose($fp);

?>

83:nobodyさん
09/02/19 19:51:14
>>82
そのソースのどこにJavaScriptが出てきてるんだ?

84:82
09/02/19 19:53:50 /38upbVh
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "URLリンク(www.w3.org)">
<html xmlns="URLリンク(www.w3.org)">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script src="URLリンク(maps.google.com)" type="text/javascript"></script>
<script src="c.php" type="text/javascript">
//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {

//表したい場所の地図の表示
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(○,△), 16);
    //○=PHPのデータ $data[2]、△=PHPのデータ $data[4] を出したい
//特定の箇所にピンを立てる
var marker = new GMarker(new GLatLng(○,△));
map.addOverlay(marker);
}
}

//]]>
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 500px"></div>
</body>
</html>
これらをまとめてHTMLで表したい場合どのようにすればよいのでしょうか。


85:nobodyさん
09/02/19 19:54:13
>>82
連携してJavaScriptに何やらせたいのか書かないとわからん
サーバでPHP処理→ブラウザでJavaScript実行の順番はわかってるのか?

86:nobodyさん
09/02/19 19:56:22
var data2=<?=$data[2]?>;
var data4=<?=$data[4]?>;

//表したい場所の地図の表示
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(data2,data4), 16);
    //○=PHPのデータ $data[2]、△=PHPのデータ $data[4] を出したい
//特定の箇所にピンを立てる
var marker = new GMarker(new GLatLng(data2,data4));
map.addOverlay(marker);

でOK

87:73
09/02/19 19:56:55
>>80
レスどうもありがとうございます
kccコマンドが使えるのですができればコマンドラインは回避したいです

>>81
どうもありがとうございます
JISだとだめみたいだったのでISO-2022-JP,SJIS,EUC-JP,UTF-8
とやったところ4種類に対応することができました
全てに対応させるのは限界がありそうなので妥協してこの方法にしたいと思います

皆さんどうもありがとうございました

88:nobodyさん
09/02/19 19:56:58
>>82
その手の質問はよくあるけど、結論「無理」
できても、PHPでJavaScriptを書き出すくらい(変化に応じて書き出せる)
PHPから動的に読み込むにはAjaxを使えばできる

ちなみにその辺使うなら、ある程度JavaScriptは勉強しておいたほうがいい


関係ないが、無駄にAjax使いすぎるやつがいてうぜぇ・・・
しかも、JavaScriptをPHPのechoで吐き出してるから修正すらダルい

89:nobodyさん
09/02/19 20:04:10
その修正、手でやんのか?
まるっとキャプチャしちまえばいいじゃねぇか

90:nobodyさん
09/02/19 20:05:07 nJvgqLn9
sjsやeucで作られたスクリプト中に
echo "あ";
echo 'あ';

というを"と ' を使ったら書き方をするとクロスサイトスクリプティングが発生するみたいなのですが
これはなぜでしょうか?

91:82
09/02/19 20:06:16 /38upbVh
>>85
PHPのほうのテキストデータはサーバから読み込んだものなので
ブラウザからPHPで処理できるのかと…
>>88
やはり無理なのでしょうか?
すみません初心者なものなので知識はないのですが↓
でしたらPHPで出力したデータをjavascriptで扱うにはどうすべきなのでしょう?

92:nobodyさん
09/02/19 20:06:50
ダメ文字でググれ

93:nobodyさん
09/02/19 20:08:25
>>91
PHPでJavaScriptを書き出せばいいんじゃね?一番簡単な方法なら


function javascript() {

<?php
for($i = 0 ; $i < 5 ; $i++) {
echo "var test[$i] = '{$array[$i]}'\n";
}
?>

}

94:nobodyさん
09/02/19 20:20:19
>>90
>というを"と ' を使ったら書き方をすると
この辺日本語で頼むわ

95:90
09/02/19 21:13:27
すいません書き直します

echoを使うとき「"」で文字列を囲むのと、「'」で文字列を囲む記述がありますが
この"と'を統一せず、入り組んで使うとsjisとeucではクロスサイトスクリプティングになるのですがなぜなんでしょうか?


echo "テスト";
echo "こんにちは";
echo 'はじめまして';
echo "ありがとう";

96:nobodyさん
09/02/19 21:17:53
>>95
その質問は間違っている。
その例に出てきたもので、XSSが起きるわけじゃない。
しかし、君にそのクイズを出した人が言わんとしていることには二つ以上の可能性がある。
一つは、htmlspecialcharsのENT_QUOTESとENT_COMPATの動作の問題
もう一つはSJISの5Cの問題。
他になんか意図があるかもしれんが、仮定が間違ってるので、何を言っても意味がないだろう。

97:nobodyさん
09/02/19 21:19:55
あぁ、ちなみにHTML要素内の5CでXSSは起きない。

98:90
09/02/19 21:24:50
一応参考URLも載せておきます
URLリンク(d.hatena.ne.jp)
どなたかお願いします

99:nobodyさん
09/02/19 21:25:53 SUg9mjPG
csv、tsv、xml、jsonなどのデータフォーマット以外にphpで扱えるデータフォーマットを教えてください

100:nobodyさん
09/02/19 21:26:33
すいませんIDがJPG

101:nobodyさん
09/02/19 21:30:18
>>98
そのURLのソース試してみたか?
問題ないぞ。

102:nobodyさん
09/02/19 21:31:03
>>99
何だって良いんじゃない?
<>sv なんてのも可だし

103:nobodyさん
09/02/19 21:32:32
つうか、htmlspecialcharsの第2引数と第3引数をちゃんと指定していれば問題なし。

シングルクォートとダブルクォートをミックスすると表示は崩れるがXSSはできない。

104:nobodyさん
09/02/19 22:20:00
>>82
echo htmlspecialchars($data[1])
echo htmlspecialchars($data[2])

105:nobodyさん
09/02/19 22:25:13 NhJwmPwv
DWでPHP書いてますがeclipseで開発するメリットを教えてください

106:nobodyさん
09/02/19 22:27:41
ない

107:nobodyさん
09/02/19 22:42:26
DWの方が絶対良い
データベースとか楽に構築できるしね

108:nobodyさん
09/02/19 22:56:12
>>105
スレチと思ったが開発環境スレが落ちてるな
Eclipseのいいところは、
クラスや関数のアウトライン参照、コンテキストに沿ったコード補完、リファクタリング(まだまだ貧弱だが)、
ブレークポイントやステップ実行、その際の変数参照、
プラグインを導入すればバージョン管理システムやDBMSともIDE上から作業できる
これらに興味がなければ無理して乗り換える必要もないかな

109:nobodyさん
09/02/19 23:01:15
DWでもCVSやSVNと接続できるけどな。
PDT使ったら、DWには戻れない。

まぁ、でも、サイトにすぐアップできるとか、いいよね。
でも、コードカラーリング崩れない? > DW

110:nobodyさん
09/02/20 00:57:08
DWはIDEじゃないから比較するものじゃないでしょ
使ったことないから知らないけどデバッガとかついてないでしょ?

111:82
09/02/20 01:21:04 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さん
09/02/20 01:37:44 r16tK4jF
Smartyの質問なのですが、、PHPと関連するので質問させていただきます。

テンプレートを表示する時
$smarty->display("index.html");

で表示できますが、display()の中を変数にする事って出来ないでしょうか?
それが出来たら、DBに保存しているHTMLをSmartyに反映させることが
出来るのですが、$smarty->display($html);とする方法では無理でした。

113:nobodyさん
09/02/20 02:41:12
demiru

114:nobodyさん
09/02/20 05:22:05 nLAMcH0P
PHPのメモリって勝手に開放されるのですか?
デストラクタでunsetとかしないでも大丈夫ですか?

115:nobodyさん
09/02/20 07:29:32
自動的に開放する。
無闇にunsetすると非効率になることが多いらしい
が、処理時間の長いジョブとかの場合は開放した方がいい場合もある

116:nobodyさん
09/02/20 08:38:58
>>112
URLリンク(www.smarty.net)
これでできないか?

117:nobodyさん
09/02/20 09:18:57
はい?
$template = 'index.html';
$smarty->display($template);
で普通にできるのでは?


118:nobodyさん
09/02/20 10:16:20 P+ZCl9Zr
昨日今日からの初心者です。
<html><body>
<?php
if(!適用条件)
{ echo "適用外"; exit;}
// 適用条件内
...
?>
</body></html>
と書くと適用条件外の場合"</body></html>"が出力しないようなのですが仕様なのでしょうか?
その場合回避策としてタグの終りにジャンプとか抜けるみたなことは出来るのでしょうか?
(適用条件内を1スコープにして括弧で括る、は出来ればしたくないので…)

119:nobodyさん
09/02/20 10:29:22
>>118
exitじゃなくて、goto ラベル;にしたらいいよ

120:nobodyさん
09/02/20 10:39:43
>>119
5.3以降でしか使えない変な物を教えるな

>>118
条件外の時はexitしてるからそれ以降が実行されないので
それ以降の</body></html>が出力されない
そういう風に書くなら

if (適用条件) {
 条件内処理
}
else {
 条件外処理
}
にすればいい
あと、こっちのスレのがオススメ
スレリンク(php板)

121:nobodyさん
09/02/20 10:45:06
条件内処理をブロックに入れたくないって言ってるんだから、>>120は無理でしょ。

せめて、
{ echo "適用外</body></html> "; exit;}
だな。

122:nobodyさん
09/02/20 11:05:37
低級者向け:関数化すれ
中級者向け:テンプレエンジン使え
上級者向け:フレームワーク使え

123:nobodyさん
09/02/20 11:05:49
いや、なんでそこでexit使うか分からんな。
>>118はexit使わなくても問題ないし。

124:nobodyさん
09/02/20 11:06:54 /aL6hv6c
>>122
逆じゃない?PHPで自分で作れないからフレームワーク使うんだろ?

125:nobodyさん
09/02/20 11:06:57
exitしないと、適用外のときでも、適用内の出力がまざっちまうじゃねぇか

126:nobodyさん
09/02/20 11:08:20
まず、初心者がくくりたくないとかいうわがままを許していいのかってことじゃねぇか。

127:nobodyさん
09/02/20 11:10:01
>>125
適用外のときは別途処理すればよくね?

128:nobodyさん
09/02/20 11:10:28
>>118
なぜ「出来ればしたくない」のか聞かせてくれ。

129:nobodyさん
09/02/20 11:18:07
>>127
詳しく

130:nobodyさん
09/02/20 11:23:24 P+ZCl9Zr
回答・説明ありがとうございます。
取りあえず出来る書き方で書いて、天に祈りが届いたと思ってPHP5.3を待つ事にします。

>>128
Cで例外処理の場合はgoto文を使いたい(条件文が増えるとネストが深くなったりコードが重複したりするので)
みたいなものです、プログラム思想みたいなものなので余りこれ以上の突っ込みはご勘弁を…

131:nobodyさん
09/02/20 11:25:54
gotoの方がよっぽど悪質だよww

132:nobodyさん
09/02/20 11:34:03
try-catch

133:nobodyさん
09/02/20 11:39:58
こんなところでtry-catchを持ち出そうとするからPHPerは糞だって言われるんだ

134:nobodyさん
09/02/20 11:41:19
>>133
すまん
例外処理と聞いて反射的に貼り付けただけなんだ

135:nobodyさん
09/02/20 11:56:07
>>130
それは貴方のロジックとかが悪いだけ

136:nobodyさん
09/02/20 11:56:21
gotoが許されるのはHSPだけです

137:nobodyさん
09/02/20 11:59:50
finallyを実装しなかった罪は思い

138:nobodyさん
09/02/20 12:55:37
設計が悪いのにプログラム思想がうんぬん言われてもな…w
困るんだわ…w

139:nobodyさん
09/02/20 13:12:10
せっ・・・けい・・・?

140:nobodyさん
09/02/20 15:34:00
PHPのデバッガで、gdbのようなものはありますか?
主にコマンドラインプログラムが対象です

attachの機能(すでに起動しているものを乗っ取れる)が
必須なんですが

141:nobodyさん
09/02/20 16:27:31 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"
"URLリンク(www.w3.org)">
<html xmlns="URLリンク(www.w3.org)">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>たいとる</title>
// 以下略


142:nobodyさん
09/02/20 16:33:21
どうしてもUTF8でやりたいのなら
ezwebだけ出力するときだけsjisに変換したら?

143:nobodyさん
09/02/20 16:35:22
>>141
URLリンク(www.au.kddi.com)
> また、EZwebでサポートする文字コードはShift-JISです。

144:141
09/02/20 16:44:08
>>142,143
返答ありがとうございます。
Shift-JISに変換して出力するようにします。

ですが、.html拡張子のUTF-8なページは文字化けしないのが疑問のままなのは
ちょっとモヤモヤが残ります。
識者いらっしゃいましたら、引き続きよろしくお願いします。

145:nobodyさん
09/02/20 18:39:08
>>144
header送信はどうやってる?

146:nobodyさん
09/02/20 18:58:54 QkuM0xlT
PHPの中から、apache上で走っているのか
バッチファイル的に使われているのか(シェル上で、php hoge.php)を
判断する方法を教えて下さい

147:nobodyさん
09/02/20 19:04:26
>>146
phpinfo保存してdiffして好きなのを使うとか

148:nobodyさん
09/02/20 19:12:40
>>147
ありがとうございます
それをヒントにして$_SERVERを比較したところ
SHELLというキーが、シェルから呼んだ場合には設定されていました

149:nobodyさん
09/02/20 19:17:35
URLリンク(jp.php.net)
もろそういう用途の関数がありますよ

150:nobodyさん
09/02/20 20:55:16
php_sapi_name()ならpearのgo-pearを参考にしてもいいかも。
URLリンク(pear.php.net)

151:nobodyさん
09/02/20 21:07:24
めちゃめちゃPHP覚えてきた
自分の才能がコワイお(´・ω・‘)

152:nobodyさん
09/02/20 21:09:59
ほう,じゃ最近学んだこと何か語ってみてくれ

153:nobodyさん
09/02/20 21:34:19 JGeRmwBm
URLのうち、ドメイン直下の最上位ディレクトリを抽出するにはどうしたらいいですか?
str系の関数組み合わせて3個目の/が何文字目で4個目が何文字目で…
ってやれば出来るでしょうが、非効率というかアホっぽいので、正規表現でバキっと出す方法を
教えてください
よろしく御願いします

154:nobodyさん
09/02/20 21:37:09
>>153
scandirが使えるバージョンならドメイン直下のディレクトリ名を取得すればおk
使えないならopendirとreaddirでググレカス

155:nobodyさん
09/02/20 21:44:06
>>141
GWの文字コード変換対象はtext/〜から始まるコンテンツのみ。
SSLも変換噛まさないけ

156:nobodyさん
09/02/20 22:16:34
>>152
文字コードがshift-jis、Euc-jpだとSQLインジェクションされる
かといってutf-8は安全?というとそうでもない。

157:nobodyさん
09/02/20 22:24:54
php関係ねー
氏ねや

158:nobodyさん
09/02/20 22:27:27
そ・・・そんなん 必死に覚えてきたお(´・ω・‘)

159:nobodyさん
09/02/20 22:37:43
>>158
世の中にはいくらやっても報われないことが二つある
ひとつは賽の河原の石積み
もうひとつはお前のPHPの勉強だ

160:nobodyさん
09/02/20 23:27:51 r16tK4jF
SQLインジェクション対策は、
基本的に外部入力値をhtmlspecialcharsしていれば良い

って考えは間違い?

161:nobodyさん
09/02/20 23:31:06
>>160
大間違い


162:nobodyさん
09/02/20 23:34:48
htmlspecialcharsで防げるだろ
>>161はhtmlspecialcharsを使用しても抜けられる穴について説明よろ

163:nobodyさん
09/02/20 23:39:40
>>160
htmlspecialchars(,ENT_QUOTES)で防げるのは「Script Injection」。
Javascript埋め込みとかそんなヤツ。

「SQLインジェクション」は別問題。
「PHPサイバーテロの技法」を買って読んどけ。

164:nobodyさん
09/02/20 23:47:18
>>162
LIKEのとこに%とか*突っ込んでみるとか。
select * from table where name like '%' ;


165:nobodyさん
09/02/21 00:28:20
>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さん
09/02/21 00:32:30
あーっと、ENT_QUOTESだったか。死んでくる。

167:nobodyさん
09/02/21 00:38:03
>>160
addslashes

168:nobodyさん
09/02/21 00:44:54
>>167
addslashesも大間違い

169:nobodyさん
09/02/21 01:19:11
mysql_escape_string

170:nobodyさん
09/02/21 01:34:53
>>169
それも%とかをエスケープできないので間違い
mysql_real_escape_string

171:nobodyさん
09/02/21 01:47:18
可能な場合常にプレースホルダを使う、でFAだろ
クエリの9割以上はカバーできるはずだ

172:nobodyさん
09/02/21 02:05:10
めんどいから ' と ; は削っちゃえ

173:nobodyさん
09/02/21 02:17:42
mysql_escape_stringって%エスケープしないのか
ありえねーな
likeを使ってなかったらだいじょうぶ?

174:nobodyさん
09/02/21 02:35:53 60WB0UqA
addslashesじゃだめなの?
ある本にmysql_escape_stringより良いって書いてあったのに、早いって。。
純朴な素人をバカにしやがって

175:nobodyさん
09/02/21 02:37:42
お前は何を言ってるんだ
本にWebに書いてあることを鵜呑みにすることが「勉強」じゃないぞ?

176:nobodyさん
09/02/21 02:44:35
何ぬかしてる、mysql_real_escape_string() は非推奨の mysql_escape_string() と機能は同じ
だいたいこの関数はSQLステートメントとして成立する文字列リテラルを作るためのものだ
%を勝手に殺したりする用途に使うもんじゃない

177:nobodyさん
09/02/21 02:45:52
%殺されちゃたまらないな。しかも%なんてSQLインジェクションには使えないだろ
エスケープする必要ない

178:nobodyさん
09/02/21 02:46:31
PDOで解決

179:176
09/02/21 02:46:46
悪いアンカーが抜けていた
>>176>>170,173へのレス

180:nobodyさん
09/02/21 02:49:17 RWcdEiGu
phpでhtmlのinputのtype="text"でreadonly='true'して
printしているのですが、これってもしreadonlyに対応していない
ブラウザとかだったら変更可能ですかね?ブラウザとか関係なく、
もし確実じゃなければ、それに代わる確実な方法を実現したいのですが
何か方法があれば教えてください。

181:nobodyさん
09/02/21 02:58:27
>>180
変更されてはならないものはクライアントに持たせない
セッション変数なりストレージなりに保持しておく

182:nobodyさん
09/02/21 05:32:46
>>118
phpにおけるexitは強制終了。
それに続くタグとかは、一切実行も表示もされない。

183:nobodyさん
09/02/21 12:05:11
>180
そもそも、ブラウザなんぞ無くともデータは送受信可能だ。
HTTPなんて、テキストデータを送受信してるだけだからな。
クライアントに渡した全ての値は改竄され得るし、クライアントから送信される値は全て信用ならない。
input type="select"の中に、選択肢にない文字列が入ってくるなんてのはよくある事だ。

184:nobodyさん
09/02/21 12:05:51
<select><option>だったか。まあいいや。

185:nobodyさん
09/02/21 13:04:41
ちょっと気になったんだが、>>165が書いている方法も

SELECT * FROM test WHERE name='".htmlspecialchars($_POST["name"],ENTQUOTES)."'

としていれば大丈夫なんじゃないのか?
「%」の件もlike使わなければいいわけだし。
like使う用途って「検索」が多いだろうから、表示されても良いデータだろうし。

186:nobodyさん
09/02/21 13:10:29
>>183
>選択肢にない文字列が入ってくる

てっきりvalueにテキストを挿入してるかと思ったwwww

187:nobodyさん
09/02/21 13:10:58
>>185
そのセンス、感服するわ。
htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが、
SQLにlikeを使わなきゃいいって制約を追加するわけだが、

188:nobodyさん
09/02/21 13:14:04
なんでそこまでしてhtmlspecialcharsに拘るのかが理解できない。
mysqlなら何も考えずmysql_real_excape_stringが一番安全確実簡単だろ。
htmlspecialchars使うと、<や>、&のような文字が全部変換されてDBに入力されてしまう。
検索なら対象がうまくヒットしなくなるし、画面表示文字列だとエスケープ/アンエスケープのタイミングを考慮しないといけない。
DBからCSVに書き出したくなったらどう変換すればいいんだ?JavaScriptに渡す時は?

mlsql_real以下略なら、入力データはそのままの形でDBに格納されるし、そのままの形で検索される。この上なく分かりやすい。

189:nobodyさん
09/02/21 13:16:13
>>187
うん?クラスの処理とかすべて書けば良かったか?
単純かしたことに「こいつ馬鹿だwww」と感服したのかもしれないが。

そもそも、出力する時もフィールド指定するだろ。
だから、like使ってもパスワードが漏れないよな。
全件出力されるとか書いてたけど、普通limit指定するし。

>htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが
かからなくていいんじゃないか?検索させない場合は、変換入れるだろうが。

190:nobodyさん
09/02/21 13:16:27
未だにDBで何をエスケープしておけばいいかわからないやつ多いよな。

基本的には「'」と「\」だけでいいんだぜ

191:nobodyさん
09/02/21 13:19:03
>>188
「そのままの形で格納されると困る」んだよ。

お前、WEBアプリケーション作ったことあるか?
または、会員制サイト作って誰かに利用させたことあるか?

その際、htmlspecialcharsで変換されない文字があるとどうなるかわかるだろ。
それに、htmlspecialcharsだけでも、CSV出力やJavascript(AJAX)の利用は出来る。

192:nobodyさん
09/02/21 13:25:16
>>189
おいおい、
記事中から、bread&butterって検索したくてもできないじゃないか。

193:nobodyさん
09/02/21 13:26:33
zend server
人柱だれかよろ
URLリンク(sourceforge.jp)

194:nobodyさん
09/02/21 13:27:24
>>191が作ったWebアプリケーションは穴だらけ、バグだらけだろうなぁ。
ご愁傷様

195:nobodyさん
09/02/21 13:27:36
Zendワロタwwwwwwwww
よく開発続けられるよなwwwww不人気なのにwwwwwww

196:nobodyさん
09/02/21 13:29:18
htmlspecialcharsをDBアクセスで使用するバカ
後輩とかに指摘されて恥かくまでずっとやってろ

197:nobodyさん
09/02/21 13:30:31
俺はforeachのことを「フォレーチ」って読んでた
先輩は「フォー・イーチ」って読んでた

別に恥ずかしくないんだからねっ!これからも「フォレーチ」って読むわ

198:nobodyさん
09/02/21 13:32:44
>>191
なぁ、ちょっと確認していいか?
入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
おまえこの流れは理解してるってことでいいんだよな?



199:nobodyさん
09/02/21 13:34:46
xamppに代わる開発環境になるかな?

200:nobodyさん
09/02/21 13:35:45
>>199
ネーミングが悪かったかもしれない
XAMPPは初心者もなじみやすい名前だから、暫くはそっちが流行ると思うな

201:nobodyさん
09/02/21 13:36:24
>191
会員制の課金の発生する、バックエンドでCSVとTSVでレポートを吐くwebアプリを仕事で書いてるが、
・DBに渡す際にPDOのプレースホルダで渡す、あるいはmysql_real_escape_stringなどでクエリを構成する
・画面表示する際にはビューに渡す時点で原則全ての値をhtmlspecialcharsでエスケープ
 (タグを書き出さないといけない箇所や、HTML以外の箇所などの例外は慎重に検討したうえでエスケープせず渡す)
・DBには、例えばフォームからの入力なら入力値がそのままの形で格納される
このルールが一番分かりやすいし、安全だし、汎用性がある。

出力部で「この文字列はDBから来た値だからhtmlspecialcharsは不要、こっちはクライアントからの入力値だから必須…」とかやってると、絶対変換ミスが発生する。
何も考えずルールにさえ従ってさえいれば脆弱性が発生しない事をシステムが担保してくれる形にするのが一番安全なんだよ。
俺はMySQLでの危険文字を全て列挙すら出来ない低能だし、職場には俺以下の屑が溢れているが、このルールに従う限り絶対安全だとシステム側で保障できるコードを組める。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5372日前に更新/104 KB
担当:undef