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

このエントリーをはてなブックマークに追加
1nobodyさん
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/

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

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
2nobodyさん:2009/02/18(水) 21:09:49 ID:xNLzAD7T
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
3nobodyさん:2009/02/18(水) 21:10:57 ID:xNLzAD7T
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
【PHP】下らねぇ質問はID出して書き込みやがれ 79
http://pc11.2ch.net/test/read.cgi/php/1231850905/
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/
【PHP】下らねぇ質問はID出して書き込みやがれ 77
http://pc11.2ch.net/test/read.cgi/php/1228667259/
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はID出して書き込みやがれ 74
http://pc11.2ch.net/test/read.cgi/php/1221909788/
【PHP】下らねぇ質問はここに書き込みやがれ 73
http://pc11.2ch.net/test/read.cgi/php/1220440493/
【PHP】下らねぇ質問はここに書き込みやがれ 72
http://pc11.2ch.net/test/read.cgi/php/1218855685/
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
【PHP】下らねぇ質問はここに書き込みやがれ 70
http://pc11.2ch.net/test/read.cgi/php/1214356448/
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
【PHP】下らねぇ質問はここに書き込みやがれ 66
http://pc11.2ch.net/test/read.cgi/php/1205655807/
4nobodyさん:2009/02/18(水) 21:11:25 ID:xNLzAD7T
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
5nobodyさん:2009/02/18(水) 21:11:49 ID:xNLzAD7T
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://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プログラムとして実行された結果になる。
6nobodyさん:2009/02/18(水) 21:12:14 ID: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ってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
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に保存?
 → 好きにしてください
7nobodyさん:2009/02/18(水) 21:12:52 ID:xNLzAD7T
とりあえず以上かな?
不備があれば追記してください
8nobodyさん:2009/02/18(水) 21:32:51 ID:???
(。・ω・)もつかれ〜ふりふり
9nobodyさん:2009/02/19(木) 01:04:54 ID:DyMy4w1i
この人引き取ってくれませんか?><。

http://mixi.jp/view_bbs.pl?id=39866490&comm_id=244081&page=all
10nobodyさん:2009/02/19(木) 01:13:59 ID:???
まず僕をMIXIに入れて!話はそれからしましょ
11nobodyさん:2009/02/19(木) 01:28:40 ID:???
すいません、ボクもmixiに入れてもらっていいですかね?
12やまは ◆2ch.net/cU :2009/02/19(木) 07:17:48 ID:+vYGjReT
こんにちは。

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

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

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

例えば、こうなっているとします。
現在はopen.phpにいて、test2のディレクトリのtest.phpを表示したいです。【続く】
13やまは ◆2ch.net/cU :2009/02/19(木) 07:23:16 ID:+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』しか表示されません。
どうすればいいでしょうか?
よろしくお願いします
14nobodyさん:2009/02/19(木) 07:49:11 ID:???
>>13
再帰させる
15nobodyさん:2009/02/19(木) 09:39:52 ID:???
指定ディレクトリ配下を一覧表示するのに
わざわざ再帰とかありえない
WINの場合はdirだったか?find部分をおきかえれ

$path = dirname(__FILE__);
echo str_replace($path,"",shell_exec("find ".$path));
16nobodyさん:2009/02/19(木) 09:43:41 ID:???
指定ディレクトリ配下を一覧表示するのに
わざわざシェルコマンドとかありえない
17nobodyさん:2009/02/19(木) 09:47:59 ID:???
>>15
そんなのでわざわざコマンドを叩く方がありえない
18nobodyさん:2009/02/19(木) 10:44:37 ID:???
ディレクトリ一覧表示と階乗計算は再帰処理が一般的
19nobodyさん:2009/02/19(木) 10:48:03 ID:???
指定ディレクトリ配下を一覧表示するのに
わざわざ再帰とかありえない
20nobodyさん:2009/02/19(木) 11:01:36 ID:???
再帰使ってリンク数見て判断するのはプログラマーとしては定番だから覚えておいて
損はない
21nobodyさん:2009/02/19(木) 11:08:49 ID:vF1JGCVl
GIGAZINEとかTechCrunchって ブログツールなに使ってるの?
両方ともPHPっぽいから Wordpress だろうか?

http://gigazine.net/
http://jp.techcrunch.com/
22nobodyさん:2009/02/19(木) 11:17:46 ID:???
まぁ、コマンドもどうかと思うけど、再帰もありえんわ。
23nobodyさん:2009/02/19(木) 11:18:31 ID:???
>>21
その辺のフリーツールなんて使わないよ。
スケールできないじゃん。
24nobodyさん:2009/02/19(木) 11:21:30 ID:???
>>22
プロの俺が再帰でいいというんだから間違いない
25nobodyさん:2009/02/19(木) 11:23:02 ID:???
>>21
Gigazineはともかく下のTechCrunchはヘッダに書いてあるじゃん
generator WordPress 2.7って
26nobodyさん:2009/02/19(木) 11:25:02 ID:???
>>23

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

>>25
なんだ、ヘッダに書いてたか
27nobodyさん:2009/02/19(木) 11:28:57 ID:???
じゃあGIGAZINEにはプログラマーがいるってことですか?
28nobodyさん:2009/02/19(木) 11:30:07 ID:???
そりゃ聞いてみないとわからないだろw
その辺のCMS使ってるかもしれないしな
29nobodyさん:2009/02/19(木) 11:41:17 ID:???
4gamerはCMSですか?
30nobodyさん:2009/02/19(木) 11:46:23 ID:???
>>29
それはぜひ知りたい。

こういう企業向けのシステムとかあるのだろうか?
31nobodyさん:2009/02/19(木) 11:55:59 ID:PiBlHerA
MVCの基礎を学びたいのですがおすすめのサイトが御座いましたら教えてください
32nobodyさん:2009/02/19(木) 11:59:37 ID:2O78I8s0
linuxでローカルサーバ構築してPHPのテストしてる方に質問です
私はVirtualPCでvineを使って開発しているのですが
OpenSSLをアンインストールできなく、自分の入れたいバージョンが扱えないので不満です
同じようにlinuxを使用している方はどのディストリビューションをご使用されていらっしゃいますか?
33nobodyさん:2009/02/19(木) 12:02:03 ID:???
CentOS使ってるな
でもOpenSSLアンインストールできないってどういう事?
いくらでも消せると思うんだが・・・
34nobodyさん:2009/02/19(木) 12:08:22 ID:???
>>31
オブジェクト指向は理解してますか?
理解していて最初から学びたいのなら、本を買った方が早いかも。
サイトはいっぱいあるので適当に2〜3個見てみて具体的に分からないところを質問した方が良い。

>>32
PHPの質問?
35nobodyさん:2009/02/19(木) 12:39:05 ID:???
MVCとオブジェクト指向って被ってる領域もあるけど直接は関係ないだろ?
36nobodyさん:2009/02/19(木) 12:57:34 ID:???
オブジェクト指向のサンプル入り解説サイトはよく見かけるようになったが
MVCのサンプル入り解説サイトは見たことがないね
本でも一冊しか知らない
37nobodyさん:2009/02/19(木) 13:01:34 ID:???
オブジェクト指向は
$this-> こんな感じですね
38nobodyさん:2009/02/19(木) 13:04:11 ID:???
>>37
それと使う時にnewするって知っておけば、あとは何も勉強しなくていいよな。
39nobodyさん:2009/02/19(木) 13:05:03 ID:???
ぶっちゃけここのスレの住民にMVC分かるやつはいない
40nobodyさん:2009/02/19(木) 13:05:21 ID:???
いや、普通に使ってますがw
41nobodyさん:2009/02/19(木) 13:12:59 ID:???
おれが昔から自作してたものがMVCと似通ってることに最近気付いた
42nobodyさん:2009/02/19(木) 13:14:22 ID:???
***ここは初心者が初心者にハッタリで自慢するインターネットです***
43nobodyさん:2009/02/19(木) 13:22:32 ID:DiCiMFeX
サーバの状態を監視するツールって何使ってますか?
できればWebで確認できるやつがあればいいんですが
44nobodyさん:2009/02/19(木) 13:23:03 ID:???
ある
45nobodyさん:2009/02/19(木) 13:25:40 ID:???
>>36
基本的にフレームワークの本に載ってるよ
46nobodyさん:2009/02/19(木) 13:26:02 ID:???
初心者なオレがMVCをエスパーした。
MVCとは、初心者でもうm
47nobodyさん:2009/02/19(木) 13:30:04 ID:???
つうか、きょうび当たり前すぎてMVCを口にするの恥ずかしいだろ
その次のアーキテクチャについて話しようぜ
48nobodyさん:2009/02/19(木) 13:37:13 ID:???
すれたい が よめない ひと へ
http://pc11.2ch.net/test/read.cgi/php/1229960175/
49nobodyさん:2009/02/19(木) 14:49:45 ID:Y6HkRPoJ
Ubuntu上にPEARのライブラリをインストールしたのですが、
なぜか /usr/share/php にインストールされてしまいます。
これを /usr/share/php/PEAR にしたいのですが、どのように設定すればよいのでしょうか?
50nobodyさん:2009/02/19(木) 14:51:13 ID:???
パス指定してやればいいじゃん
51nobodyさん:2009/02/19(木) 14:59:40 ID:4v4/gEqf
$str = '1' * 8;
print $str;

とした場合、

8

になってしまいますが、

'11111111'

のように出力させるにはどうすればよいでしょうか?
52nobodyさん:2009/02/19(木) 15:00:41 ID:???
>>51
str_repeat
53nobodyさん:2009/02/19(木) 15:11:16 ID:???
>>40
$str = '1' * 8

これで

'11111111'

が出力されるだろうという発想が凄い。俺には無いわ。
5451:2009/02/19(木) 15:14:06 ID:???
>>52
即レス、サンクス。助かりました。
55nobodyさん:2009/02/19(木) 15:15:47 ID:???
>>53
rubyだと動いちゃうんですよ、それで。
56nobodyさん:2009/02/19(木) 15:17:26 ID:???
>>53ってPHPしかしらないの?w
57nobodyさん:2009/02/19(木) 15:26:43 ID:???
こういうゴミみたいな関数が役立つんだよな
Javaでやろうと思ったらめんどくさくてしょうがない
58nobodyさん:2009/02/19(木) 15:37:45 ID:???
>>55
マジでか!
世の中何があるかわからねーな。

>>56
すまん、勉強不足だ。
C/Java/PHPしかわからないんだ、許してくれ。
59nobodyさん:2009/02/19(木) 15:38:26 ID:???
perlだと
$str = '1' x 8;

うう〜ん直感的にわかりやすい
60nobodyさん:2009/02/19(木) 15:40:00 ID:???
PHPの場合は''や""で囲ってあっても
計算式であればintになるし、連結であればstringになるからなぁ
61nobodyさん:2009/02/19(木) 15:40:47 ID:???
>>58
vb/c/c++/java/cobol/python/ruby/perl/php/basic
これぐらい勉強してからでなおしてこい
62nobodyさん:2009/02/19(木) 15:42:39 ID:???
>>61
今時VBいるか?C#だろう、そこは。
63nobodyさん:2009/02/19(木) 15:43:46 ID:???
>>62
>>61は三十路VBおじさん
64nobodyさん:2009/02/19(木) 15:43:48 ID:???
>>59
Perlもそれで
'11111111'
になるのか?
65nobodyさん:2009/02/19(木) 15:52:17 ID:???
>>62
銀行系ではVBも使われてるの知らんのか
66nobodyさん:2009/02/19(木) 15:57:42 ID:???
>>65
今時ありえねーよ。
6749:2009/02/19(木) 15:58:00 ID:Y6HkRPoJ
>>50
毎回指定するということでしょうか?
どこかに設定ファイルがあるのでしょうか?
68nobodyさん:2009/02/19(木) 16:02:26 ID:???
>>67
いや、インストールする場所を指定しろってことだよ
何がしたいの?
/usr/share/php/PEARにインストールしたいんじゃないの?
69nobodyさん:2009/02/19(木) 16:04:55 ID:???
>>66
学生は黙ってろ
70nobodyさん:2009/02/19(木) 16:06:01 ID:???
>>69
待てよ。
VBつっても.netだよな?6じゃねーよな?
71nobodyさん:2009/02/19(木) 16:09:19 ID:???
>>65は既存アプリのこと言ってるんだろ。既存言い出したらなんでもあるわな
72nobodyさん:2009/02/19(木) 16:22:50 ID:???
>>64
http://q.hatena.ne.jp/1195018503

perlだと'1' x 8 で '11111111'で、
ruby、pythonだと'1' * 8 で '11111111'だな。
73nobodyさん:2009/02/19(木) 18:53:18 ID:wRj5eNSW
ファイルの文字コードを調べたいのですが
何かそのような関数はありませんでしょうか?
74nobodyさん:2009/02/19(木) 19:09:05 ID:???
>>73
マニュアルのmb_〜からはじまる関数を読み漁れば見つかりますよね
7573:2009/02/19(木) 19:12:43 ID:wRj5eNSW
>>74
先ほどから見てますが検討がつきません
一度文字列に格納してから調べろということなのでしょうか?
76nobodyさん:2009/02/19(木) 19:17:38 ID:???
>>73
何のために調べるの?
7773:2009/02/19(木) 19:21:27 ID:wRj5eNSW
>>76
ファイルをPHPの内部エンコードにあわせるのが目的です
mb_convert_encodingの第三引数にautoを渡したところ
うまく動作しなかったので
取得したものを第三引数にセットしようと思った次第です
78nobodyさん:2009/02/19(木) 19:22:37 ID:???
>>77
用意したファイルを内部エンコードにしておけばいいんじゃね?
7973:2009/02/19(木) 19:23:17 ID:wRj5eNSW
>>78
外部から第三者ガアップロードするものなので不可能なんです
80nobodyさん:2009/02/19(木) 19:33:59 ID:???
>>73
ファイルを読み込む前にチェックするっていうのは現実的じゃない。
それはわかるよな?

判定コードを書くのが面倒だったら nkfに通すとか。
81nobodyさん:2009/02/19(木) 19:40:07 ID:???
autoは設定されてないと使えないから
"SJIS,EUC-JP,UTF-8,JIS"みたいに書いてみそ
82emi:2009/02/19(木) 19:46:09 ID: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);

?>
83nobodyさん:2009/02/19(木) 19:51:14 ID:???
>>82
そのソースのどこにJavaScriptが出てきてるんだ?
8482:2009/02/19(木) 19:53:50 ID:/38upbVh
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=[APIkey]" 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で表したい場合どのようにすればよいのでしょうか。
85nobodyさん:2009/02/19(木) 19:54:13 ID:???
>>82
連携してJavaScriptに何やらせたいのか書かないとわからん
サーバでPHP処理→ブラウザでJavaScript実行の順番はわかってるのか?
86nobodyさん:2009/02/19(木) 19:56:22 ID:???
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
8773:2009/02/19(木) 19:56:55 ID:???
>>80
レスどうもありがとうございます
kccコマンドが使えるのですができればコマンドラインは回避したいです

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

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

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


関係ないが、無駄にAjax使いすぎるやつがいてうぜぇ・・・
しかも、JavaScriptをPHPのechoで吐き出してるから修正すらダルい
89nobodyさん:2009/02/19(木) 20:04:10 ID:???
その修正、手でやんのか?
まるっとキャプチャしちまえばいいじゃねぇか
90nobodyさん:2009/02/19(木) 20:05:07 ID:nJvgqLn9
sjsやeucで作られたスクリプト中に
echo "あ";
echo 'あ';

というを"と ' を使ったら書き方をするとクロスサイトスクリプティングが発生するみたいなのですが
これはなぜでしょうか?
9182:2009/02/19(木) 20:06:16 ID:/38upbVh
>>85
PHPのほうのテキストデータはサーバから読み込んだものなので
ブラウザからPHPで処理できるのかと…
>>88
やはり無理なのでしょうか?
すみません初心者なものなので知識はないのですが↓
でしたらPHPで出力したデータをjavascriptで扱うにはどうすべきなのでしょう?
92nobodyさん:2009/02/19(木) 20:06:50 ID:???
ダメ文字でググれ
93nobodyさん:2009/02/19(木) 20:08:25 ID:???
>>91
PHPでJavaScriptを書き出せばいいんじゃね?一番簡単な方法なら


function javascript() {

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

}
94nobodyさん:2009/02/19(木) 20:20:19 ID:???
>>90
>というを"と ' を使ったら書き方をすると
この辺日本語で頼むわ
9590:2009/02/19(木) 21:13:27 ID:???
すいません書き直します

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


echo "テスト";
echo "こんにちは";
echo 'はじめまして';
echo "ありがとう";
96nobodyさん:2009/02/19(木) 21:17:53 ID:???
>>95
その質問は間違っている。
その例に出てきたもので、XSSが起きるわけじゃない。
しかし、君にそのクイズを出した人が言わんとしていることには二つ以上の可能性がある。
一つは、htmlspecialcharsのENT_QUOTESとENT_COMPATの動作の問題
もう一つはSJISの5Cの問題。
他になんか意図があるかもしれんが、仮定が間違ってるので、何を言っても意味がないだろう。
97nobodyさん:2009/02/19(木) 21:19:55 ID:???
あぁ、ちなみにHTML要素内の5CでXSSは起きない。
9890:2009/02/19(木) 21:24:50 ID:???
一応参考URLも載せておきます
ttp://d.hatena.ne.jp/harupu/20060328#p1
どなたかお願いします
99nobodyさん:2009/02/19(木) 21:25:53 ID:SUg9mjPG
csv、tsv、xml、jsonなどのデータフォーマット以外にphpで扱えるデータフォーマットを教えてください
100nobodyさん:2009/02/19(木) 21:26:33 ID:???
すいませんIDがJPG
101nobodyさん:2009/02/19(木) 21:30:18 ID:???
>>98
そのURLのソース試してみたか?
問題ないぞ。
102nobodyさん:2009/02/19(木) 21:31:03 ID:???
>>99
何だって良いんじゃない?
<>sv なんてのも可だし
103nobodyさん:2009/02/19(木) 21:32:32 ID:???
つうか、htmlspecialcharsの第2引数と第3引数をちゃんと指定していれば問題なし。

シングルクォートとダブルクォートをミックスすると表示は崩れるがXSSはできない。
104nobodyさん:2009/02/19(木) 22:20:00 ID:???
>>82
echo htmlspecialchars($data[1])
echo htmlspecialchars($data[2])
105nobodyさん:2009/02/19(木) 22:25:13 ID:NhJwmPwv
DWでPHP書いてますがeclipseで開発するメリットを教えてください
106nobodyさん:2009/02/19(木) 22:27:41 ID:???
ない
107nobodyさん:2009/02/19(木) 22:42:26 ID:???
DWの方が絶対良い
データベースとか楽に構築できるしね
108nobodyさん:2009/02/19(木) 22:56:12 ID:???
>>105
スレチと思ったが開発環境スレが落ちてるな
Eclipseのいいところは、
クラスや関数のアウトライン参照、コンテキストに沿ったコード補完、リファクタリング(まだまだ貧弱だが)、
ブレークポイントやステップ実行、その際の変数参照、
プラグインを導入すればバージョン管理システムやDBMSともIDE上から作業できる
これらに興味がなければ無理して乗り換える必要もないかな
109nobodyさん:2009/02/19(木) 23:01:15 ID:???
DWでもCVSやSVNと接続できるけどな。
PDT使ったら、DWには戻れない。

まぁ、でも、サイトにすぐアップできるとか、いいよね。
でも、コードカラーリング崩れない? > DW
110nobodyさん:2009/02/20(金) 00:57:08 ID:???
DWはIDEじゃないから比較するものじゃないでしょ
使ったことないから知らないけどデバッガとかついてないでしょ?
11182: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″といったような感じにしたいんです。
112nobodyさん:2009/02/20(金) 01:37:44 ID:r16tK4jF
Smartyの質問なのですが、、PHPと関連するので質問させていただきます。

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

で表示できますが、display()の中を変数にする事って出来ないでしょうか?
それが出来たら、DBに保存しているHTMLをSmartyに反映させることが
出来るのですが、$smarty->display($html);とする方法では無理でした。
113nobodyさん:2009/02/20(金) 02:41:12 ID:???
demiru
114nobodyさん:2009/02/20(金) 05:22:05 ID:nLAMcH0P
PHPのメモリって勝手に開放されるのですか?
デストラクタでunsetとかしないでも大丈夫ですか?
115nobodyさん:2009/02/20(金) 07:29:32 ID:???
自動的に開放する。
無闇にunsetすると非効率になることが多いらしい
が、処理時間の長いジョブとかの場合は開放した方がいい場合もある
116nobodyさん:2009/02/20(金) 08:38:58 ID:???
117nobodyさん:2009/02/20(金) 09:18:57 ID:???
はい?
$template = 'index.html';
$smarty->display($template);
で普通にできるのでは?
118nobodyさん:2009/02/20(金) 10:16:20 ID:P+ZCl9Zr
昨日今日からの初心者です。
<html><body>
<?php
if(!適用条件)
{ echo "適用外"; exit;}
// 適用条件内
...
?>
</body></html>
と書くと適用条件外の場合"</body></html>"が出力しないようなのですが仕様なのでしょうか?
その場合回避策としてタグの終りにジャンプとか抜けるみたなことは出来るのでしょうか?
(適用条件内を1スコープにして括弧で括る、は出来ればしたくないので…)
119nobodyさん:2009/02/20(金) 10:29:22 ID:???
>>118
exitじゃなくて、goto ラベル;にしたらいいよ
120nobodyさん:2009/02/20(金) 10:39:43 ID:???
>>119
5.3以降でしか使えない変な物を教えるな

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

if (適用条件) {
 条件内処理
}
else {
 条件外処理
}
にすればいい
あと、こっちのスレのがオススメ
http://pc11.2ch.net/test/read.cgi/php/1227303362/
121nobodyさん:2009/02/20(金) 10:45:06 ID:???
条件内処理をブロックに入れたくないって言ってるんだから、>>120は無理でしょ。

せめて、
{ echo "適用外</body></html> "; exit;}
だな。
122nobodyさん:2009/02/20(金) 11:05:37 ID:???
低級者向け:関数化すれ
中級者向け:テンプレエンジン使え
上級者向け:フレームワーク使え
123nobodyさん:2009/02/20(金) 11:05:49 ID:???
いや、なんでそこでexit使うか分からんな。
>>118はexit使わなくても問題ないし。
124nobodyさん:2009/02/20(金) 11:06:54 ID:/aL6hv6c
>>122
逆じゃない?PHPで自分で作れないからフレームワーク使うんだろ?
125nobodyさん:2009/02/20(金) 11:06:57 ID:???
exitしないと、適用外のときでも、適用内の出力がまざっちまうじゃねぇか
126nobodyさん:2009/02/20(金) 11:08:20 ID:???
まず、初心者がくくりたくないとかいうわがままを許していいのかってことじゃねぇか。
127nobodyさん:2009/02/20(金) 11:10:01 ID:???
>>125
適用外のときは別途処理すればよくね?
128nobodyさん:2009/02/20(金) 11:10:28 ID:???
>>118
なぜ「出来ればしたくない」のか聞かせてくれ。
129nobodyさん:2009/02/20(金) 11:18:07 ID:???
>>127
詳しく
130nobodyさん:2009/02/20(金) 11:23:24 ID:P+ZCl9Zr
回答・説明ありがとうございます。
取りあえず出来る書き方で書いて、天に祈りが届いたと思ってPHP5.3を待つ事にします。

>>128
Cで例外処理の場合はgoto文を使いたい(条件文が増えるとネストが深くなったりコードが重複したりするので)
みたいなものです、プログラム思想みたいなものなので余りこれ以上の突っ込みはご勘弁を…
131nobodyさん:2009/02/20(金) 11:25:54 ID:???
gotoの方がよっぽど悪質だよww
132nobodyさん:2009/02/20(金) 11:34:03 ID:???
try-catch
133nobodyさん:2009/02/20(金) 11:39:58 ID:???
こんなところでtry-catchを持ち出そうとするからPHPerは糞だって言われるんだ
134nobodyさん:2009/02/20(金) 11:41:19 ID:???
>>133
すまん
例外処理と聞いて反射的に貼り付けただけなんだ
135nobodyさん:2009/02/20(金) 11:56:07 ID:???
>>130
それは貴方のロジックとかが悪いだけ
136nobodyさん:2009/02/20(金) 11:56:21 ID:???
gotoが許されるのはHSPだけです
137nobodyさん:2009/02/20(金) 11:59:50 ID:???
finallyを実装しなかった罪は思い
138nobodyさん:2009/02/20(金) 12:55:37 ID:???
設計が悪いのにプログラム思想がうんぬん言われてもな…w
困るんだわ…w
139nobodyさん:2009/02/20(金) 13:12:10 ID:???
せっ・・・けい・・・?
140nobodyさん:2009/02/20(金) 15:34:00 ID:???
PHPのデバッガで、gdbのようなものはありますか?
主にコマンドラインプログラムが対象です

attachの機能(すでに起動しているものを乗っ取れる)が
必須なんですが
141nobodyさん: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"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>たいとる</title>
// 以下略
142nobodyさん:2009/02/20(金) 16:33:21 ID:???
どうしてもUTF8でやりたいのなら
ezwebだけ出力するときだけsjisに変換したら?
143nobodyさん:2009/02/20(金) 16:35:22 ID:???
>>141
http://www.au.kddi.com/ezfactory/tec/spec/4_2.html
> また、EZwebでサポートする文字コードはShift-JISです。
144141:2009/02/20(金) 16:44:08 ID:???
>>142,143
返答ありがとうございます。
Shift-JISに変換して出力するようにします。

ですが、.html拡張子のUTF-8なページは文字化けしないのが疑問のままなのは
ちょっとモヤモヤが残ります。
識者いらっしゃいましたら、引き続きよろしくお願いします。
145nobodyさん:2009/02/20(金) 18:39:08 ID:???
>>144
header送信はどうやってる?
146nobodyさん:2009/02/20(金) 18:58:54 ID:QkuM0xlT
PHPの中から、apache上で走っているのか
バッチファイル的に使われているのか(シェル上で、php hoge.php)を
判断する方法を教えて下さい
147nobodyさん:2009/02/20(金) 19:04:26 ID:???
>>146
phpinfo保存してdiffして好きなのを使うとか
148nobodyさん:2009/02/20(金) 19:12:40 ID:???
>>147
ありがとうございます
それをヒントにして$_SERVERを比較したところ
SHELLというキーが、シェルから呼んだ場合には設定されていました
149nobodyさん:2009/02/20(金) 19:17:35 ID:???
http://jp.php.net/manual/ja/function.php-sapi-name.php
もろそういう用途の関数がありますよ
150nobodyさん:2009/02/20(金) 20:55:16 ID:???
php_sapi_name()ならpearのgo-pearを参考にしてもいいかも。
http://pear.php.net/go-pear
151nobodyさん:2009/02/20(金) 21:07:24 ID:???
めちゃめちゃPHP覚えてきた
自分の才能がコワイお(´・ω・‘)
152nobodyさん:2009/02/20(金) 21:09:59 ID:???
ほう,じゃ最近学んだこと何か語ってみてくれ
153nobodyさん:2009/02/20(金) 21:34:19 ID:JGeRmwBm
URLのうち、ドメイン直下の最上位ディレクトリを抽出するにはどうしたらいいですか?
str系の関数組み合わせて3個目の/が何文字目で4個目が何文字目で…
ってやれば出来るでしょうが、非効率というかアホっぽいので、正規表現でバキっと出す方法を
教えてください
よろしく御願いします
154nobodyさん:2009/02/20(金) 21:37:09 ID:???
>>153
scandirが使えるバージョンならドメイン直下のディレクトリ名を取得すればおk
使えないならopendirとreaddirでググレカス
155nobodyさん:2009/02/20(金) 21:44:06 ID:???
>>141
GWの文字コード変換対象はtext/〜から始まるコンテンツのみ。
SSLも変換噛まさないけ
156nobodyさん:2009/02/20(金) 22:16:34 ID:???
>>152
文字コードがshift-jis、Euc-jpだとSQLインジェクションされる
かといってutf-8は安全?というとそうでもない。
157nobodyさん:2009/02/20(金) 22:24:54 ID:???
php関係ねー
氏ねや
158nobodyさん:2009/02/20(金) 22:27:27 ID:???
そ・・・そんなん 必死に覚えてきたお(´・ω・‘)
159nobodyさん:2009/02/20(金) 22:37:43 ID:???
>>158
世の中にはいくらやっても報われないことが二つある
ひとつは賽の河原の石積み
もうひとつはお前のPHPの勉強だ
160nobodyさん:2009/02/20(金) 23:27:51 ID:r16tK4jF
SQLインジェクション対策は、
基本的に外部入力値をhtmlspecialcharsしていれば良い

って考えは間違い?
161nobodyさん:2009/02/20(金) 23:31:06 ID:???
>>160
大間違い
162nobodyさん:2009/02/20(金) 23:34:48 ID:???
htmlspecialcharsで防げるだろ
>>161はhtmlspecialcharsを使用しても抜けられる穴について説明よろ
163nobodyさん:2009/02/20(金) 23:39:40 ID:???
>>160
htmlspecialchars(,ENT_QUOTES)で防げるのは「Script Injection」。
Javascript埋め込みとかそんなヤツ。

「SQLインジェクション」は別問題。
「PHPサイバーテロの技法」を買って読んどけ。
164nobodyさん:2009/02/20(金) 23:47:18 ID:???
>>162
LIKEのとこに%とか*突っ込んでみるとか。
select * from table where name like '%' ;
165nobodyさん: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奪われるとかもあるな。
166nobodyさん:2009/02/21(土) 00:32:30 ID:???
あーっと、ENT_QUOTESだったか。死んでくる。
167nobodyさん:2009/02/21(土) 00:38:03 ID:???
>>160
addslashes
168nobodyさん:2009/02/21(土) 00:44:54 ID:???
>>167
addslashesも大間違い
169nobodyさん:2009/02/21(土) 01:19:11 ID:???
mysql_escape_string
170nobodyさん:2009/02/21(土) 01:34:53 ID:???
>>169
それも%とかをエスケープできないので間違い
mysql_real_escape_string
171nobodyさん:2009/02/21(土) 01:47:18 ID:???
可能な場合常にプレースホルダを使う、でFAだろ
クエリの9割以上はカバーできるはずだ
172nobodyさん:2009/02/21(土) 02:05:10 ID:???
めんどいから ' と ; は削っちゃえ
173nobodyさん:2009/02/21(土) 02:17:42 ID:???
mysql_escape_stringって%エスケープしないのか
ありえねーな
likeを使ってなかったらだいじょうぶ?
174nobodyさん:2009/02/21(土) 02:35:53 ID:60WB0UqA
addslashesじゃだめなの?
ある本にmysql_escape_stringより良いって書いてあったのに、早いって。。
純朴な素人をバカにしやがって
175nobodyさん:2009/02/21(土) 02:37:42 ID:???
お前は何を言ってるんだ
本にWebに書いてあることを鵜呑みにすることが「勉強」じゃないぞ?
176nobodyさん:2009/02/21(土) 02:44:35 ID:???
何ぬかしてる、mysql_real_escape_string() は非推奨の mysql_escape_string() と機能は同じ
だいたいこの関数はSQLステートメントとして成立する文字列リテラルを作るためのものだ
%を勝手に殺したりする用途に使うもんじゃない
177nobodyさん:2009/02/21(土) 02:45:52 ID:???
%殺されちゃたまらないな。しかも%なんてSQLインジェクションには使えないだろ
エスケープする必要ない
178nobodyさん:2009/02/21(土) 02:46:31 ID:???
PDOで解決
179176:2009/02/21(土) 02:46:46 ID:???
悪いアンカーが抜けていた
>>176>>170,173へのレス
180nobodyさん:2009/02/21(土) 02:49:17 ID:RWcdEiGu
phpでhtmlのinputのtype="text"でreadonly='true'して
printしているのですが、これってもしreadonlyに対応していない
ブラウザとかだったら変更可能ですかね?ブラウザとか関係なく、
もし確実じゃなければ、それに代わる確実な方法を実現したいのですが
何か方法があれば教えてください。
181nobodyさん:2009/02/21(土) 02:58:27 ID:???
>>180
変更されてはならないものはクライアントに持たせない
セッション変数なりストレージなりに保持しておく
182nobodyさん:2009/02/21(土) 05:32:46 ID:???
>>118
phpにおけるexitは強制終了。
それに続くタグとかは、一切実行も表示もされない。
183nobodyさん:2009/02/21(土) 12:05:11 ID:???
>180
そもそも、ブラウザなんぞ無くともデータは送受信可能だ。
HTTPなんて、テキストデータを送受信してるだけだからな。
クライアントに渡した全ての値は改竄され得るし、クライアントから送信される値は全て信用ならない。
input type="select"の中に、選択肢にない文字列が入ってくるなんてのはよくある事だ。
184nobodyさん:2009/02/21(土) 12:05:51 ID:???
<select><option>だったか。まあいいや。
185nobodyさん:2009/02/21(土) 13:04:41 ID:???
ちょっと気になったんだが、>>165が書いている方法も

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

としていれば大丈夫なんじゃないのか?
「%」の件もlike使わなければいいわけだし。
like使う用途って「検索」が多いだろうから、表示されても良いデータだろうし。
186nobodyさん:2009/02/21(土) 13:10:29 ID:???
>>183
>選択肢にない文字列が入ってくる

てっきりvalueにテキストを挿入してるかと思ったwwww
187nobodyさん:2009/02/21(土) 13:10:58 ID:???
>>185
そのセンス、感服するわ。
htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが、
SQLにlikeを使わなきゃいいって制約を追加するわけだが、
188nobodyさん:2009/02/21(土) 13:14:04 ID:???
なんでそこまでしてhtmlspecialcharsに拘るのかが理解できない。
mysqlなら何も考えずmysql_real_excape_stringが一番安全確実簡単だろ。
htmlspecialchars使うと、<や>、&のような文字が全部変換されてDBに入力されてしまう。
検索なら対象がうまくヒットしなくなるし、画面表示文字列だとエスケープ/アンエスケープのタイミングを考慮しないといけない。
DBからCSVに書き出したくなったらどう変換すればいいんだ?JavaScriptに渡す時は?

mlsql_real以下略なら、入力データはそのままの形でDBに格納されるし、そのままの形で検索される。この上なく分かりやすい。
189nobodyさん:2009/02/21(土) 13:16:13 ID:???
>>187
うん?クラスの処理とかすべて書けば良かったか?
単純かしたことに「こいつ馬鹿だwww」と感服したのかもしれないが。

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

>htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが
かからなくていいんじゃないか?検索させない場合は、変換入れるだろうが。
190nobodyさん:2009/02/21(土) 13:16:27 ID:???
未だにDBで何をエスケープしておけばいいかわからないやつ多いよな。

基本的には「'」と「\」だけでいいんだぜ
191nobodyさん:2009/02/21(土) 13:19:03 ID:???
>>188
「そのままの形で格納されると困る」んだよ。

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

その際、htmlspecialcharsで変換されない文字があるとどうなるかわかるだろ。
それに、htmlspecialcharsだけでも、CSV出力やJavascript(AJAX)の利用は出来る。
192nobodyさん:2009/02/21(土) 13:25:16 ID:???
>>189
おいおい、
記事中から、bread&butterって検索したくてもできないじゃないか。
193nobodyさん:2009/02/21(土) 13:26:33 ID:???
zend server
人柱だれかよろ
ttp://sourceforge.jp/magazine/09/02/19/2316221
194nobodyさん:2009/02/21(土) 13:27:24 ID:???
>>191が作ったWebアプリケーションは穴だらけ、バグだらけだろうなぁ。
ご愁傷様
195nobodyさん:2009/02/21(土) 13:27:36 ID:???
Zendワロタwwwwwwwww
よく開発続けられるよなwwwww不人気なのにwwwwwww
196nobodyさん:2009/02/21(土) 13:29:18 ID:???
htmlspecialcharsをDBアクセスで使用するバカ
後輩とかに指摘されて恥かくまでずっとやってろ
197nobodyさん:2009/02/21(土) 13:30:31 ID:???
俺はforeachのことを「フォレーチ」って読んでた
先輩は「フォー・イーチ」って読んでた

別に恥ずかしくないんだからねっ!これからも「フォレーチ」って読むわ
198nobodyさん:2009/02/21(土) 13:32:44 ID:???
>>191
なぁ、ちょっと確認していいか?
入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
おまえこの流れは理解してるってことでいいんだよな?

199nobodyさん:2009/02/21(土) 13:34:46 ID:???
xamppに代わる開発環境になるかな?
200nobodyさん:2009/02/21(土) 13:35:45 ID:???
>>199
ネーミングが悪かったかもしれない
XAMPPは初心者もなじみやすい名前だから、暫くはそっちが流行ると思うな
201nobodyさん:2009/02/21(土) 13:36:24 ID:???
>191
会員制の課金の発生する、バックエンドでCSVとTSVでレポートを吐くwebアプリを仕事で書いてるが、
・DBに渡す際にPDOのプレースホルダで渡す、あるいはmysql_real_escape_stringなどでクエリを構成する
・画面表示する際にはビューに渡す時点で原則全ての値をhtmlspecialcharsでエスケープ
 (タグを書き出さないといけない箇所や、HTML以外の箇所などの例外は慎重に検討したうえでエスケープせず渡す)
・DBには、例えばフォームからの入力なら入力値がそのままの形で格納される
このルールが一番分かりやすいし、安全だし、汎用性がある。

出力部で「この文字列はDBから来た値だからhtmlspecialcharsは不要、こっちはクライアントからの入力値だから必須…」とかやってると、絶対変換ミスが発生する。
何も考えずルールにさえ従ってさえいれば脆弱性が発生しない事をシステムが担保してくれる形にするのが一番安全なんだよ。
俺はMySQLでの危険文字を全て列挙すら出来ない低能だし、職場には俺以下の屑が溢れているが、このルールに従う限り絶対安全だとシステム側で保障できるコードを組める。
202nobodyさん:2009/02/21(土) 13:41:28 ID:???
>>198
してるわけないだろ。関数の使いどころすらわかってないんだから
203nobodyさん:2009/02/21(土) 13:41:54 ID:???
>>201
それでOKなんだけど、>>191はフィルターやバリデーターとDB登録時のエスケープを混同してるらしいからw
204nobodyさん:2009/02/21(土) 14:03:40 ID:???

俺が使ってるサービスで
↓を混同してるプログラマがコード書いてませんように・・・

・DB入力時(SQLインジェクション)
・画面出力時(Scriptインジェクション)
205nobodyさん:2009/02/21(土) 14:14:16 ID:???
>>193
雑談はネタ不足気味な雑談スレで。
http://pc11.2ch.net/test/read.cgi/php/1200314111/
206nobodyさん:2009/02/21(土) 14:20:49 ID:???
>>198
ああ。実際に>>201が書いているようなことはしているよ。
例として>>185みたいな簡単な1行ソース出したから
「こいつ何も知らない馬鹿だなwww」と煽りたい気持ちも分かる。
だが、1から10までここに書けないだろ。

入力時、出力時にそれぞれ適切に変換するのは、初歩中の初歩だと思う。
201がああだこうだ書いてるが、俺は自作クラス作ってDB処理をしているから
変換ミスがどうのこうのはない。

ま、そういう自分の事はどうでも良くて、>>185の意見を出しただけなんだが
なぜか俺自身を煽りたい馬鹿がいるな。そんな事しても無駄だろ
207nobodyさん:2009/02/21(土) 14:22:00 ID:???
>>185みたいなコードが出てくる時点でお前が一番馬鹿だよ
208nobodyさん:2009/02/21(土) 14:26:20 ID:???
>>207
>だが、1から10までここに書けないだろ。

ちゃんと読めよ・・・わかりやすいように簡単に書いたって言ってるだろ

それに、htmlspecialcharsで変換しないでそのまま格納したとする
その場合、phpMyAdminなどで管理する時。どうなるかわかるよな?
209nobodyさん:2009/02/21(土) 14:27:37 ID:???
>>208
こんだけ書かれてまだわかんないのか。
そこでhtmlspecialcharsはおかしいってことだろ。
代わりに何を使うべきか考えてみろ
210nobodyさん:2009/02/21(土) 14:28:10 ID:???
>>206
荒れるだけだから黙っててくれ。
211nobodyさん:2009/02/21(土) 14:28:10 ID:???
>>185>>191みたいなこと書いてたら馬鹿にされるのあたりまえだろ
>>206が仕事ではなく趣味でPHPいじってるだけであることを祈る
212nobodyさん:2009/02/21(土) 14:28:18 ID:???
>>208
うん、あれはhtmlspecialcharsで変換されて出力されるね
ってかphpMyAdminなんか使ってるのかよ
213nobodyさん:2009/02/21(土) 14:28:48 ID:???
>>209
わかる・わかんないの、俺に対しての批判はどうでも良いんだよ。
「なぜhtmlspecialcharsは駄目なんだ」って事だ

214nobodyさん:2009/02/21(土) 14:29:08 ID:???
>>208
phpMyAdminをなめてんの?
別にスクリプトが混入したって何もおきないよ。
もし、そこでスクリプトインジェクションされんならIPA行きだお
215nobodyさん:2009/02/21(土) 14:30:21 ID:???
>>213
> 「なぜhtmlspecialcharsは駄目なんだ」
既出
216nobodyさん:2009/02/21(土) 14:30:27 ID:???
お前ら、自分の視野で物事考えすぎだよ。

「phpMyAdminなんて使ってるの?」って言葉がここで出てくると思わなかったぜw
ここのスレの役割考えろや。どうせ個人叩きしかできないくせに。
217nobodyさん:2009/02/21(土) 14:30:31 ID:???
>>208
全部わかったうえで一部分だけ簡単に書いてます、って言ってるやつの文章じゃないよそれ
結局DB格納時にhtmlspecialchars使ってるんじゃん
218nobodyさん:2009/02/21(土) 14:31:22 ID:???
>>216
phpMyAdmin → 画面出力時のお話

SQLインジェクションからかけ離れてきました・・・
219nobodyさん:2009/02/21(土) 14:32:07 ID:???
>>206
> 俺は自作クラス作ってDB処理をしているから変換ミスがどうのこうのはない。
変換とか言ってる段階で、その自作クラスが穴だらけに1000カノッサ
220nobodyさん:2009/02/21(土) 14:36:47 ID:???
> それに、htmlspecialcharsで変換しないでそのまま格納したとする
> その場合、phpMyAdminなどで管理する時。どうなるかわかるよな?

phpMyAdminは出力時サニタイズをすっかり忘れてる、ってこと?
221nobodyさん:2009/02/21(土) 14:38:07 ID:???
サニタイズってトイレにでも行く気?
222nobodyさん:2009/02/21(土) 14:38:47 ID:???
>>185
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
223nobodyさん:2009/02/21(土) 14:40:08 ID:???
おまえらとどめは刺さないよなww
224nobodyさん:2009/02/21(土) 14:40:18 ID:???
>>219
>>201が「俺はMySQLでの危険文字を全て列挙すら出来ない低能」と
言ってる意味を理解できていない、に1000カノッサ上乗せ
225nobodyさん:2009/02/21(土) 14:46:08 ID:???
>>185
語る以前にエラーになる件
226nobodyさん:2009/02/21(土) 15:07:41 ID:???
↓アクセスするとGoogleに飛ぶんですがどういう仕組みですか?
http://www.yahoo.xxco.jp/
227nobodyさん:2009/02/21(土) 15:11:56 ID:???
%はあんまり伝わらなかったみたいだなー。
SQLとHTMLでは、特殊な扱いになる文字が違うよってことだけど。

htmlspecialchar()でも問題なく見えるのは、たまたま、だと思ったほうがいいよ。
偶然にも、置き換え対象になる文字がSQLでエスケープが必要な文字と同じだったってこと。

ついでに言えば、エスケープの仕方は実際はDB依存だから
addslashes()じゃなく、DB専用の関数を使ったほうがいい。
228nobodyさん:2009/02/21(土) 15:13:44 ID:???
>>160 からの流れ、断ち切っておくか・・・

・DBに渡す際にPDOのプレースホルダで渡す、または専用関数(mysql_real_escape_string)でクエリを構成。
・html出力時にhtmlspecialchars(,ENT_QUOTES)をする。

※DBに渡す際にhtmlspecialcharsするのは間違い。
→ 理由 >>188
→ それでも分からない。 >>163の本を読め。
229nobodyさん:2009/02/21(土) 15:18:48 ID:???
>>226
GET / HTTP/1.1
Host: www.yahoo.xxco.jp
(略)

HTTP/1.x 302 Found
Date: Sat, 21 Feb 2009 06:15:31 GMT
Server: Apache/2.2.9 (Fedora)
X-Powered-By: PHP/5.2.6
Location: http://www.google.co.jp/
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
230nobodyさん:2009/02/21(土) 16:10:53 ID:???
素人だけど、俺より酷いプロらしき人が入るのを見て安心したような不安になったような…
231nobodyさん:2009/02/21(土) 16:11:49 ID:???
>>226
xxco.jpの管理人が、
www.yahooo.xxco.jpへアクセスした場合に
「Location: http://www.google.co.jp/」へリダイレクト(302)するようにしているだけ。

<?php
header('Location: http://www.google.co.jp/', True, 302);
?>
232nobodyさん:2009/02/21(土) 16:25:04 ID:???
>>231
サンクス
xxcoってドメインか
233nobodyさん:2009/02/21(土) 16:35:25 ID:???
べ・・・別に!
僕レンタルサーバー使ってるからね!
エスケープしなくても安全よっ!
234nobodyさん:2009/02/21(土) 19:59:23 ID:230PJjNE
【OS名】MacOS X (MAMP)
【PHPのバージョン】php5.2.5
【連携ソフトウェア】mysql
【質問内容】
Webアプリケーションで、ウィンドウ毎に違う情報を引き継いで処理をしていく物を作っています。
uniqid()でセッションIDを割り振って、formのhiddenに入れると引き継げるのは分かりました。
しかしこれだと、link(aタグ)で機能を選択した場合に、セッションIDが引き継げないように
思います。ですよね??何か良い方法はありませんか?
リンクのパラメータに追加するとなると、全部のリンクに書き足す必要があって大変だし、
POSTとGETの両方の評価が必要になると煩雑だし、そもそもurlにセッションIDを出すのが
微妙に避けたいので・・・。
お知恵を拝借したいです。よろしくお願いいたします。
235教えて:2009/02/21(土) 20:15:36 ID:1h/i9qY8
これだと1回で20数全部でます。1回1数でかぶらずに20回出したです。
<?php
$numbers = range(1, 20);
shuffle($numbers);
for($i = 0; $i < 20; $i++) {
echo $numbers[$i]."<br>\n";
}
?>
236nobodyさん:2009/02/21(土) 20:16:32 ID:???
ふつうセッションIDはCOOKIEで渡す
ケータイの場合はGET渡ししかない
237nobodyさん:2009/02/21(土) 20:17:25 ID:???
>>235
出したんなら良かったな
238nobodyさん:2009/02/21(土) 20:21:23 ID:???
モバゲーで鳴らした俺はこの程度の日本語崩壊くらいなんて事は無い
モバゲーではこの程度の言語障害者珍しくも無い
マジ日本はどこへ向かうんだ

$numbers = range(1, 20);
shuffle($numbers);

echo array_pop($number);
// なんか処理
echo array_pop($number);
// なんか処理
echo array_pop($number);

1ページ内の処理ならこれでいける。
2枚以上の画面にわたって変数を持って行きたいならセッションを使うしかない。
239234:2009/02/21(土) 20:33:28 ID:230PJjNE
>>236
COOKIEですか・・・ちょっと調べてみます。ありがとうございます。
クライアントはパソコンなので、GETでもPOSTでも使えます。
COOKIEでもウィンドウ毎って可能なんですか?
240nobodyさん:2009/02/21(土) 20:38:24 ID:???
>>239
パソコンならhiddenを使う必要ない。セッションはクッキーが勝手に確立してくれる
GETやらPOSTも意識する必要ない。セッションに少し慣れればすべて解決する

別ウインドウのことを言ってるのだとしても
リンクやフォームから作成された別ウインドウは同一セッションとなる
241234:2009/02/21(土) 20:51:05 ID:???
>>240
同一セッションでは困るんですが・・・ウィンドウ毎に分けたいので・・・
242nobodyさん:2009/02/21(土) 20:54:07 ID:???
>>241
であればウインドウごとにID発行してそれをセッションで持ちまわす
243242:2009/02/21(土) 20:58:18 ID:???
ごめん、うそついた
同一セッションで別ID発行してもセッションが上書きされるだけだからダメか
244nobodyさん:2009/02/21(土) 20:59:36 ID:???
入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
で質問。
入力->フィルター->エスケープ->DB -> 取り出し->
ここまではわかるが。
その後なんでまたフィルタにかけるの?
while文でたとえば
<? while ( $item = mysql_fetch_array( $result ) ) { ?>
<tr>
<td><?= $item['item_id'] ?><?= $item['item_id2'] ?></td>
<td><?= $item['item_name'] ?></td>
<td><?= $item['author_name'] ?></td>
<td><?= $item['publisher_name'] ?></td>
<td><?= date( 'Y年m月d日', strtotime( $item['release_date'] ) ) ?></td>
<td><?= $item['list_price'] ?></td>
<td><?= $item['sale_price'] ?></td>
<td><?= get_category_name( $link, $item['category_id'] ) ?></td>
<td><?= $item['quantity'] ?></td>
<td><?= $item['state'] ?></td>
<td>
<nobr>[<a href="admin_edit_item.php?item_id=<?= $item['item_id'] ?>">編集</a>]</nobr>
<nobr>[<a href="admin_del_item1.php?item_id=<?= $item['item_id'] ?>" onClick="return confirm( '完全に削除されます。よろしいですか?' )">削除</a>]</nobr>
</td>
<? $n ++; } ?>
でまわしてはいかんのかね?
245nobodyさん:2009/02/21(土) 21:09:52 ID:???
>>244
俺も取り出しのあとのフィルターってのはよくわからん
DBには正しいものが入ってるはずだしな
でもhtml適合化は必要だろ。そのコードだとScript実行されるよ
246234:2009/02/21(土) 21:10:06 ID:???
>>243
そうなんです。>234の様にformかurlに入れれば、
とりあえずウィンドウ毎に別の情報を引き継げます。
だけど、formとurlの両立が難しい。
何か、簡単にウィンドウ毎を識別する方法があれば・・・
247244です。:2009/02/21(土) 21:15:34 ID:???
htmlspecialcharsか
248nobodyさん:2009/02/21(土) 21:17:49 ID:???
>234
まったく同一のページを2ウィンドウ開くのならば、URLかPOST値にセッション情報を含めないとダメだな。
手を抜くならセッションキーGET渡しで
・Smarty使ってるならポストフィルタで全サイト内リンクにセッションキーを追加する
・JavaScript経由で全リンクをセッションキー付きに書き換える
辺りか。

リンクを書き換えないなら、複数ウィンドウシステムに入った時点で
index.php/hogehoge/
index.php/fugafuga/
のような固有URLを割り振り、これをセッションキーにするのも手。
index.php/hogehoge/menu から <a href="./information">で
index.php/hogehoge/information に遷移させられるから記述が多少楽になる。
ただし、セッション情報がリクエストヘッダでだだ漏れだし、外部リンクに気を払う必要も出てくる(REFERERで漏れる)。
249nobodyさん:2009/02/21(土) 21:20:12 ID:???
>>244
>入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
どこにそんなことが書いてある?

入力 -> エスケープ -> DB -> 取り出し -> サニタイズ -> 表示
これでいい
250nobodyさん:2009/02/21(土) 21:26:33 ID:???
>>249
サニタイズってのは、入力値に不正な値や壊れた文字列が入っていないかをチェックするもの。
やるなら、入力の直後だが、サニタイズって言うと、>>249みたいな誤解をするやつがいるから、
入力後にやるのが、バリデート+フィルター。
251nobodyさん:2009/02/21(土) 21:28:51 ID:???
DBからの取り出し後にフィルターを書ける理由
DBってのはデータストア。
収録されたデータをすべて出力していいとは限らないし、
形式によってはフィルターをかける必要がある。jk
252nobodyさん:2009/02/21(土) 21:33:13 ID:???
>>250
入力段階でチェックするのはvalidate
sanitizeは表示段階で、浄化、つまり悪意のあるスクリプトやタグを無効にするもの
253nobodyさん:2009/02/21(土) 21:43:54 ID:???
フィルターって要するにバリデートだろ。
エスケープやサニタイズとは別の話題。
254nobodyさん:2009/02/21(土) 21:44:23 ID:???
>>252
まぁ、そう思っててもいいけどな。
それは、htmlspecialcharsをサニタイズだと思っている子たちの誤解
悪意と善意を確実に識別できるのはどこかを考えれば正解はどっちかわかるはずだが、
困ったことに、サニタイズ≒出力フィルタだと書いちまってるサイトやら本があるからなぁ。

要するに、サニタイズなんて曖昧なメタファーでプログラムを語るなってことだ。
255nobodyさん:2009/02/21(土) 21:45:32 ID:???
>>253
バリデートはフィルターに含まれる。
エスケープとは別。
で、何が言いたいの?
256nobodyさん:2009/02/21(土) 21:46:05 ID:???
>>251
具体的にどういうデータだったらそのフィルターとやらをかけるの?放送禁止用語とか?
257nobodyさん:2009/02/21(土) 21:47:37 ID:???
>>254
htmlspecialcharsもサニタイズの一種だろ。話を難しくしすぎ
258234:2009/02/21(土) 21:48:33 ID:???
>>248
そうですよね。ありがとうございます。
固有URLの実装方法は分かりませんし、
そもそもフレームワークにCakePHPを使うので、そういうURLなのです。
リンクじゃなくて、全てformのボタンにするのも手ですかねぇ・・・。
259nobodyさん:2009/02/21(土) 21:49:18 ID:???
>>256
放禁みたいなNGフィルター、SNS用の権限フィルター
多端末対策で文字コード変換フィルター
スクリプト許可端末、スクリプト拒否端末用の変換フィルター
タグ許可・不許可
まぁ、なんでもいいでしょ
260nobodyさん:2009/02/21(土) 22:00:32 ID:???
バリデート
 検証。入力値などに問題が無いかをチェックする(チェックした後どうするかは知らない)。
フィルタ
 入力値をチェックし、ヤバいものは除去する、ないし弾く(エラーにする、無視する)。
サニタイズ
 消毒。転じて無害化。害の無いものにする。変換・置換など無害化の方法は多数あるが。。
エスケープ
 ある環境で特殊な意味を持つ値(HTMLならば<など)を、その環境のルールで規定された別の表現(<)に置き換える。
 ダブルクォート中で"の前にバックスラッシュを置くのもエスケープ。

どれがベストかというと、どの表現も曖昧さが残るので使うべきではない。
DBへの入力の無害化処理と、HTML出力への無害化処理は違うし、無害化の方法も1通りではない。
設計初期などで抽象度を残した表現をしたい時くらいしか使わないな。
>259は文脈を意図的に曲解した例。
261nobodyさん:2009/02/21(土) 22:01:28 ID:???
>>257
htmlspecialchars=html適合化っていう具体的かつ正確な言葉があるのに、
曖昧かつ誤解に満ちて見解が分かれるサニタイズなんて言葉にする必要はないだろ。
262nobodyさん:2009/02/21(土) 22:01:39 ID:???
俺だせえ。
> 別の表現(&lt;)に置き換える。
な。
263nobodyさん:2009/02/21(土) 22:05:41 ID:???
>>260
> ダブルクォート中で"の前にバックスラッシュを置くのもエスケープ
PHPとかJSならエスケープだが、HTML中でこれができると思ってしまう奴もいるらしいからな。

HTML出力時にaddslashesするやつとか、
DBに入れる前にhtmlspecialcharsする奴とか、
入力時に両方処理する奴とか、
ほんと、ウンコだな
264nobodyさん:2009/02/21(土) 23:03:26 ID:???
>>263
自分のこといってるんですね
わかります。
265nobodyさん:2009/02/21(土) 23:17:26 ID:???
>>263はうんこ
266nobodyさん:2009/02/21(土) 23:33:28 ID:???
ほんと、ウンコだな
267nobodyさん:2009/02/21(土) 23:47:51 ID:???
叩かれる理由のない>>263を叩いてるのは
昼にhtmlspecialcharsの件で叩かれてたやつだろ
268nobodyさん:2009/02/21(土) 23:49:41 ID:???
>>263はうんこ
269nobodyさん:2009/02/22(日) 00:00:19 ID:???
>263
良く分からないけどやーいやーいうんこうんこー
270nobodyさん:2009/02/22(日) 00:13:17 ID:???
うんこを馬鹿にしたやつ全員明日から便秘に悩む。

271nobodyさん:2009/02/22(日) 00:31:09 ID:bY3v8MvV
>>270
のせいで、便秘ではないがうんこが止まらない。
この1時間で4回うんこにいっている
272nobodyさん:2009/02/22(日) 00:34:34 ID:???
<?=str_repeat( 'うんこ', date('s') )?>
273234:2009/02/22(日) 00:46:35 ID:JUr+Er3M
リンクやPOSTで受け取るデータの他に、元のページから送られてくるデータって
何か無いかな・・・って考えてたら・・・$_SERVER['HTTP_REFERER']が使え
ないかなぁ?って思ったのですが。どうでしょうか?
例えばheaderのmetaとかでreferer urlを変更して、セッションIDを追加したり
とか出来ないでしょうか。
他にも、何か使えそうなデータって無いでしょうか?
274nobodyさん:2009/02/22(日) 01:01:49 ID:???
>>273
refererは自由に変えられるし、飛ばさないブラウザもあるし信用ならないよ

まず別セッションにしたい理由がわからん
ユーザーに複数セッションを使わせたいという状況は想像できないし
自分が複数セッション使いたいならブラウザもうひとつ立ち上げればよいだけ
275234:2009/02/22(日) 01:27:54 ID:JUr+Er3M
>>274
refererが信用ならないのはおっしゃる通りです。ご指摘ありがとうございます。
リファラ出さないブラウザは対象外って事で良いのです。

複数セッションを使うために、別のブラウザを立ち上げれば済むのもご指摘通り。
自分だけで使うなら、その方が簡単なのですが。

例を挙げると、ウィンドウ1つに一人分の情報を表示/編集できる、マルチ・
ウィンドウの住所録ソフトみたいなものを想定しています。
ウィンドウ毎に別セッションにしないと無理じゃないかと思いました。
他に、定石があるようでしたら教えて下さい。
よろしくお願いいたします。
276nobodyさん:2009/02/22(日) 02:04:13 ID:???
あなたがたは無職なのに
なんで質問に回答するときはえらそうな
態度なの?
277nobodyさん:2009/02/22(日) 03:06:25 ID:3nGhqmkB
SQLite3 + PDO で、

1つ目のプロセスがトランザクション張ってて、
2つ目のプロセスがトランザクション張ろうとして、
当然1が既にデーターベースをロックしてるから、
2はロックを取得できなくて、そんで
SQLITE_BUSYが帰ってきて、
database is locked
ってわかったとき、
しばらくsleepさせて、リトライ
って処理、どうやって書けばいいの?

どっかにサンプルコードある?
278nobodyさん:2009/02/22(日) 04:28:08 ID:???
>>277
そこまで分かってるならforなりでいくらでも書けそうだけど・・
具体的にどこが分からないのよ
279nobodyさん:2009/02/22(日) 18:00:44 ID:???
例えばtp://test.jp/とういうサイトで、
ユーザ登録(ユーザ名をuserで登録)して、ページを開設する

tp://test.jp/user/ みたいに自分のページができる

このページを誰もがある程度操作できる(お絵かき掲示板とか、ブログのコメ投稿とか)
mixiなどのようにログインページがいらないので次回からこのページは
tp://test.jp/user/が存在する限り、だれもがこのurlから訪問することができる。

みたいなサイトみて思ったのですが、
1./user/の部分は実際にサイトの鯖でuser専用のディレクトリやそこに.phpなどを作っているのでしょうか?
2.それとも、apacheだったらhttpd.confなんかで、
tp://test.jp/mypage.php?userid=user → tp://test.jp/user/ みたいな変換をしているのでしょうか?
しかし2.の方法だと、userというページがあるかどうかをどうやって判断しているんでしょう・・
適当に、userid=tekitouとかしてみたときに、tp://test.jp/tekitou/となってしまい、そのページが
あるかないかの判断はいろんな方法でできると思うのですが、ユーザ登録が増えれば増えるほど
その判断する速度は落ちるような気がしてしまうのです・・

そもそも2の時点で他の方法でユーザを管理しているかもしれません、
上のようなサイトの、ユーザ管理とその引き出しはどう管理しているのか、
大体でもいいので教えていただけないでしょうか
よろしくお願いします
280278:2009/02/22(日) 18:01:32 ID:euIhPE01
id
281nobodyさん:2009/02/22(日) 18:03:04 ID:???
>>279
今の主流は動的URLを性的URLに変化する

http://example.com/user/http://example.com/id=user
DBにデータを保存しておいてページのIDで呼び出す
282nobodyさん:2009/02/22(日) 18:09:47 ID:euIhPE01
すいません>>280の名前は279でした

>>281
なるほど、DBを使ってユーザーのページに誰かが訪れるその度に
検索呼び出ししているということでしょうか。
なんかすっきりしましたありがとうございました
283nobodyさん:2009/02/22(日) 18:12:49 ID:???
>>282
ちなみに毎回DBから同じ情報ひっぱってくるのは負荷かかるから
キャッシュを使ってるのが多いと思う
(ここはまたSmartyとか覚えたときにやってみるといい)
284nobodyさん:2009/02/22(日) 18:16:29 ID:euIhPE01
>>283
Smartyですか、参考に調べてみます
ありがとうございました!
285nobodyさん:2009/02/22(日) 21:21:50 ID:3nGhqmkB
>>278
while で書いたけど、
deadlockになるのです
286nobodyさん:2009/02/22(日) 21:47:52 ID:???
具体的にどう書いたか見せたほうが答えてもらいやすいと思うが・・
恥ずかしがらないで
287nobodyさん:2009/02/22(日) 21:50:36 ID:3nGhqmkB
>>286
1.php と 2.php と2つのファイルを用意して、
以下のテストを行いました。

「テスト1」
1.phpを単独で実行する -> OK

「テスト2」
2.phpを単独で実行する -> OK

「テスト3」
1.php -> 2.php という順番で実行する -> deadlock発生

こういう状況です。
288nobodyさん:2009/02/22(日) 21:52:30 ID:3nGhqmkB
1.phpは、トランザクション中に
sleep(10);
をかませて、ゆっくり実行するようにしてあります。

このゆっくりタイムに、いそいで2.phpを実行する、という
テストです。
289nobodyさん:2009/02/22(日) 21:53:36 ID:3nGhqmkB
環境は、PHP5 + PDO + SQLite3 です。

データーベース構造は、

id | name| value
1 | bond | 5

database name = test1

table name= tb1

です。
290nobodyさん:2009/02/22(日) 21:54:35 ID:3nGhqmkB
1.php のソースは以下の通りです

<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch (PDOException $e) {
die("Error connecting to DB");
}

$bUpdatePending = true;

while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);

$oDbCxn->commit();

$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
// Update failed. Wait a while before trying again in the next loop
}
}
?>
291nobodyさん:2009/02/22(日) 21:55:09 ID:3nGhqmkB
2.phpは、以下の通りです

<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch (PDOException $e) {
die("Error connecting to DB");
}

$bUpdatePending = true;

while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
$oDbCxn->commit();

$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
// Update failed. Wait a while before trying again in the next loop
sleep(15);
}
}
?>
292nobodyさん:2009/02/22(日) 21:57:20 ID:3nGhqmkB
1.phpと2.phpの違いは、sleep(10)があるか、ないかというだけです。
それ以外は全部同じです。

SQLiteはトランザクション中に、別のトランザクションを発生させようとすると
1秒も待たずに「database is locked」になるので、
ウエイト->リトライ、という処理を自分で書かないといけません。

これがイマイチ普及しない最大のポイントだと思いますが、
その処理の書き方についての質問です。

なぜかデッドロックになってしまうのです
293nobodyさん:2009/02/22(日) 21:57:20 ID:???
え?ループ内にトランザクション?
294nobodyさん:2009/02/22(日) 21:57:55 ID:3nGhqmkB
>>293
だってリトライしないといけないわけだから。
なんか間違ってる?
295nobodyさん:2009/02/22(日) 22:01:33 ID:???
例外が発生するポイントは、beginかexecか調べた?
296nobodyさん:2009/02/22(日) 22:03:13 ID:3nGhqmkB
>>295
例外は発生しないにょ

ずーーーっと実行中のままになって、
最後にはタイムアウトになるんだにょ

PHPのデフォルトタイムアウトが60秒だから
60秒でタイムアウトになるにょ
297nobodyさん:2009/02/22(日) 22:04:43 ID:???
>>296
おいおい、
例外にならなかったら、falseが設定されるでしょうが。
例外をcatchして捨ててるだけでしょうが。
298nobodyさん:2009/02/22(日) 22:06:21 ID:???
beginTransactionでオートコミットモードがオフになる。
execに失敗する。
もう一度、beginTransactionをかけるが、既にbeginされてるので例外発生
で、またループ。
beginをループの外に出すかcatchしたときにロールバックしてみたらどうかね
299nobodyさん:2009/02/22(日) 22:13:32 ID:???
EC-CUBEのカスタマイズで1000万て安い?
ちなみに1年、5人担当
300nobodyさん:2009/02/22(日) 22:15:02 ID:3nGhqmkB
>>297
そしたら、catchの中で、
例外をprintするように改造して
もう一回試してみるよ
301nobodyさん:2009/02/22(日) 22:15:38 ID:3nGhqmkB
>>299
一人当たり200万円しかもらえないじゃん
302nobodyさん:2009/02/22(日) 22:17:17 ID:3nGhqmkB
例外を補足するようにコードを改造してみました。

一番下のところに

catch (PDOException $e) {
print( $e->getMessage());
}

って入れただけですけど。

そしたら、以下のようになりました。
303nobodyさん:2009/02/22(日) 22:19:02 ID:3nGhqmkB
1.php

Fatal error: Maximum execution time of 60 seconds exceeded in
C:\1.php on line 21

(さっきと同じ結果)


--------------------------------------------------------
2.php

SQLSTATE[HY000]:
General error: 5
database is locked
There is already an active transaction
There is already an active transaction
There is already an active transaction

Fatal error: Maximum execution time of 60
seconds exceeded in C:\2.php on line 28

--------------------------------------------------------
2.phpについて、いままで出ていなかった
例外がレポートされるようになりました。
304nobodyさん:2009/02/22(日) 22:22:34 ID:3nGhqmkB
>>298
exec ってオートコミットモードがONでないと使えないのですか?

もしかして、

$sql="UPDATE tb1 SET value = value + 1 WHERE id = '1'";
$sth = $dbh->prepare($sql);//プリペアードステートメント
$sth->execute();//エクスキュート

とかってやればOK?
305nobodyさん:2009/02/22(日) 22:26:36 ID:???
そうじゃなくて、begin済みなのにbeginするなってこと。
1.phpで例外が出ないで無限ループするのはおかしいからチェックしてみ
306nobodyさん:2009/02/22(日) 22:29:18 ID:3nGhqmkB
>>305
biginをループの外に出したら意味ないのでは?

だってリトライできなくなるし。
307nobodyさん:2009/02/22(日) 22:31:48 ID:???
>>306
ろーるばっくすればいいじゃん
>>298さんが正解でしょ
308nobodyさん:2009/02/22(日) 22:34:36 ID:3nGhqmkB
とりあえずわけわかんなくなってきたので、
改造済みのコードを改めてはります。
309nobodyさん:2009/02/22(日) 22:35:58 ID:3nGhqmkB
1.php

<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);

$oDbCxn->commit();

$bUpdatePending = false; // Exit the loop now the update has been done
sleep(1);
}
catch (PDOException $e) {



print( $e->getMessage());
$oDbCxn->rollback();
}
}
?>
310nobodyさん:2009/02/22(日) 22:46:19 ID:???
1.php側はループさせると、テストにならんから、
実行中のsleepだけでいいことにして、ループ外した方がよさげ。

それから、ロック以外の例外の時も無限ループしちゃうわけで・・・
まぁ、テストだからいいけど。
311nobodyさん:2009/02/22(日) 22:47:07 ID:???
例外分かってないのでは?
312nobodyさん:2009/02/22(日) 22:48:00 ID:???
トランザクションも怪しいw
313nobodyさん:2009/02/22(日) 23:08:50 ID:3nGhqmkB
>>310
そしたらループはずしてみようかな?
314nobodyさん:2009/02/22(日) 23:17:01 ID:3nGhqmkB
よく考えたら、ロールバックしろ、とかいうアドバイスは無意味だな

だってdatabase is lockedっていうエラーが出ているわけだから、
トランザクションをゲットできていないわけだから、
そもそもロールバックなんかしないわけで。
315nobodyさん:2009/02/22(日) 23:19:21 ID:3nGhqmkB
ソースコードを改変したので、
3.phpと4.phpということにしました。

3.php

<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}

$bUpdatePending = true;

try {
$oDbCxn->beginTransaction();

$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);

$oDbCxn->commit();

$bUpdatePending = false; // Exit the loop now the update has been done
sleep(1);
}
catch (PDOException $e) {
print( $e->getMessage());
$oDbCxn->rollback();
}
?>
316nobodyさん:2009/02/22(日) 23:20:11 ID:???
>>315
前よく「質問」って書いてた人?
317nobodyさん:2009/02/22(日) 23:20:13 ID:3nGhqmkB
4.php

<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch (PDOException $e) {
die("Error connecting to DB");
}

$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");

$oDbCxn->commit();

$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
// Update failed. Wait a while before trying again in the next loop
print( $e->getMessage());
$oDbCxn->rollback();

}
}
?>
318nobodyさん:2009/02/22(日) 23:22:14 ID:3nGhqmkB
3.php −> 4.php
という順番で実行する流れです

3.php −>10秒待つ
4.php −>待たないですぐに実行
319nobodyさん:2009/02/22(日) 23:22:53 ID:3nGhqmkB
実験結果

3.php エラー無し
カウントアップは成功している

4.php
SQLSTATE[HY000]: General error: 5 database is locked
カウントアップは成功している
320nobodyさん:2009/02/22(日) 23:36:10 ID:3nGhqmkB
あれ?
もしかして、完成?
成功している??
321nobodyさん:2009/02/22(日) 23:38:30 ID:???
>>314
なんか勘違いしてないかい?
322nobodyさん:2009/02/23(月) 00:01:27 ID:DYtiHKsN
これでうまくいった

7.php −> 8.php
7.php wait 10seconds
8.php wait 0

7.php

<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
sleep(3);
$oDbCxn->rollback();
}
}
?>
323nobodyさん:2009/02/23(月) 00:02:02 ID:DYtiHKsN
8.php

<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch (PDOException $e) {
die("Error connecting to DB");
}

$bUpdatePending = true;

while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");

$oDbCxn->commit();

$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
sleep(3);
$oDbCxn->rollback();
}
}
?>
324nobodyさん:2009/02/23(月) 00:03:11 ID:DYtiHKsN
でも、8.phpの最後のほうの、

sleep(3);
$oDbCxn->rollback();


これなんだけど、せっかくsleepを入れたのに、
sleepしているようすが見られない。

7.phpの実行が終わると、即座に
間髪いれずに、8.phpの実行も終了している。

なんでだ?
3秒待ってからロールバックしてるんじゃないのか?
325nobodyさん:2009/02/23(月) 00:03:49 ID:DYtiHKsN
あと、トランザクションをゲットしていないのに、
ロールバックするという意味がわからん。

いったいどこに戻っているというのだ?
326nobodyさん:2009/02/23(月) 00:16:50 ID:???
database is lockedはトランザクション自体ではなく、
その中のUPDATE文に対してのエラーである。
なので、トランザクション自体は開始されているので、
一旦ろーるばっくでトランザクションを改めてトランザクションを開始している。
327nobodyさん:2009/02/23(月) 00:17:43 ID:???
>一旦ろーるばっくでトランザクションを改めてトランザクションを開始している。
一旦ろーるばっくでトランザクションを閉じて、改めてトランザクションを開始している。
328nobodyさん:2009/02/23(月) 00:19:44 ID:DYtiHKsN
>>326-327

なるほどねー
ようやくわかってきたわぁ
 きたわぁ
  きたわぁ
329nobodyさん:2009/02/23(月) 00:22:06 ID:DYtiHKsN
やっぱあれだな。
SQLiteの4つのロックのうち、
すぐにロックを獲得できるのを、
明示的に書かないとだめだな。

$oDbCxn->beginTransaction();

↑これがダメってこと。
なぜなら、↑だと、デフォルトのロックが選択される。
SQLiteにおける、デフォルトのロックとは、defferd lockである。

これだと遅延するから、4つの処理をトランザクションではさみたい、
などという場合には不向き。
330nobodyさん:2009/02/23(月) 00:29:36 ID:???
busy_timeoutの設定をするんじゃだめなのか?
331nobodyさん:2009/02/23(月) 00:45:25 ID:DYtiHKsN
>>330
やったことある?
332nobodyさん:2009/02/23(月) 00:58:26 ID:DYtiHKsN
もう一つの懸念。
SQLiteはNFSというファイルシステムを使っているマシンで実行すると
ぶっこわれるらしい。

NFSとはおもにUNIXで使われるファイルシステムらしい。
特にfreeBSDでよく使われるらしい。

自分が借りているレンタルサーバーはfreeBSDなので、
ひょっとしてSQLiteは使えないんじゃないか?
333nobodyさん:2009/02/23(月) 01:02:31 ID:???
NFS使ってるレンタルサーバなんてないから安心しろw
334nobodyさん:2009/02/23(月) 01:02:40 ID:???
http://jp.php.net/manual/ja/function.sqlite-open.php

>ヒント
>NFSパーティションにマウントされたSQLiteデータベースを処理すること は推奨されません。
>ロックに関してNFSは著しい問題があるので、 データベースを全くオープンすることさえできない可能性があります。
>ま た、成功した場合でも、ロックに関する動作は予測できない結果を生む可 能性があります。

だってさ。こっち調べるのが先じゃない?w
335nobodyさん:2009/02/23(月) 01:02:48 ID:DYtiHKsN
SQLiteには、

deferred,
immediate,
exclusive

という3つの種類のロックがあるが、
どれを使うべきか?というのは、考えなくていいの?

$dbh->beginTransaction();

これを使うと、自動的に、デフォルトの、ロックが
選択される。SQLiteにおけるデフォルトのロックとは
deferred ロックである。

もし銀行口座などの実装をしたい場合、
exclusiveにしないとダメなのではないか?

また、immediateって、なんのためにあるんだ?
いつ使うんだ?
336nobodyさん:2009/02/23(月) 01:03:21 ID:DYtiHKsN
>>333
よかった
337nobodyさん:2009/02/23(月) 01:07:02 ID:???
ロックとトランザクションの違いを勉強してきたほうがいいんじゃないかな?
338nobodyさん:2009/02/23(月) 01:07:46 ID:???
俺もそう思うw
339nobodyさん:2009/02/23(月) 01:29:03 ID:???
こいつ前いたキティだろ
通報しましたとかsqlite関連で腐るほど書き込んでた
340nobodyさん:2009/02/23(月) 01:29:11 ID:???
WikiとCMSってどう違うの
341nobodyさん:2009/02/23(月) 01:36:09 ID:???
>>316をスルーしてる時点で確定
342nobodyさん:2009/02/23(月) 01:38:00 ID:???
>>340
WikiもCMSの一種だよ
Wikiが他のCMSと違うのは、不特定多数によるサイト構築を主体とした構成になっている

つかPHP関係ないじゃん
343nobodyさん:2009/02/23(月) 02:23:27 ID:DYtiHKsN
もしかしてwhileいらないんじゃないか?
sleepしてrollbackだけでいいんじゃないか?
344nobodyさん:2009/02/23(月) 03:33:25 ID:???
こいつプログラム板の方とマルチだった
http://pc11.2ch.net/test/read.cgi/tech/1232712334/284-
345nobodyさん:2009/02/23(月) 03:44:00 ID:???
派遣先の歓迎会などで、趣味を聞かれることがあります。
私の趣味は豊富で下記のとおりです。
・アニメ、エロゲ、同人誌、アニソン
・風俗、ストリップ鑑賞
・声優、秋葉系アイドルイベント参加

しかし、これを言うと、おそらくひかれてしまいます。。。
なんて言えばよいのでしょうか?

休みの日は何をしてる?と聞かれても、声優ライブの最前線で
サイリウムをもって、跳んでいるなんて言えません。
346nobodyさん:2009/02/23(月) 04:39:47 ID:cBNbBaFX
$a = "aaa"

if(preg_match("/^[0-9]+$/",$a) == true){
echo "ok";
}else{
echo "dame";
}

でdameになってくれるのに(if(preg_match("/^[0-9]+$/",$a)でもいけた)、

if(preg_match("/^[0-9]+$/",$a) !== false){
echo "ok";
}else{
echo "dame";
}

だと$aを何にしても全部okになる・・
なんで><
347nobodyさん:2009/02/23(月) 04:40:33 ID:cBNbBaFX
→$a = "aaa";
348nobodyさん:2009/02/23(月) 04:52:33 ID:???
349nobodyさん:2009/02/23(月) 05:29:48 ID:DYtiHKsN
<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch (PDOException $e) {
die("Error connecting to DB");
}

$bUpdatePending = true;

while ($bUpdatePending) {
try {
$oDbCxn->query("BEGIN EXCLUSIVE TRANSACTION");

// $oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");

$oDbCxn->commit();

$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
print $e->getMessage();

$oDbCxn->rollback();
}
}
?>
350nobodyさん:2009/02/23(月) 05:30:39 ID:DYtiHKsN
>>349
実行すると、なんでエラーになるの?

PHP5 + PDO + SQLite3
----------------------------------
database structure

id | name| value

1 | value| 5
-------------------------------
database name = test1

table name= tb1
351nobodyさん:2009/02/23(月) 05:33:14 ID:DYtiHKsN
トランザクションをスタートするのに、
$oDbCxn->query("BEGIN EXCLUSIVE TRANSACTION");
はダメで、
$oDbCxn->beginTransaction();
なら良い、というのはおかしい。
なぜエラーになるの?
352nobodyさん:2009/02/23(月) 06:48:25 ID:c878IibK
教えて下さい。

test.txt というutf-8のファイルがあって中に文とかphpの変数とかが書いてあります。
これをsjisのtest.phpで読み込み表示させたいのですがincudeだと文字化けします。
どうすれば表示できますか?
353nobodyさん:2009/02/23(月) 06:59:44 ID:???
<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" />
を吐いてやる
354nobodyさん:2009/02/23(月) 07:08:52 ID:???
>>353
その知識で回答しようと思えるなんて素直に感心するよ
355nobodyさん:2009/02/23(月) 07:20:40 ID:cBNbBaFX
>>348
自分なりに調べてみました><
mb_eregでは !== false でいけたので、それも一緒に比べてみたら
返り値のとこが、
mb_ereg
>正規表現に一致しないか、 エラーを発生した場合に FALSE を返します。
preg_match
>preg_match() は、エラーが発生した場合にFALSEを返します。
でした。
preg_matchは正規表現に一致しないときはfalseを返してくれないので、
!== falseがスルーされたということでよいのでしょうか?><
今まで全部!== falseでできると思っててそれでやってたので変更が大変ですが
preg_matchのときは==とか何もつけないバージョンでやっておきます><
ありがとうございました
356nobodyさん:2009/02/23(月) 07:29:25 ID:???
>>352
逆だUTF-8の方
両方使いたいなら変換かけるべし
357nobodyさん:2009/02/23(月) 16:02:31 ID:???
OS linux
PHP ver 5.2.5
連携 とくになし
<?
//------------------------------------------------
//ペット可否
//------------------------------------------------
function GetPet_F($int)
{
$res = "";
if($int=="0") $res = "不可";
else $res = "可能";
return $res;
}
print GetPet_F(0);
?>
以上ソースコードでsyntax error, unexpected $end出るんですが何が原因なんでしょうか・・・
358357:2009/02/23(月) 16:02:51 ID:yJ3BEx4Z
ID出すの忘れ
359nobodyさん:2009/02/23(月) 16:12:39 ID:???
あれ、流出してる?
360nobodyさん:2009/02/23(月) 16:31:29 ID:???
>>352
eval(mb_convert_encoding(file_get_contents('test.txt'), 'Shift-JIS', 'UTF-8'));

>>357
構文に間違いはないから
スクリプトのエンコーディングが mbstring.script_encoding と合ってないんでしょう
361nobodyさん:2009/02/23(月) 16:37:17 ID:yJ3BEx4Z
可能の能抜いたらエラー出なかったです・・・
なんなのだろう
362nobodyさん:2009/02/23(月) 16:46:30 ID:???
>>357
原因は、Shift Jisの5C問題だね。
能のShift Jisのコードが94 5C
5Cはバックスラッシュ(Shift Jisだと¥)なので、
PHPのパーサが、終わりのダブルクォーテーションを文字列と認識してしまう。
結果、文字列が閉じられていないと判断されて、エラーになる。
363nobodyさん:2009/02/23(月) 17:31:12 ID:???
今時SJISでスクリプト書くやつなんていんの?

話は変わるが

echo '<table 〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜';

引継ぎでプログラムのソースコード見たらこうなってた
まじ簡便してくれ・・・orz
あと、同じ要領でechoでJavaScriptとか吐き出してるのもやめてくれ

クエリはまだ許せる

仕事でプログラムするときはほかの人にわかりやすいコードにしてください
これまじでお願い
364nobodyさん:2009/02/23(月) 17:59:46 ID:???
--enable-zend-multibyte付けてmbstring.script_encodingを設定すりゃ
Shift-JISだろうが何で書こうがそいつの自由だ
雑談スレに行けクズ
365nobodyさん:2009/02/23(月) 21:03:10 ID:cBNbBaFX
また質問させていただきます
$aa = "AA";
$bb = "bb";

$sql = "SELECT * FROM v001upfile WHERE :AA = :BB";
$result = executeQuery($sql);
$result->bindParam(":AA",$aa,PDO::PARAM_STR);
$result->bindParam(":BB",$bb,PDO::PARAM_STR);
$result->execute();

$row = $result->fetchAll();
$rows = count($row);

のようにすると、whereに該当するデータがなく、$rowsも0になってしまいます。いろいろしていると、
$sql = "SELECT * FROM v001upfile WHERE AA = :BB";
とするとデータが得られました。
どうやらwhere :AAのbindのパラメータ、PDO::PARAM_STR
で、'AA'とされてしまっているから?、だめのような気がするのですが、
解決策ありましたらよろしくおねがいします
366nobodyさん:2009/02/23(月) 21:21:42 ID:???
>>365
それ駄目だ、俺も悩んだ
WHERE $AA = ?か、 ? = ?にしたよ
SELECTでbindValueとbindParamは使わない方がいいって
グーグル先生が言ってた
367nobodyさん:2009/02/23(月) 21:33:37 ID:???
PDO::PARAM_STMT
368nobodyさん:2009/02/23(月) 21:36:22 ID:???
カラム名にPARAM_STR使うなよ
アホかw
369nobodyさん:2009/02/23(月) 22:03:46 ID:ikSisMyc
【OS名】CentOS 5.0
【PHPのバージョン】php5.2
【連携ソフトウェア】JavaScript Smarty
【質問内容】
ユーザがログインに成功したときにセッションに値をセットして
次にページにアクセスしてきた時にSmartyで値があるか確認して初期化処理

例:
{{if $smarty.session.foo == 'bar'}}
init(); //これはJScriptの関数
{{/if}}

をしたいんですけど、ブラウザを終了するとセッションまで破棄されてしまいます。
ご教授お願いいたします。
370nobodyさん:2009/02/23(月) 22:06:30 ID:cBNbBaFX
>>366
sql文に直接変数入れる方法でしました。できました。
ありがとうございました
>>367,368
やってみたのですが、反応としては356とほぼ同じでした
マニュアルのパラメータ一覧のものをいろいろ代えてやってみたのですが
どうもうまくいきませんでした。
371nobodyさん:2009/02/23(月) 22:12:39 ID:???
>>369
セッションはブラウザを終了すると破棄されるものです
継続したいならクッキーを使うといいよ
372nobodyさん:2009/02/23(月) 22:28:00 ID:???
>>370
そのいろいろかえてやってみた、の中に正解が入ってないわけだな。
ビット和はとったのか。まぁ、いいや。メンドクセ
373nobodyさん:2009/02/23(月) 22:55:40 ID:DYtiHKsN
なぜEXCLUSIVEはトランザクション開始直後に
ジャーナルファイルを作成しないのか?
374nobodyさん:2009/02/23(月) 22:59:36 ID:???
アホか
375369:2009/02/23(月) 23:03:42 ID:???
>>371
PHPSESSIDをクッキーに格納する仕様と勘違いしてました。
ありがとうございました。
376nobodyさん:2009/02/24(火) 00:24:39 ID:r/vu3Jnx
          ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <ココまでアホばかり
 彡、   |∪|  /
/ __  ヽノ /
(___)   /
377nobodyさん:2009/02/24(火) 07:08:35 ID:???
pdoで急にinsertできなくなった・・
エラーなしで何事もなく終わってるのに肝心のinsertだけできていない・・
378nobodyさん:2009/02/24(火) 07:37:15 ID:???
俺なんてPHPMYADMIN全データ文字化けしちゃった。
何もいじってないのに意味不明
379377:2009/02/24(火) 07:41:12 ID:???
おお!すっかりphpmyadminの存在忘れてて
そっちでやったらカラムの数と値の数が合ってないよってエラーが出てきた!
凡ミスだった。dクス
380nobodyさん:2009/02/24(火) 10:11:31 ID:MqsJKVm4
画像のアップロード処理を作っているのですが、
$_['FILE']に入っているtypeはブラウザが送信するもので、
信用できないと聞きました。
そこで、アップロードされたファイルがJPEG、BMP、PNGであることを確認する方法を教えてください。
自分なりに考えてみたのは、
imagecreatefrom〜で、作成できるか確認するというものなのですが、これでもいいのでしょうか?
381nobodyさん:2009/02/24(火) 10:38:47 ID:???
>>380
ttp://docs.sun.com/app/docs/doc/817-6000/6mldto822?l=ja&a=view
こういう記事を参考にして
phpでmimeタイプのチェッカーを作成するか
面倒なら外部アプリケーション(コマンド)を使用して
取得できる環境なら(おそらく色々制限がある)そうしたほうが確実で手っ取り早い
382nobodyさん:2009/02/24(火) 10:42:58 ID:???
exif_imagetype
383nobodyさん:2009/02/24(火) 10:46:06 ID:???
私の目標

Powered by 俺 って書けたらいいな><
384nobodyさん:2009/02/24(火) 10:52:41 ID:???
getimagesizeで取得できるmimeじゃだめかな?
385380:2009/02/24(火) 11:16:50 ID:MqsJKVm4
レスありがとうございます。

>>381
恥ずかしながら、私には難しすぎて理解できません;
MIMEタイプについて学ぶ必要がありそうですね;;

>>382
>>384
なるほど、画像ファイルの場合はこういう専用の関数を使うといいのですね。

はじめの質問からちょっとずれてしまうのですが、画像以外の場合ではどんな方法があるのでしょうか?
たとえば、MP3ファイルの場合など。
PECLのFileinfo関数なんかは使えるのでしょうか?

後学のために教えてください。
386nobodyさん:2009/02/24(火) 11:24:58 ID:???
そこまで分かってるなら、試すなりぐぐるなりすればいいと思うがw
387nobodyさん:2009/02/24(火) 11:29:20 ID:???
家泊まってもいいって言われたのはフラグたったのかな?
388nobodyさん:2009/02/24(火) 12:52:56 ID:???
>>385
$str = file_get_contents("example.mp3");
if (substr($str, 0, 3) == "ID3") { ... }
389nobodyさん:2009/02/24(火) 13:06:52 ID:???
地味にこれが便利。

$mimetype = `file -bi $file`;
390380:2009/02/24(火) 14:25:53 ID:MqsJKVm4
>>386
それはそうなのですが、
たとえば、finfo_file()で得られる値は信用してよいのか、などがわからなくて;

>>388
なるほど、MP3の場合は、先頭にID3 タグの情報があるかどうかで判断できるわけですね。
しかし、MP3以外にも対応できる、もっと汎用的な方法はないのでしょうか?

>>389
linuxコマンドで取得するということでしょうか?
こんな方法もあるんですね!勉強になります。

続けて質問になってしまうのですが、ファイルサイズやファイル名などに関しても、
$_FILEの値は信用してはいけないのでしょうか?
その場合、安全な方法を教えてください。
391nobodyさん:2009/02/24(火) 14:56:33 ID:???
>>390
画像だけならfreadして、どんな文字列から始まるかで判別する方法でいいんじゃないかな
JPG→\xff\xd8
PNG→\x89PNG\x0d
GIF→GIF87a or GIF89a
ビットマップは…しらねぇ('A`)
392nobodyさん:2009/02/24(火) 17:27:52 ID:???
拡張子でいいじゃん。拡張子がjpgで中身がBMPとかだったら使う側の問題だろ
393nobodyさん:2009/02/24(火) 18:57:41 ID:TovVFkKx
クレジット番号と、有効期限などをユーザーに入力させて、
照合(決済できるクレジットカードかどうか)するというASPってありますか?
普通にZEROとかの決済会社とかでは、決済せずに照合のみってできるんでしょうか?
394nobodyさん:2009/02/24(火) 19:01:33 ID:???
>>393
CAFIS
395nobodyさん:2009/02/24(火) 19:03:02 ID:TovVFkKx
>>394
早速ありがとうございます
調べてみます
396nobodyさん:2009/02/24(火) 20:13:38 ID:???
配列の各データをimplodeでくっつけたいんだけど
各データをくっつけるときについでに ' ' でくくりたい。

foreach( $data1 as $d )$data2[]="'$d'";
$str = implode( ',', $data2 );
とかやってるんだけど、これダサくね? 字の数も多いし。
もっとかっこよくやりたい。
397nobodyさん:2009/02/24(火) 20:16:29 ID:???
array_mapじゃね?
398nobodyさん:2009/02/24(火) 20:17:21 ID:???
>>>>396
> 配列の各データをimplodeでくっつけたいんだけど
> 各データをくっつけるときについでに ' ' でくくりたい。
>
> foreach( $data1 as $d )$data2[]="'$d'";
> $str = implode( ',', $data2 );
> とかやってるんだけど、これダサくね? 字の数も多いし。
> もっとかっこよくやりたい。
399nobodyさん:2009/02/24(火) 20:19:04 ID:???
>>396
$str = "'".implode("','", $data2 )."'";
400nobodyさん:2009/02/24(火) 20:37:24 ID:???
>>397
コールバック関数書くのめんどくさくね?字の数増えるし。
401nobodyさん:2009/02/24(火) 20:56:11 ID:9Iv6lmqO
file_get_contentsとfile関数についてですが
これらはPHP5ではバイナリセーフの関数ということであってますか?
色々調べたのですがバイナリセーフではないという記事が多くて困惑してます
マニュアルにはfileはPHP4.3でバイナリセーフになり
file_get_contentsはバイナリセーフとは書いてませんが
バイナリデータに対応してると書いてます(バイナリデータ対応=バイナリセーフ?)
実際にテストもしてみましたがヌル文字もちゃんと表示されているようでした
バイナリセーフではないというのは過去のこと(記事が古い)ということでしょうか?
402nobodyさん:2009/02/24(火) 22:07:03 ID:???
>>401
PHP5.xxまでならバイナリに対応してる

PHP6以降、バイナリを突っ込めなくなるモードに設定できるようになる
403nobodyさん:2009/02/24(火) 22:33:58 ID:gE9pwkM6
imagecopymergeで背景画像(jpg)にユーザがアップロードした画像(jpg/gif/png)を合成したいのですが、
pngの場合に透過部分が透過されずに塗りつぶしになってしまいます。
png-8でもpng-24でも透過できるようにしたいのですがどうすればいいのでしょう?
環境はphp5です。できればImageMagickは使わずにやりたいのですが…

現在のソースはこんな感じです。
$size = getimagesize('./front.png');
$back = imagecreatefromjpeg('../back.jpg');
$front = imagecreatefrompng('./front.png'); //fromjpgだったりgifだったり
imagetruecolortopalette($front, false, 256);
imagecopymerge($back, $front, 0, 0, 0, 0, $size[0], $size[1], 100);
header('Content-Type: image/png');
imagepng($back);
404nobodyさん:2009/02/25(水) 01:09:50 ID:Ndqi56nA
sample.phpってのがあって、なんでかhttp://../sample/
みたいに.php無いのにそのページ開いてしまいます
sample.phpの場合だけ開くようにしたいのですがよろしくおねがいします
405nobodyさん:2009/02/25(水) 01:23:53 ID:Ndqi56nA
やっぱり、/sample/でも開いてくれたほうが便利な気がしてきたのでやっぱこのままにしときます
406nobodyさん:2009/02/25(水) 01:43:31 ID:aIiX70rd
flockで、3つのファイルを、排他ロックしたときに、
その3つのロックを開放するときの順番で、ロックをした順番ですか?
それともロックをした順番の逆順にロック開放するべきですか?

407>>406:2009/02/25(水) 01:44:45 ID:aIiX70rd
すいません、誤字があったので書き直しますorz

flockで、3つのファイルを、排他ロックしたときに、
その3つのロックを開放するべき順番は、ロックをした順番ですか?
それともロックをした順番の逆順にロック開放するべきですか?

以上です
408nobodyさん:2009/02/25(水) 03:48:51 ID:lXxF9gdp
private $a,
    $b,
    $c;
という書き方と、
private $a;
private $b;
private $c;
という書き方、どっちが適切ですか?
409nobodyさん:2009/02/25(水) 03:58:40 ID:???
適切の基準とは?
410nobodyさん:2009/02/25(水) 04:00:27 ID:???
>>406
順番は関係ない

>>408
目的もなしに手段だけ見せて適切か不適切かなんて下せる訳ない
あえて言えばコーディングスタイルの問題
宗教論争になるから好きにしろ
411nobodyさん:2009/02/25(水) 12:11:48 ID:???
何でも基準とかいう奴なんなの?
答えられないんじゃないの^^;
412nobodyさん:2009/02/25(水) 12:54:52 ID:Bh8pwxYs
ショッピングカートの作り方について質問です

商品名をクリックするとクッキーに商品名と金額を記録するようにしたのですが
クッキーに配列で記録することはできるのでしょうか?

$_COOKIE['sinamono']にカートの中身が全部入ってるとして解説1のような構造で取れるようにしたいですが
現在方法が分からず解説2のようにやってます
解説1のようにクッキーに記録するにはどのようにしたらよろしいかアドバイスお願いしまsう

「解説1」
$_COOKIE['sinamono'][0]['name'] これは商品Aの名前
$_COOKIE['sinamono'][0]{'okane'] これは商品Aの金額
$_COOKIE['sinamono'][1]['name'] これは商品Bの名前
$_COOKIE['sinamono'][1]{'okane'] これは商品Bの金額
以下続く・・・

「解説2」
$_COOKIE['sinamono_0_name'] これは商品Aの名前
$_COOKIE['sinamon_0_okane'] これは商品Aの金額
$_COOKIE['sinamon_1_name'] これは商品Bの名前
$_COOKIE['sinamono_1_okane'] これは商品Bの金額
413nobodyさん:2009/02/25(水) 13:30:48 ID:???
>>412
商品データベースは持っていないのかな?
データベースがあるなら、記録するのは商品コードだけでよいと思う。

記録方法は、COOKIEにそのままなら配列は無理だから、CSV形式とかにする。

だが、一番手っ取り早くて、効率的なのはセッションを使うことだと思う。
414nobodyさん:2009/02/25(水) 13:33:30 ID:???
$_COOKIE['sinamono_0_name']を$GOODS['sinamono'][0]['name']に変換する関数書けばいいやん
415nobodyさん:2009/02/25(水) 13:42:15 ID:???
COOKIE→[abcdefg]

データベース(テーブル1)
abcdefg 商品ID
abcdefg 商品ID
abcdefg 商品ID
abcdefg 商品ID

データベース(テーブル2)
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
416nobodyさん:2009/02/25(水) 13:44:07 ID:???
>>412
マニュアルの例3に配列での保存方法がある
http://www.php.net/manual/ja/function.setcookie.php#function.setcookie.examples
417nobodyさん:2009/02/25(水) 13:50:34 ID:???
>アドバイスお願いしまsう

おまえかわいいなw
418nobodyさん:2009/02/25(水) 14:11:49 ID:ZVMHOF39
data.txtファイルのマウスでつまみ、pppp.phpファイルに落とすと、
pppp.phpファイルが実行され、pppp.phpファイルに書かれた仕様でdata.txtの内容をIEに表示させる。
という、pppp.phpファイルを書く事は可能でしょうか?
可能だとすれば、どんな関数を使えばいいのか教えて下さい。
419nobodyさん:2009/02/25(水) 14:31:57 ID:???
つajax
420418:2009/02/25(水) 14:38:39 ID:ZVMHOF39
>>419
phpでは不可能ですか?
421nobodyさん:2009/02/25(水) 14:45:54 ID:???
>>418
Windowsでいいんだよな?
できるけど、いろいろと設定が必要なはず。
422nobodyさん:2009/02/25(水) 14:45:58 ID:???
ごめん、何がしたいのか理解できない

PHPはサーバーサイドってことを理解したうえでの質問と見ておk?
423nobodyさん:2009/02/25(水) 14:48:21 ID:???
テキストファイルをドラッグ&ドロップしてphpファイルを起動させて引数情報を得て
処理するわけだから関数以前にやることありありだな
424nobodyさん:2009/02/25(水) 14:52:22 ID:???
ブラウザー上でのD&Dとは限らない。CLIでのことだろ?
デスクトップにPHPファイルを置いておいて、ドラッグ&ドロップでデータを受け入れて処理して、ブラウザを起動する。

425418:2009/02/25(水) 14:55:02 ID:ZVMHOF39
>>421
> Windowsでいいんだよな?
はい。

>>422
> ごめん、何がしたいのか理解できない
2ちゃんのスレッド情報の"mail""name""time""id""res"の情報がdata.txtにcvs形式で書かれています。
それを、pppp.phpファイルを使い、自分の好みの表示方法でIEに表示させたいのです。
426418:2009/02/25(水) 14:56:48 ID:ZVMHOF39
>>423
>テキストファイルをドラッグ&ドロップしてphpファイルを起動させて引数情報を得て処理する
そうです。 これがやりたいのです。
427nobodyさん:2009/02/25(水) 14:58:55 ID:???
>>426
できなくもないが
色々しないといけない
基本的にPHPはサーバーサイド向けに作られてるから
そういうのしたいならCなりJavaなり使おうな
428nobodyさん:2009/02/25(水) 15:05:02 ID:???
>>427
はぁ?
デスクトップ環境でPHPが動かないとでも?
レンサバユースしてないアフィリエーターらしい考え方だな。

できなくもないってなら、できる方法を教えてやれよ。知ってるならだが。
429418:2009/02/25(水) 15:05:11 ID:ZVMHOF39
>>427
了解しました、あきらめます。
430nobodyさん:2009/02/25(水) 15:08:10 ID:???
>>428
何が言いたいのかわからん
431nobodyさん:2009/02/25(水) 15:27:40 ID:???
pppp.batファイルを用意して

php pppp.php %1

とか書いておけばいいんじゃないの?
432418:2009/02/25(水) 15:28:03 ID:ZVMHOF39
http://www.html-kouza.com/html/input-file.html
じゃあ、ここにあるような、『参照』のボタンでdata.txtを読み込み、↑に書いた作業をさせるのは可能でしょうか?
433nobodyさん:2009/02/25(水) 15:28:50 ID:???
>>432
お前それファイルのアップロードやんけ
434nobodyさん:2009/02/25(水) 15:37:03 ID:???
ajaxを覚えればできるからさっさと勉強してこい
435418:2009/02/25(水) 15:42:27 ID:ZVMHOF39
>>433
こういう風に、data.txtの選択&読み込みが出来たら嬉しいんだけど、htmlにはそういう機能はないのでしょうか?
436nobodyさん:2009/02/25(水) 15:44:19 ID:???
>>435
いや、それブラウザでやってるじゃん
真似してみたらいいじゃん
437nobodyさん:2009/02/25(水) 16:07:13 ID:???
>>435

>>434が教えてくれてるのに君はひどい人だね
438nobodyさん:2009/02/25(水) 16:36:21 ID:???
>>315>>322
どこが違うのか、わからん
439nobodyさん:2009/02/25(水) 16:42:17 ID:???
失敗例はキャッチブロックにロールバックが無くて、
成功例はロールバックって書いてあるところかな?
440nobodyさん:2009/02/25(水) 17:03:04 ID:???
いやどっちも書いてるやん
441nobodyさん:2009/02/25(水) 23:16:51 ID:???
phpの中でjavascriptを連携させるときに、中に入るクオーテーションの種類が3つになってしまって使えん・・
オンクリックの中にさらにクオーテーション入ったときとか、functionしても、引数使うから
結局''で囲うからどうにもならね
442nobodyさん:2009/02/25(水) 23:23:13 ID:???
日本語でおk。
443nobodyさん:2009/02/25(水) 23:28:33 ID:+kmtnISz
PHPは実行されるまで未定義の関数(若しくは関数名TYPO)が存在するか否か分かりませんが、
ツールなどで未定義の関数や引数の間違いを静的に検出する方法はないですか?
444nobodyさん:2009/02/25(水) 23:33:06 ID:???
php_check_syntaxじゃだめか?
445nobodyさん:2009/02/25(水) 23:36:40 ID:???
<?php
function hoge(){
echo 'hoge';
}
hage();
?>
とかあったときに、実行前に関数hageが無い事を検出したいって事だろ。

静的解析とかダセェ事せずに自動テスト使おうぜ。
446nobodyさん:2009/02/25(水) 23:41:51 ID:LSqAU6YZ
SQL文を発行するのに、

$dbh->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");

以外の書き方って、ある?
------------------------
【環境】
PHP5 + PDO + SQLite3

ようはexec以外のやり方で、って意味。
447nobodyさん:2009/02/25(水) 23:43:15 ID:???
>>442
クオーテーションがネストしてしまうときに、
どう対処したらいいですか、って意味だろ?

行間読もうぜ
さもないと、30才でホームレスだにょ
448nobodyさん:2009/02/25(水) 23:54:44 ID:???
>>446
一発で終わりならexec、ループさせるならprepareで良いんじゃない?
449nobodyさん:2009/02/25(水) 23:59:50 ID:???
>>448
ああ、prepareがあったか。
ありがと。
450nobodyさん:2009/02/26(木) 00:27:28 ID:tryMdVBh
mysqlのPDOを使ってみたいのですが
php.iniのphp_mysql.dllをコメントをはずせばつかえるのでしょうか?
451nobodyさん:2009/02/26(木) 01:06:52 ID:???
使える。
452nobodyさん:2009/02/26(木) 01:23:01 ID:???
>>450
自宅でのテスト環境だったら、たぶんそれでいける。
確認はphp.infoを見る。

無料のレンタルサーバーではほとんど
ドライバが入っていない(ので無理)
453nobodyさん:2009/02/26(木) 01:55:08 ID:???
>>441
スクリプト中でechoとかprint()使ってるのかなぁ。。
なら、heredocにすれば少しは気を使う部分が減るかもしれない。

$text = 'ちんこ' ;
echo <<<__E_O_T__
<button name="tinko" onclick="alert( '{$text}' ) ;" />
__E_O_T__


HTMLとかJavaScriptは完全に別ファイルにして
<button name="tinko" onclick="alert( '<php echo $text ?> ' ) ;" />
のほうがいいと思うけど。
454nobodyさん:2009/02/26(木) 02:05:21 ID:91pUGaxV
おそらく、PHP4とPHP5での違いだと思うのですが、

<input type="text" name="test" value="">←に、test'sと入力して送信すると、

PHP4だと、
$_GET["test"]の値は、test'sとなりますが、

PHP5だと、
$_GET["test"]の値は、test\'sとなります。

送信された時点でエスケープされているのですが、これはphp.iniで変更可能でしょうか?
455nobodyさん:2009/02/26(木) 02:08:20 ID:???
うん
マジックなんちゃらやね
456nobodyさん:2009/02/26(木) 02:20:57 ID:???
magic_quotes_なんちゃら

SQLインジェクションの対策で
そういう変なオプションがある。

自動的に'とかを勝手にエスケープしてくれるっていう。
457nobodyさん:2009/02/26(木) 03:45:51 ID:91pUGaxV
さんくす!
458418:2009/02/26(木) 04:00:48 ID:GtV/r+in
昨日は有り難うございました。
http://www.stackasterisk.jp/tech/php/php02_06.jsp

【form.html】
<html><body>
<form action="display.php3" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

【display.php3】
<html><body>
<?
print $fName;
?>
</body></html>

今日はこれにチャレンジしてみたのですが、うまく動きません。
どこが悪いのかご指摘下さい。
459nobodyさん:2009/02/26(木) 04:06:33 ID:???
$_POST['fName']
そこの情報古すぎるから違うとこのほういいよ
460nobodyさん:2009/02/26(木) 04:07:45 ID:???
>>458
ほんとにPHP3が動いているのか?
とかいうオチじゃないの。
461nobodyさん:2009/02/26(木) 04:08:51 ID:7qsKyuky
ファイルに100って数字を入れておいて、
5分ごとに1減らす、ってどう書けばいいの?

cronとかじゃなくて。
462418:2009/02/26(木) 04:08:56 ID:GtV/r+in
>>459
有り難うございます。
> $_POST['fName']
をドコと入れ替えるのでしょうか?
463418:2009/02/26(木) 04:10:48 ID:GtV/r+in
>>460
あ、なるほど。.php3ってそういう意味なんだ。
私の環境はPHP Version 5.2.6でしたw
464nobodyさん:2009/02/26(木) 04:10:55 ID:7qsKyuky
そのPHPファイルにアクセスするたびに
計算してるようなんだけど。

だから、例えばページが過疎ってて、
3日間アクセスがなかったら、その間は
計算しない感じ。

そんで3日ぶりにアクセスがあったら、
「えーーっと、、、、前回のアクセスから
3日だから、3(日)X24(時間)X12(5分の単位)
減らせばいっかな、、、」
とかって計算しているようなんだけど??
465418:2009/02/26(木) 04:17:39 ID:GtV/r+in
じゃあ、PHP Version 5.2.6の環境で動く、>>458を誰か書いて下さい。 お願いしますっ。
466nobodyさん:2009/02/26(木) 04:21:18 ID:???
【form.html】
<html><body>
<form action="display.php3" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

【display.php3】
<html><body>
<?
print $_POST['fName'];
?>
</body></html>
467nobodyさん:2009/02/26(木) 04:22:17 ID:???
>>465
>>459 に書いてある。
468nobodyさん:2009/02/26(木) 04:24:25 ID:???
ちょっと間違えた。
【form.html】

<html><body>
<form action="display.php" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

【display.php】

<html><body>
<?
print $_POST['fName'];
?>
</body></html>
469nobodyさん:2009/02/26(木) 04:24:57 ID:???
>>467
だからどこを変更したらいいのか
わからないから聞いてるんだろ?

自閉症もたいがいにしろや
470418:2009/02/26(木) 04:42:12 ID:GtV/r+in
>>468
有り難うございます。
form.htmlこれで入力枠が表示されます。
で、aaaaaとか入力して、ボタンを押すと、真っ白の画面に変わり何も表示されません。
どうしたらいいでしょうか?
471nobodyさん:2009/02/26(木) 04:44:09 ID:???
<form action="display.php"

この行はあってる?

それと、
display.php
ファイル名これに変更したから。
472418:2009/02/26(木) 04:47:29 ID:GtV/r+in
>>471
はい。 >>468をそのままコピペしました。
473nobodyさん:2009/02/26(木) 04:51:12 ID:???
>>472
アパッチは起動してる?

ブラウザのURL欄に

http://localhost/form.html

とかって入力しないとだめだよ

ダブルクリックしてブラウザで見たらだめってこと
今はURL欄に
file:///C:/display.php
とかって表示されてるでしょ?それだとだめ
474418:2009/02/26(木) 04:56:26 ID:GtV/r+in
>真っ白の画面に変わり何も表示されません。
つーか、この状態でソースを表示させると、
<html><body>
<?
print $_POST['fName'];
?>
</body></html>
これがマンマ表示されます。
だから、変数の中に何も代入されてなくて、print関数でnullを表示してるのではないでしょうか?
475418:2009/02/26(木) 04:57:41 ID:GtV/r+in
アパッチは動いてます。
http://localhost/php/phpinfo.php
これを入れると、紫色の表がずるずる出て来ます。
476418:2009/02/26(木) 05:01:07 ID:GtV/r+in
file:///C:/display.php
これではなく、
http://localhost/php/display.php
これになってて、真っ白の状態です。
477418:2009/02/26(木) 05:24:06 ID:GtV/r+in
解決しました。
<?

<?php
としました。
有り難うございました。
478418:2009/02/26(木) 06:41:16 ID:GtV/r+in
おかしいな、色々いじってたら、form.htmlに入力してクリックすると、
display.phpが表示されなくて、ファイルのダウンロードってのが表示されるようになったw
479nobodyさん:2009/02/26(木) 06:56:40 ID:zwlsZYIS
pcntl_forkでフォークした時、
外部とのIOはどうなりますか?
たとえば、オープンしてあるファイルとか、
DBとの接続とか。
複数プロセスからファイルがオープンされているような状態になるのはまずいんじゃないかと
思うのですが・・
480418:2009/02/26(木) 06:57:27 ID:GtV/r+in
ああ、わかった、form.htmlをつまんで、ieに落とすだけじゃダメなんだ。
ちゃんと、http://localhost/php/form.htmlと打つと
481nobodyさん:2009/02/26(木) 07:10:01 ID:???
ワラタ
482nobodyさん:2009/02/26(木) 08:12:14 ID:WDGjNsPd
DB使えないレンタル鯖で、情報をインサートする手段を考えていて、
txt、cgiや、datファイルなどなどに書き込めることがわかったのですが、
ふと、.phpにもインサートできるのかな?と疑問におもいました。
phpに書き込んで、それぞれ変数に格納していって、参照〜
みたいなのを1000件くらいしたときtxt cgi dat などと比べて速度は変わらないでしょうか?
483nobodyさん:2009/02/26(木) 09:10:36 ID:???
君は何をいってるんだい?
拡張子が変わったところでプレーンテキストのデータということには変わりないんだろ?
484nobodyさん:2009/02/26(木) 09:45:22 ID:???
>>482
DBが使えないといっても、txtが使えるならSQLiteぐらい使えるんじゃない?
まぁ、それが無理として、更新が重ならないという条件が付くなら、phpファイルに
var_export($hoge, true);の結果を書きこむ手はある。
速いよ。
しかし、一気に読み込むからメモリは食うけどな。メモリ割り当て次第。
485nobodyさん:2009/02/26(木) 10:20:05 ID:???
>>484
なんでvar_export?
取り出すときevalすんの?しかも遅いじゃん

serializeの方が安全で高速
486nobodyさん:2009/02/26(木) 10:24:40 ID:???
たかだか1000件
マイクロ秒単位の誤差などどうでもいい
好きにしろ
487nobodyさん:2009/02/26(木) 10:36:38 ID:???
parse error syntax $endうんたらわけわかんね
488nobodyさん:2009/02/26(木) 10:45:56 ID:???
凡ミスするやつはIDE使え
489nobodyさん:2009/02/26(木) 12:49:24 ID:???
aptanastudioとPDT2がうめえwwww
490nobodyさん:2009/02/26(木) 12:49:59 ID:???
僕の大好きなあぷてぃーなちゃんがこんなに進化するとは思わなかったw
dw8から乗り換えるわwwwwwwwww
491nobodyさん:2009/02/26(木) 12:50:37 ID:???
PHPEclipse使ってるけどAptanaって使いやすいのか?
492nobodyさん:2009/02/26(木) 12:54:45 ID:hOiLi7h5
先生方!
文字列を1byteじゃなく1bitを取得することってできますか?
493nobodyさん:2009/02/26(木) 13:06:37 ID:???
できる
494nobodyさん:2009/02/26(木) 13:15:31 ID:???
aptanaは単品よりaptanastudioのほうがいいよ
495nobodyさん:2009/02/26(木) 13:22:02 ID:???
>>485
はぁ?
試したのかよ。$data = 付けて保存したら、includeするだけだぜ。
unserializeの方が遅いよ。
496nobodyさん:2009/02/26(木) 14:12:33 ID:YD+Z+nCM
サーバー全体で404エラー画面をhtaccessで設定しています。
しかしPHP内で
header("Not Found", true, 404);
と書くと、設定している404エラー画面ではなくブラウザの404エラー画面が出ます。
設定しているエラー画面を表示させるにはどう書けばいいでしょうか?
497nobodyさん:2009/02/26(木) 14:15:08 ID:???
location
498nobodyさん:2009/02/26(木) 14:22:20 ID:???
locationとかMETAタグだと、ブラウザに表示されるアドレスが
404エラーのファイルになりませんか?
499nobodyさん:2009/02/26(木) 14:27:22 ID:???
>>498
それならinclude(error.html);exit();で良いじゃないか
500nobodyさん:2009/02/26(木) 14:28:09 ID:???
>>496
そのheaderを出した後、自前のエラー画面をreadして出力。
ブラウザは404ヘッダーと404用のソースを受け取る
501nobodyさん:2009/02/26(木) 14:35:56 ID:???
>>496
その問題に関係あるか分からないけど
IEだと512バイト?以下のエラーファイルは無視して
自前のエラーファイル使うらしい。

インターネットオプションの詳細設定から変えられるけど。
502nobodyさん:2009/02/26(木) 15:03:08 ID:???
>>499->>501
まとめて失礼します。
たくさん教えてくださってありがとうございます。
無事できるようになりました。
>>501
それは知りませんでした。デザイン頑張ります。
503nobodyさん:2009/02/26(木) 15:32:12 ID:6qh6YAhf
2人以上のn人を3人グループと2人グループに分け、それぞれのグループ数を出すにはどうしたら良いですか?
なるべく3人グループができるようにします
関数にて処理したいと思います
よろしくおねがいします

function get_group (n) {
/*
計算するところ
*/
return array('3' => ? ,'2' => ?);
}


n=2の場合
array('3' => 0 ,'2' => 1);

n=7の場合
array('3' => 1 ,'2' => 2);

n=9の場合
array('3' => 3 ,'2' => 0);

n=11の場合
array('3' => 3 ,'2' => 1);
504nobodyさん:2009/02/26(木) 15:34:16 ID:???
>>503

$a = 10 % 3;

10を3で割った余りが$aに入る($a → 1)

これ使え
505nobodyさん:2009/02/26(木) 15:35:02 ID:???
nを3で割って余りが1か2で判断すればいいじゃん
506nobodyさん:2009/02/26(木) 15:37:50 ID:???
switch mod
507nobodyさん:2009/02/26(木) 15:38:09 ID:???
余りが1だったらどうすればいいの?
508nobodyさん:2009/02/26(木) 15:39:00 ID:???
>>507
1組減らしたら何人余るか計算してみろよ
509nobodyさん:2009/02/26(木) 16:03:26 ID:6qh6YAhf
すっきりしたコードではないですが、一応できましたのでのせときます
ありがとうございました

function get_group ($n) {
if((int)$n < 2) return false;
$total = (int)$n;
$sannin = 0;
$futari = 0;
$amari = $total % 3;
if($amari === 1) {
$sannin = floor(($total / 3)) - 1;
} else {
$sannin = floor($total / 3);
}
$futari = ($total - ($sannin * 3)) / 2;

return array('3' => $sannin ,'2' => $futari);
}
510nobodyさん:2009/02/26(木) 16:04:28 ID:???
なにそのきめえコードwwww
511nobodyさん:2009/02/26(木) 16:06:21 ID:???
いま書いてやるから待ってろ
512nobodyさん:2009/02/26(木) 16:11:53 ID:???
なるべく三人グループにしたいってのになんで
n=7のときは2人グループが二つできるの?
513nobodyさん:2009/02/26(木) 16:18:30 ID:???
一人ぼっちになった奴の気持ちになってみろ
514nobodyさん:2009/02/26(木) 16:21:51 ID:???
function group($n) {

switch ($n) {

case 1 : return false;
case 2 : return array(0, 1);
case 3 : return array(1, 0);
case 4 : return array(0, 2);
case 5 : return array(1, 1);
case 6 : return array(2, 0);
case 7 : return array(2, 1);

・・・略

}

}
515nobodyさん:2009/02/26(木) 16:32:40 ID:???
if (is_numeric($n = $_SERVER['QUERY_STRING'])) getGroup($n);
print_r(getGroup($n));
function getGroup($n) {$a=floor($n/3);$b=fmod($n,3);switch ($b) {case 0:return array('3'=>$a,'2'=>0);break;case 1:return array('3'=>$a-1,'2'=>2);break;case 2:return array('3'=>$a,'2'=>1);break;}}
516nobodyさん:2009/02/26(木) 16:33:56 ID:???
GMP関数使えばもうちょっと行数減らせるけど鯖によるから今回は使わなかった
517nobodyさん:2009/02/26(木) 16:35:59 ID:???
break;はreturnで返してるから書かなくてもいいけどね
あとは好きにしろ
518nobodyさん:2009/02/26(木) 16:37:58 ID:???
>>515
横からだけど、fmodなんて関数あったのか
しらんかったわw
519nobodyさん:2009/02/26(木) 16:44:24 ID:???
今思い出したけど、switch構文の中にreturnってなんか気持ち悪いと思うのは俺だけなんだろうか
ループ処理内にreturnもなんか違和感を感じる
520nobodyさん:2009/02/26(木) 16:46:25 ID:???
>>519
俺もなんか気持ち悪い。
でも、やってる人も多いんだよね。
まぁ、好き嫌いのレベルなのんだよね。たぶん。
521nobodyさん:2009/02/26(木) 16:53:00 ID:???
522nobodyさん:2009/02/26(木) 16:59:46 ID:???
プログラミングっつうのはなシンプルでメンテナンスしやすいように見やすく書くことを頭に置いておくんだ
523nobodyさん:2009/02/26(木) 17:02:39 ID:???
プログラムを複雑怪奇にしてオレしかメンテできないようにすれば、なかなかクビにならない。
524nobodyさん:2009/02/26(木) 17:05:39 ID:???
>>523
そういって辞めたやつがいるんだがまじでしばきたい
525nobodyさん:2009/02/26(木) 17:14:45 ID:???
あひゃひゃ。
もしかして、まじでオレだったりしてな。
526nobodyさん:2009/02/26(木) 17:21:44 ID:???
>>524
それは、そういう奴をさっさと見抜いてクビにできなかった上司の責任。

ふつうに考えればよいコードを書く方がクビになりにくいのは自明だから、
それができなくて辞めた奴を憎んでもしょうがないべ
逆に、良いコード書いても評価されないならとっとと辞めたほうがよさげ
527nobodyさん:2009/02/26(木) 17:24:01 ID:???
良いコード書くだけで評価される職場なんて終わってる
528nobodyさん:2009/02/26(木) 17:29:28 ID:???
貴様らこの長くてコピペくさいコードを改良できるかな?

$fp=fopen($filename1,"a");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);

$fp=fopen($filename2,"w");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);
529nobodyさん:2009/02/26(木) 17:30:58 ID:???
>>528
既にそれの簡易版コードあるじゃん・・・
530nobodyさん:2009/02/26(木) 17:32:11 ID:???
>>528
ID出てないよ
531nobodyさん:2009/02/26(木) 17:33:13 ID:???
コードゴルフしたい奴もコーディングスタイルについて語りたい奴もスレチだ
雑談でネタ振りしてろカス
532nobodyさん:2009/02/26(木) 17:38:21 ID:???
>>528
function ahoaho( $filename, $filemode, $str ){
$fp=fopen($filename, $filemode); flock($fp,LOCK_EX); fwrite($fp,$str) fclose($fp);
}
ahoaho( $filename1, "a", $str1 );
ahoaho( $filename2, "w", $str2 );
533nobodyさん:2009/02/26(木) 18:02:42 ID:???
継承の質問なんですが
534nobodyさん:2009/02/26(木) 18:07:13 ID:???
継承の質問なんですが継承で子、孫と作っていくと
class sql {
function getUser() {}
}
class subsql extends sql {
function getParam(){}
}
class sub2sql extends subsql
535nobodyさん:2009/02/26(木) 18:12:54 ID:???
sqlしか必要がないファイル、sql,subsqlが必要なファイル、全部必要なファイル
この3つからgetUserを呼び出す際
呼び出しを統一のクラスで管理したいのですがsql,subsql,sub2sqlとクラス名が違うためできません。
クラスを上書きみたいなことはできないのでしょうか?

subsqlではなくsqlの追加ファンクションとして別ファイルで定義したいのです

途中で送信してしまい変な分になってます。ごめんなさい
536nobodyさん:2009/02/26(木) 18:40:47 ID:???
>>533-535
おまえさん、スレタイが読めないように、クラスのこともわからないんだろうなぁ。
自分が何を聞きたいのかもう一度整理して、ID出してやりなおしてみたらどうよ
537nobodyさん:2009/02/26(木) 20:25:10 ID:???
>>512-513
。・゚・(ノД`)・゚・。
538nobodyさん:2009/02/26(木) 21:31:11 ID:???
http://webhosting.yahoo.co.jp/

契約の金額が増えるほど
ディスクの容量が減る
ステキなヤフーのホスティングサービス
539nobodyさん:2009/02/26(木) 22:27:45 ID:???
>519
俺は逆にswitchの中には極力return以外を置かないようにしてる。
breakも不要になるからbreak忘れ防げるし、全てのcaseが即returnになってれば読みやすい。
540nobodyさん:2009/02/26(木) 23:09:38 ID:???
「ある一定の期間(例えば24時間)ごとに、何かをするにはどうしたらいい?」

って英語で質問したら、いっぱい回答きて
収拾つかなくなったよ
たすけて
どうしたらいい?

http://stackoverflow.com/questions/590464/how-do-you-write-a-process-to-do-something-every-24-hours
541nobodyさん:2009/02/26(木) 23:13:27 ID:???
542nobodyさん:2009/02/26(木) 23:46:35 ID:lNT2RMd9
URLが
http://example/test/
と言う場合、このディレクトリを取得する方法ってないでしょうか?
543nobodyさん:2009/02/26(木) 23:48:20 ID:???
>>542
$_SERVER
544nobodyさん:2009/02/26(木) 23:55:20 ID:???
>>542
testディレクトリ内で
dirname($_SERVER['SCRIPT_NAME'])
545nobodyさん:2009/02/27(金) 00:44:14 ID:???
はぁ?言いたいことがよく分からん。

そのURL叩いて何らかのPHPスクリプトが実行されるのなら、__FILE__でそのスクリプトへのパスが取得出来る。
そのパスから親ディレクトリ取ってくる。

これで回答になってる?
546nobodyさん:2009/02/27(金) 00:45:08 ID:???
>>545>>542への回答
547nobodyさん:2009/02/27(金) 01:05:50 ID:JrfelggM
WindowsでAPC使おうと思って、pecl4win.php.netみたらサイトが死んでるんですが、
自分でビルドするしかないんでしょうか?

アプリを配布するにあたって、環境はなるべく本家(に近いところ)から落としてもらおうと思ってたんですけど。
548nobodyさん:2009/02/27(金) 02:00:01 ID:GwQuSr9T
APCってシェルからPHPを呼び出した時には効かないんですか?
549547:2009/02/27(金) 02:42:59 ID:???
プロセス違うし、無理なんじゃない。
試しにスクリプトとして実行しても、ヒット数増えなかったし。(一応古いバージョンのなら手元にバイナリがある)

PHPのコンパイル、ワケがわからん。
試しにPHP本体も作ってみるかと思ったんだが、

http://jp.php.net/manual/ja/install.windows.building.php
≫ the Windows build tools をダウンロードし、それを C:\work に展開する

ってあるのも、いきなりリンク切れしてるし。
apcも、とりあえずVCでコンパイルしようとしたら、VCのヘッダファイルでサイズが0の配列ってエラーが出るし。

どこから手をつけたらいいものやら。
550nobodyさん:2009/02/27(金) 04:12:18 ID:lL0tvrw7
http://asobi.me.land.to/uyu/1.php

このページなんだけど、
getにしたのに、リロードしたら
カウントアップしてしまうんだよ

なんで?POSTだったら、そうなるってわかるけど、
getだったら、ならないはずなのに?
551nobodyさん:2009/02/27(金) 04:15:05 ID:???
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 | ここでボケて!!  |
 |_________|
   ∧∧ ||
   ( ゚д゚)||
  /  づΦ
552nobodyさん:2009/02/27(金) 04:18:21 ID:lL0tvrw7
>>551
慎重に選考を進めてまいりましたが、
残念ながらご希望に添えない結果と
なりましたのでご連絡申し上げます。

今後ますますのご健康とご活躍をお祈り申し上げます。
553nobodyさん:2009/02/27(金) 04:24:52 ID:lL0tvrw7
フォームのアクションを別ファイルにして、1.php → 2.php へPOST
<form method=post action=2.php>

そこから元ファイルに飛ばせばフォームデータ消えるから、F5更新しても大丈夫
header("Location: http://example.com/1.php");

↑こんなめんどくさいこと
しないとだめなの?
554nobodyさん:2009/02/27(金) 04:37:23 ID:???
別ファイルにしなくてもカウントアップしたらheaderで飛ばせばいいだろ
HTTPの仕様とブラウザの仕様をもう少し勉強したほうがいい
555nobodyさん:2009/02/27(金) 05:00:02 ID:lL0tvrw7
ちょ、、、HP303とか押しすぎ
556nobodyさん:2009/02/27(金) 05:01:29 ID:???
天才チンパンジーアイちゃんの今日のIDは lL0tvrw7 か
557nobodyさん:2009/02/27(金) 05:17:49 ID:???
>>556
通報しました
558nobodyさん:2009/02/27(金) 07:02:13 ID:fK1SPmyA
計算量が多く重いバッチ処理があったので、
pcntl_forkを使いフォークして複数プロセスにタスクを分配させました。
memcacheを共有メモリに使った簡易的なmap-reduceです。
プロセスを増やすほど速くなると思ったのですが、
個々のタスクの速度が落ちるだけで、
合計時間が縮まりません。
フォークを高速化目的に使うのは間違っているのでしょうか?
559nobodyさん:2009/02/27(金) 08:55:05 ID:YTPFMmJE
pdoだとローを$row[0]["TEST"]みたいにして取り出せるのに
mysql_fetch_arrayでやると$row[0]["TEST"]でデータが出てこないというか
[1]["TEST"]なら1、[2]["TEST"]なら2、・・・な値が出てくるんだけどそういうもんなの?・・
560nobodyさん:2009/02/27(金) 09:17:59 ID:???
>>559
var_dumpすれ
561nobodyさん:2009/02/27(金) 09:25:13 ID:???
>558
本命はmemcache。memcacheは相当遅いからボトルネックになってもおかしくない。
文字列と数値以外はシリアライズされるからその分重くなる。
単純にタスクが小さすぎるか、多すぎる可能性もある。タスクが小さすぎると、タスク分割/統合のオーバーヘッドが、分割による高速化を超える。
デュアルコアなら2分割以上の分割は無駄。たとえ100分割しても、働く人間が2人なら2つずつしか捌けん。
googleが速いのは、物理的に大量のサーバーに処理を分割してるのと、オーバーヘッドになるタスクの分割/統合自体も分散処理してるから。

いっぺんボトルネックがどこか測定してみ。
xdebugかzend debuggerを使えば、どの処理が時間を食っているか見られる。
562nobodyさん:2009/02/27(金) 10:25:25 ID:???
>>545
他の2名はわかってるから言いたいことがわからないのはおまえだけだよ
563nobodyさん:2009/02/27(金) 10:51:58 ID:???
>>558 >>561
フォークを高速化目的に使うのは基本的には間違いじゃね?
map reduceが目的にしているのは、大量のリソースを使えるという利点。
リソースの余剰がない1サーバー内でフォークしても重くなるだけ。
むしろ、高速化したいならフォークしてしまう処理を減らしたほうがいい。
564nobodyさん:2009/02/27(金) 11:00:56 ID:???
フォークして高速化できるのはウェブとかスパムとかクライアント側との通信にディレイが発生する
ときぐらいだろ
待ち状態(サーバ側負荷ほとんど無し)のあいだに別プロセスで並行して通信できる利点
565nobodyさん:2009/02/27(金) 13:02:18 ID:vxQr4xVs
継承の質問なんですが継承で子、孫と作っていくと
class sql {
function getUser() {}
}
class subsql extends sql {
function getParam(){}
}
class sub2sql extends subsql{
function getAge(){}
}

sqlしか必要がないファイル、sql,subsqlが必要なファイル、全部必要なファイル
この3つからgetUserを呼び出す際
呼び出しを統一のクラスで管理したいのですがsql,subsql,sub2sqlとクラス名が違うためできません。
クラスを上書きみたいなことはできないのでしょうか?

subsqlではなくsqlの追加ファンクションとして別ファイルで定義したいのです

途中で送信してしまい変な分になってます。ごめんなさい
566nobodyさん:2009/02/27(金) 13:12:19 ID:???
なんかよくわからんが、ポリモーフィズム使えばいいんじゃねーの?

$sql_obj = getSqlObj();// 必要に応じて sql,subsql,sub2sqlのインスタンスを返すメソッドね。
$sql_obj->getUser();
567nobodyさん:2009/02/27(金) 13:13:08 ID:/gqrgIY6
あるクラスのメソッドの戻り値が配列の参照渡しなのですが、
値として受け取る方法ってありますか?
ソースはこんな感じです↓
class hoge{
private $hoge = array('h','o','g','e');
public function & refHoge(){ return $hoge }
}
$hogeCls = new hoge();
$rtn = $hogeCls->refHoge();
// $rtnをごにょごにょしたいが、$hogeは変えたくない

// 今は↓の処理をやってますが、もっと良いやりかたがあったら教えてほしいです
foreach($hogeCls->refHoge() as $key => $val){ $rtn[$key] = $val; }
568nobodyさん:2009/02/27(金) 13:14:25 ID:laCA4GxD
utf8 + LFでfopenしたファイルに"(ダブルクウォテーション)を
fwriteすると、なぜか「\"」とバックスラッシュが入ってしまいます。
なぜでしょうか?
569nobodyさん:2009/02/27(金) 13:32:22 ID:???
>>568
magic_quotes_runtimeの設定ははどうなっとるかのぉ
570nobodyさん:2009/02/27(金) 13:32:27 ID:???
>>567
array_valuesとか?
571nobodyさん:2009/02/27(金) 13:42:08 ID:???
>>569
原因magic_quotes_gpcでした。ありがとうございました。
572nobodyさん:2009/02/27(金) 13:42:09 ID:???
>>567
php4か5で意味が変わるからバージョンぐらい記入しようぜ
573nobodyさん:2009/02/27(金) 14:16:10 ID:???
>>567
array型を参照で受け取る時は、メソッドと代入する側両方が & をつけないとならない
逆に言えば何も修飾せずに代入するだけでコピーになる
$ref = &$hogeCls->refHoge(); // 参照
$copy = $hogeCls->refHoge(); // 値

http://www.php.net/manual/ja/language.references.php
574nobodyさん:2009/02/27(金) 15:39:39 ID:/lC62y00
IPアドレスが割り当てられてる全てのホスト名を取得する方法ってありますか?

例えば「61.195.146.164」と入力した場合、
「jp.php.net」「pobox.packetbusiness.com」などが返ってくるイメージです。

gethostbyaddr('61.194.146.164')だと
「pobox.packetbusiness.com」しか返って来ませんでした。
575nobodyさん:2009/02/27(金) 15:47:10 ID:???
日本語でおk
576nobodyさん:2009/02/27(金) 15:47:17 ID:???
>>574
それ、できたらすごい便利だよね。
おれのhostsもあいつのhostsも全部解決できるわけだろ?
577574:2009/02/27(金) 15:55:56 ID:/lC62y00
>>575
すみません、言い直します。

IPアドレスからホスト名を取得する方法が
gethostbyaddr以外にありますでしょうか?
578nobodyさん:2009/02/27(金) 16:25:38 ID:???
>>577
streamつかったり、systemを使えばできるだろうけど、結果は一緒だよ。
DNS理解してる?
579nobodyさん:2009/02/27(金) 16:37:25 ID:???
>>553
WebはPOSTに弱いよな。PHPに限らず。
580nobodyさん:2009/02/27(金) 16:42:32 ID:???
意味不明
581574:2009/02/27(金) 16:57:55 ID:???
>>578
逆引きが一意であることと、正引きが複数設定可能なことくらいです。

DNSサーバに「このIPアドレスに正引きされるホスト名を教えてくれ」っていう
問い合わせはできないってことでOKですか?
582nobodyさん:2009/02/27(金) 17:06:26 ID:???
>>581
どのDNSサーバーに問い合わせるつもり?
583nobodyさん:2009/02/27(金) 17:18:56 ID:???
gethostbyaddr('61.194.146.164')だと
「pobox.packetbusiness.com」しか返って来ませんでした。

あたりまえだろ
584nobodyさん:2009/02/27(金) 17:21:27 ID:???
ああ、つまりそのIPで取得してるドメインを全て返したいってことじゃね?
585nobodyさん:2009/02/27(金) 17:25:52 ID:???
>>581
おk
586574:2009/02/27(金) 18:26:24 ID:???
>>585
ありがとうございます、自分の間違えが分かりました。

>>584
はい、そのとおりです。
SPAMメールの処理周りでそのようなことが出来るかどうか
疑問に思ったので質問いたしました。

---
DNSの初歩レベルの質問になってしまい失礼しました。
ありがとうございました。
587nobodyさん:2009/02/27(金) 20:20:35 ID:0buNRA0u
オブジェクトの参照を切るにはどうすればいいんだ?
$obj2=$obj1;
だと$obj1の参照になってしまうらしい。
$obj2=clone $obj1;
ってやっても、参照が渡されてしまった。助けて欲しい。
588nobodyさん:2009/02/27(金) 20:29:50 ID:???
>>587
おまえ、それわざとだろ。
copy on writeは知ってるよな?
589nobodyさん:2009/02/27(金) 21:00:58 ID:???
>>587
PHPのバージョンによるので答えられません
バージョンを書きましょう
590nobodyさん:2009/02/27(金) 21:56:28 ID:kc9E5JKd
$txt=mb_convert_encoding('あいうえお','JIS','UTF-8');

$encoding[]=mb_detect_encoding($txt,'UTF-8,EUC-JP,SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'EUC-JP,SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'JIS,UTF-8');


print("<pre>");var_dump($txt,$encoding,mb_convert_encoding($txt,'UTF-8','JIS'));die();


↓こうなる
array(3) {
[0]=>
string(5) "UTF-8"
[1]=>
string(6) "EUC-JP"
[2]=>
string(4) "SJIS"
[3]=>
string(3) "JIS"
}
591nobodyさん:2009/02/27(金) 21:58:31 ID:???
ファイルはUTF-8(BOM付)で保存してます。

$txtをそおまま表示しようとすると$とか矢印みたいなのが混ざったような文字化けで表示され、
mb_convert_encoding($txt,'UTF-8','JIS')するときちんと元に戻ります。

4.4.9とXAMPPの5.2.8で確認。
これはどうすれば?
592590:2009/02/27(金) 22:00:28 ID:kc9E5JKd
場所間違った

あとvar_dumpの行間違えました。
var_dump($encoding)
です
593nobodyさん:2009/02/27(金) 22:09:50 ID:DvviDUUZ
PHP5の普及率ってどのくらいですかね?
594nobodyさん:2009/02/27(金) 23:03:28 ID:???
>>591
ID
595nobodyさん:2009/02/27(金) 23:43:16 ID:???
4は既にメンテナンスすらされなくなって半年近い。新規案件なら0だろ。
レガシーシステムも2年以内にはほぼ絶滅すると思う。

ttp://labs.cybozu.co.jp/blog/akky/archives/2008/12/php5-usage-stats.html
人口比だと2008年末時点で10%を割ってる。
596nobodyさん:2009/02/28(土) 02:50:55 ID:1Mc3y2O0
正規表現系の関数が糞重いことに気づきました。
正規表現ほど高度でない、
ある程度融通が利く文字列検索をしたいのですが(具体的には文字列から携帯絵文字を探す)
PHPで書くと、正規表現より遅かったり速かったりです。
Cで書かれていれば確実に正規表現より速くなるのではと思うのですが、
そういうextensionありますか?
597nobodyさん:2009/02/28(土) 02:54:37 ID:???
str_replaceでもかければ?
598nobodyさん:2009/02/28(土) 08:05:42 ID:???
正規表現使ったくらいで糞重くなるマシンならまずハード全取り替えだろ
599nobodyさん:2009/02/28(土) 09:48:19 ID:4FEE2no0
文字列を流し込むとパスワードの安全性の目安を返してくれる
ライブラリかサンプルコードとかってありますか?
600nobodyさん:2009/02/28(土) 10:04:08 ID:???
パスワードをググって結果が少なければOK
601nobodyさん:2009/02/28(土) 10:19:27 ID:???
どのようなパスワードが安全かどのようなパスワードが危険かを考えればOK
パスワードは4文字以上10文字以内にしてくださいということにして

4文字→低
5〜7文字→単一種類の文字(数字or小文字or大文字)での構成は低
2種の文字しか混ざってない場合も低 3種の文字が混ざってる場合は中
8〜10文字→単一種類または2種類の文字での構成は中
3種の文字が混ざってる場合は高
例外として
記号などの特殊文字が混ざってる場合は5文字からでも高
全て同じ文字だと10文字でも低

とまぁこんな仕様を考えて実装すればいいんじゃないでしょうか
602nobodyさん:2009/02/28(土) 10:27:37 ID:???
603nobodyさん:2009/02/28(土) 10:35:26 ID:???
>>602
こんな関数あるのかーと思ったが辞書用意しないといかんのね
a
aa
aaa
aaaa
b
bb
bbb
bbbb
こんなん用意してたらキリがないよな
604nobodyさん:2009/02/28(土) 10:36:33 ID:???
テキストファイルだけをアップロードできるphpのアップローダを設置しようと思い
フリーで配布されているこちらのアップローダを見つけました。
ttp://php.eweb-design.com/1502_up.html

遣ってみたところとてもシンプルで気に入ったのですがphpに関しては
素人で分からないことだらけです。
そこで質問なのですが、アップロードできるファイルを .txt だけに限定する方法
を教えていただけないでしょうか?
それと容量オーバーのときだけに表示されるコメントも付けていただければ幸いです。
現在は1Mまでの制限でそれを超えると「アップロード失敗」とだけ表示されるようです。
次レスにソース部分を明記します。よろしくお願いします。
605nobodyさん:2009/02/28(土) 10:39:19 ID:???
$updir = "./up/";
?>
<?php htmlHeader(); ?>アップロード結果<BR><BR>
<TABLE border="0" width="350" cellspacing="1" cellpadding="3" bgcolor="#999999">
<TR><TD>ファイル名</TD><TD>サイズ</TD><TD>タイプ</TD></TR>
<?php
for($i=0;$i<sizeof($_FILES['fl']['name']);$i++) {
if($_FILES['fl']['name'][$i]=="") continue;
if(file_exists($updir.mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"))==TRUE && $_POST['frb']=="true") {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">上書きできません</FONT></TD></TR>
<?php
} elseif(!is_uploaded_file($_FILES['fl']['tmp_name'][$i])) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">アップロード失敗</FONT></TD></TR>
<?php
} else {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>
<?php
move_uploaded_file($_FILES['fl']['tmp_name'][$i],$updir.mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"));}
}
?>
</TABLE><BR>

<?php htmlFooter(); ?>

<?php function htmlHeader() { ?>
606nobodyさん:2009/02/28(土) 10:52:03 ID:tCRdHOmU
>>604-605ですがIDを出し忘れていました。申し訳ありません。
607nobodyさん:2009/02/28(土) 10:52:36 ID:4FEE2no0
>>601,602,603

自力で作ってみます
ありがとうございましたー!
608nobodyさん:2009/02/28(土) 10:54:20 ID:???
>>605
} else {
の上に下記のように挿入



} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">拡張子が.txt以外はアップロードできません</FONT></TD></TR>
<?php
} else {
609nobodyさん:2009/02/28(土) 10:54:41 ID:???
>>599
PHPじゃなくJavaScriptになるが
Extの拡張ライブラリにPasswordMeterってのがあってそれが便利だぞ
http://testcases.pagebakers.com/PasswordMeter/
610nobodyさん:2009/02/28(土) 11:00:43 ID:???
拡張子が.txtってだけでテキストファイル扱いするのかよwwwwwwwwwww
611nobodyさん:2009/02/28(土) 11:11:33 ID:tCRdHOmU
>>608
出来ました!ありがとうございます!

もうひとつだけよろしいでしょうか?
>>605のソースだと何バイトのファイルであったかアップロード後に表示されるのですが、
何行あるのかを表示させる場合はどのようにしたらよいのでしょうか?
つまり、アップロード後にファイル名、バイト数、行数を表示したいのです。
よろしくお願いします。
612nobodyさん:2009/02/28(土) 11:22:21 ID:???
>>611
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>

<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print(count(file($_FILES['fl']['tmp_name'][$i]))); ?>行</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>

未検証だけどたぶん動く
613nobodyさん:2009/02/28(土) 11:23:55 ID:O2VO0P3W
画像ファイルpng、gif、jpg(jpeg)の3つだけアップロードを許可するようにしたいのですが
拡張子をチェックはします
それとバイナリを見て判断したいと思うのですが、これは完ぺきなチェックができないみたいで困ってます。
どのようなチェックを取り入れたらよろしいでしょうか?
614nobodyさん:2009/02/28(土) 11:41:35 ID:???
>>613
>>385あたりから読んでいってみ
615nobodyさん:2009/02/28(土) 11:49:31 ID:l4IqP0fM
pear::authとかって
まだ使われてるの?
616nobodyさん:2009/02/28(土) 12:11:52 ID:tCRdHOmU
>>612
本当にありがとうございました。きちんとカウントされてました。


ところで、さきほどの>>608がアップできたと思ったら
テキストでもhtmlでもアップできないんです・・・。
} else { の上にそのまま貼り付けたのですが、、、

<TR bgcolor="#eeeeee">
<TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">アップロード失敗</FONT></TD>
</TR>
<?php
} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">拡張子が.txt以外はアップロードできません</FONT></TD></TR>
<?php
} else {
?>
617nobodyさん:2009/02/28(土) 12:16:06 ID:???
>>610
何が言いたいんだ?
バイナリデータじゃあるまいし
618nobodyさん:2009/02/28(土) 12:17:50 ID:???
619nobodyさん:2009/02/28(土) 12:17:57 ID:???
>>616
あれ、一時ファイルってファイル名変わっちゃうんだっけ?これでどう?

} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {

} elseif( substr( $_FILES['fl']['name'][$i], strlen($_FILES['fl']['name'][$i])-4, 4 ) != ".txt" ) {

.htmlがアップできないのはおまえさんの仕様だぞ
620nobodyさん:2009/02/28(土) 12:18:10 ID:???
>>616
少しは自分で理解しようとしろよ
621nobodyさん:2009/02/28(土) 12:27:20 ID:tCRdHOmU
>>619
ありがとうございました。バッチリでした!
622nobodyさん:2009/02/28(土) 13:06:03 ID:B+Uhif0K
セキュリティに関してですが
利用者が入力するところはなし、強いて言えばリンクが○○.php?a=○&b=○の形なのでそこをいじることはできますが、
値は1桁の数字のみ通るようにしてかつそれを直接クエリに使うわけではなくswichでWHERE句用の値を選ぶようにしています。
検索もなし、セッションやクッキーは使いません。
DBはSQLiteなので.htaccessで見えないように。
エラー表示も.htaccessでphp_flag display_errors Offに。
こんな感じにしたとして、鯖自体がハッキングされたとかはのぞいてphp(html)やDBの改竄は行われる可能性はありますか?
623nobodyさん:2009/02/28(土) 13:25:32 ID:iUikJcgx
教えてください。ソケットをあけて、いま届いているデータをすべて受信するにはどうすれば良いのでしょうか。
$buf=socket_read($out,2048);
で読むことはできるのですが、データが2048byteに足りていないとここで処理がブロックされてしまい、
データが2048byteの倍数でないと必ず最後でとまってしまいます。
長さを1にすれば数万回の無限ループみたいになって処理が遅いし、
長さはともかくいま届いているデータを全て読む、ブロックしない読み込み方法が見当たらなかったです。

socket_recvというメソッドもあるみたいですが、ドキュメントもまだないし
これがない時代も当然できていたはずのことなので、きっとreadで何とかする方法があるんだと思いますが…。
624nobodyさん:2009/02/28(土) 13:35:50 ID:???
>622
悪魔の質問だな。
脆弱性の存在を示す事は可能だが、脆弱性が存在しない事を証明するのは至難の業。
セキュリティ対策の多くが「入力時点で全ての値を検証」「出力時点で全てエスケープ」のようにシステマチックなのはその辺に理由がある。

書かれている部分は安全に思える。ツボも押さえているし、他の部分で変な事をしない限り問題ないだろう。
強いて言うなら「入力する場所はなし」という言い方が若干不安かな。
hiddenだろうがなんだろうが全ての値は自由に改竄される、という前提でコーディングする必要がある。
625nobodyさん:2009/02/28(土) 13:47:32 ID:Ho2Fi0s+
マジな質問なんですが自宅サーバーでPHP動かしてます。
今まではサーバーとルータだけでやっていたのですが今回ハブを使いPCをもう一台LAN内に追加しました。
そしたら自分のサイトの表示が極めて遅くなり
ページを切り替える毎に3秒位かかります。
LAN内だけかと思いネットカフェで試しましたがやっぱり遅かったのです。

ちなみにサーバーからLANケーブルを抜くと今まで通り高速で表示されます。
そのため初めはLANの設定の問題だと思ったのですが
同じサーバー内のPHPを使ったページでも速いページと遅いページがある事に気がつきました。
しかし遅いページがなぜこれ程遅いのかが色々いじってみたのですが分かりません。
おそらくPHPの使用関数なんかの問題だと思うのですが。
何で?知ってるやつ教えてや。
逆引きとかはしてないです。
626nobodyさん:2009/02/28(土) 14:06:43 ID:???
PHP関係ねーし
627nobodyさん:2009/02/28(土) 14:09:33 ID:B+Uhif0K
>>624
ありがとうございます。
>強いて言うなら「入力する場所はなし」という言い方が若干不安かな。
付け加えるとjavascriptも使わないのでプルダウンで選択とかもありません。
ほんとにリンクをクリックしていくぐらいです。
ただまあ思い当たるところは列挙しましたが洩れもあるかもしれませんし、
どちらにしろhtmlspecialchars他一応の処理はしています。
完全にとはいえないが大まかに改竄の入り口は認識できてるとみていいもんでしょうか。
628nobodyさん:2009/02/28(土) 14:27:23 ID:???
>>622
数値1桁をチェックならまったく問題ない。エスケープ処理もいらない
629nobodyさん:2009/02/28(土) 14:46:51 ID:AWhVh/M4
>>614,>>618
ありがとうございます
getimagesizeでは不十分と認識しておりますので他にチェックする方法をご存知でしたらご教示おねがいします
630613:2009/02/28(土) 14:47:33 ID:8fTqh/0P
書き込み毎にIDが変わってしまうのですいません
631nobodyさん:2009/02/28(土) 15:04:01 ID:???
>>629
いや、getimagesizeでいいんだよ
それに加えて、画像の保存先ではスクリプトの実行ができないようにすればおk
632nobodyさん:2009/02/28(土) 15:29:50 ID:???
>>623
無限ループしてるならsocket_read()の終了条件を間違えてないか疑うな
晒してみ
633nobodyさん:2009/02/28(土) 15:39:05 ID:???
>>631
getimagesizeは信用できるものじゃない
無知お疲れ
634nobodyさん:2009/02/28(土) 16:05:48 ID:???
>>627
哲学的な言い方をすると、
不安に思うようなら、脆弱性はあるかもしれないね。
他人に保証を求めるとしたら、それもまた脆弱性のひとつかもしれん。
セッションでもクッキーでも環境変数でも、それぞれがどんな形で渡ってくるか、
そして渡しているか、ブラウザの挙動はどうか、そういう理解度を深めていくしかないんじゃないか?
635nobodyさん:2009/02/28(土) 16:06:47 ID:???
>>633
何が信用できないの?
636nobodyさん:2009/02/28(土) 16:08:12 ID:???
>>633
ヘッダの一部しか見てない。jk
637nobodyさん:2009/02/28(土) 17:01:27 ID:???
まあ、実行権限を剥奪しておけば、考えられる最大の被害は「画像が表示されない」程度なわけだし、getimagesizeで問題ないだろ。
638nobodyさん:2009/02/28(土) 17:05:42 ID:???
>>637
きょうび、CMSのコミッターですらその程度の認識をしてたりするから困るよな。
実行権限をはく奪って、もともとPHPは読み込み権限で動くわけだし。
画像ファイルにスクリプトインジェクションされるってのをケアしないんだろうし。
639625:2009/02/28(土) 17:18:45 ID:Ho2Fi0s+
>>626
いや、最初はそう思ったのですがどうやらPHPの関数により速度が遅くなってるようなんです。
というのもPHPの関数が少ないページは高速に表示するからです。

ただ、何の関数が遅い原因なのかが割り出せません。
何なのか分かる奴よろしく。
640nobodyさん:2009/02/28(土) 17:19:10 ID:???
641nobodyさん:2009/02/28(土) 18:04:55 ID:???
>639
つ xdebug.profiler_enable = 1
あと、Windows機があるならWinCacheGrid
642nobodyさん:2009/02/28(土) 18:05:36 ID:???
Grindだった
643nobodyさん:2009/02/28(土) 19:42:43 ID:Lzy3hD4E
imagecreate使って画像生成したんだけれど
画像のファイルサイズが0kb になって 保存できない・・・orz

ファイル名指定
header("Content-Disposition: attachement; filename=foo.jpg");
をつけても0kb・・・

どうしたらいいんだぁ・・・
644nobodyさん:2009/02/28(土) 20:27:57 ID:???
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>635-636
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
645nobodyさん:2009/02/28(土) 22:16:18 ID:???
>>644
どうみても、636は正しいと思うんだが
646nobodyさん:2009/02/28(土) 22:32:57 ID:???
ヘッダの一部しか見てないって、それ以外にヘッダで判別できるところあんの?
拡張子は別にして
647nobodyさん:2009/02/28(土) 22:35:26 ID:???
ヘッダーの一部しか見てないのは事実だ。
そこから、
> それ以外にヘッダで判別できるところあんの?
っていう展開が意味不明
648nobodyさん:2009/02/28(土) 22:48:34 ID:???
>>647
つまり、「ヘッダの、一部しか見てない」なのか「ヘッダの一部しか、見てない」なのかってことね
649nobodyさん:2009/02/28(土) 22:49:44 ID:???
何をいってるんだw
650nobodyさん:2009/02/28(土) 22:54:24 ID:???
ごめん>>638は分かりにくかったわ
ヘッダの一部しか見てない って、他にも判別できる部分があるようにとれない?

ヘッダの(他にも判別するところはあるけど)一部しか見てない なのか
ヘッダの一部(で)しか見てない なのかってことね
651nobodyさん:2009/02/28(土) 22:57:46 ID:???
>>650もなんか分かりにくいわ
寝てくる
652nobodyさん:2009/02/28(土) 22:58:56 ID:???
>>650-651
だいたい、そのポイント先、>>638じゃなくて>>648だろ
653nobodyさん:2009/03/01(日) 00:14:40 ID:???
とりあえずgetimagesizeは完ぺきじゃないってこと
>>640をよく読め
654nobodyさん:2009/03/01(日) 00:31:01 ID:???
>このような攻撃は、アップロードするファイルのファイル名をそのまま(この例では、.php)にしているサイトでのみ有効となるのだが、そのようなサイトは実際多く存在する。

これで回避できるとも読めるわけだが、どうなんだろう。
655nobodyさん:2009/03/01(日) 00:31:30 ID:???
635と636は自分でバイナリエディタでも開いて画像にスクリプト埋め込んでこい
656nobodyさん:2009/03/01(日) 00:32:37 ID:???
>>654
日本語でおk
657nobodyさん:2009/03/01(日) 00:36:08 ID:???
>>655
ここの連中じゃ画像に埋め込むこともできなそうだなw
658nobodyさん:2009/03/01(日) 01:09:42 ID:???
そもそもファイルを区別する必要性がわからねえ
最終的にブラウザで表示できるんだから何でもいいだろ
659nobodyさん:2009/03/01(日) 01:18:56 ID:???
画像に埋め込んだスクリプトが反応するような糞ブラウザはIEぐらいだろ
660nobodyさん:2009/03/01(日) 02:35:03 ID:eUPI6W90
mb_splitで正規表現にデミリタいらないのってバグですか?
661nobodyさん:2009/03/01(日) 03:05:47 ID:ircjQ+OX
パーミッションの問題なんだけど、
txtファイルや、htmlファイルは、
ユーザーにrを渡さないと
ブラウザで閲覧したときに見れないんだけど、
.phpファイルは、なぜか
ユーザーに渡す権限が0でも
ブラウザでアクセスしたときに、
動作してしまうんだけど、これってなんで?
662nobodyさん:2009/03/01(日) 03:43:41 ID:???
>>661
module版かcgi版かで若干答えが変わるかなぁ。。

ユーザって誰のこと??
663nobodyさん:2009/03/01(日) 03:47:49 ID:ircjQ+OX
>>662
オーナー | グループ | 末端ユーザー

こういう概念です
664nobodyさん:2009/03/01(日) 03:50:25 ID:ircjQ+OX
>>662
「CGIに関しては純粋にSuExecでの動作」

「CGI版をラッパーを使用し所有者の権限にて動作させる」

と書いてあります。
665nobodyさん:2009/03/01(日) 04:31:12 ID:???
>>664
答えが書いてあるよ〜。

Webサーバの一番基本的な動きは分かってるかな?

ブラウザが「このファイルくれ!」ってWebサーバにいうと
Webサーバは自分の中から探して、読みこんで、「処理して」、結果をブラウザに返す。
このときWebサーバもユーザとして動いてる。

こんだけ。
666nobodyさん:2009/03/01(日) 06:55:07 ID:ircjQ+OX
pear::authのサンプルコードで、
MySQLの例ばっかりなのだが、
これってSQLiteでもできるんだよね?

コードはどう書けばいいのかな?
特にDSNのあたり。
http://oshiete1.goo.ne.jp/qa3008843.html
このサンプルで、DSNをSQLiteに変更したものを
書いてもらえますか?
667nobodyさん:2009/03/01(日) 06:59:03 ID:ircjQ+OX
それから認証の実装で
pear::authを使うことの是非についても
意見を述べてもらえますか?

pearのページ見たら、認証のカテゴリだけで7つも
モジュールあるじゃないですか。
668nobodyさん:2009/03/01(日) 07:01:29 ID:???
>>666
ぐぐればすぐ見つかるよ〜
669nobodyさん:2009/03/01(日) 11:45:18 ID:???
どうやら
質問

の人な気がするぜ
670nobodyさん:2009/03/01(日) 13:13:02 ID:???
そんなの見りゃわかるよ
671nobodyさん:2009/03/01(日) 13:42:43 ID:???
------------ここまで自演でした
672nobodyさん:2009/03/01(日) 14:46:48 ID:lFCp+aHu
PHPの書き方で<?=$msg?>のような書き方が可能/不可能に設定できる項目教えてください
(ググろうにも「<?=?>」のようなワードでは検索できなくて・・・)
673nobodyさん:2009/03/01(日) 14:50:54 ID:lFCp+aHu
short_open_tagでした、事故解決しました
674nobodyさん:2009/03/01(日) 17:35:53 ID:Jolk/1HK
phpを使いテキストの各行にある文字列(例えばここでは"hogehoge")
が含まれているかどうかを調べるにはどのようにするのがよいのでしょうか?
675nobodyさん:2009/03/01(日) 17:41:35 ID:???
file
foreach
preg_match
676nobodyさん:2009/03/01(日) 17:43:35 ID:???
hogehogeがあるかどうかだけならpreg_matchはおおげさだな
strstrあたりでいいと思う
677nobodyさん:2009/03/01(日) 17:43:53 ID:???
preg_matchがあればわざわざfileとforeachを組み合さなくてもできます
678nobodyさん:2009/03/01(日) 17:46:03 ID:Jolk/1HK
どっちなんだろう・・・
679nobodyさん:2009/03/01(日) 17:50:35 ID:???
>>678
史ね
少しは与えられた材料で自分で考えろ
680nobodyさん:2009/03/01(日) 17:51:32 ID:???
文字列探索といったら正規表現しか知らない奴って何なの?バカなの?
681nobodyさん:2009/03/01(日) 18:02:38 ID:qwqgUI7e
>>677の言ってることはパターン修飾子か?

$list = file("hoge.txt");
for ($i = 0; $i < count($list); $i++) {
if (strpos($list[$i]), "hogehoge") {
echo $i . "行目にhogehogeが見つかりました<br>\n";
}
}

これと同じことをできるのなら俺もぜひ教えてもらいたい
682681:2009/03/01(日) 18:04:25 ID:???
あ、ごめん
$i行目じゃなくて$i+1か
683nobodyさん:2009/03/01(日) 18:20:01 ID:???
if (strpos($list[$i]), "hogehoge") {
なんじゃこりゃ?
684nobodyさん:2009/03/01(日) 18:33:38 ID:???
>>681
おれが言ってるpreg_matchがでてこないんだがアンカーミスかね
685681:2009/03/01(日) 18:38:49 ID:???
$list = file("hoge.txt");
for ($i = 0; $i < count($list); $i++) {
if (preg_match("/hogehoge/", $list[$i])) {
echo $i+1 . "行目にhogehogeが見つかりました<br>\n";
}
}

それじゃこれで
686nobodyさん:2009/03/01(日) 18:41:12 ID:???
>>685
動作には問題ないけど
for内にcount($list)を入れると、ループ毎にcountが実行されるので、
$cnt = count($list);

$i < $cnt

みたいにするといいよー
687nobodyさん:2009/03/01(日) 19:29:13 ID:???
>>685
preg_matchじゃだめだった
無駄にfileとforeachしなくてもpreg_match_all使えば一行で住む
688nobodyさん:2009/03/01(日) 19:42:54 ID:???
何行目に現れるかもわかる?
689nobodyさん:2009/03/01(日) 20:20:12 ID:???
わかる
690nobodyさん:2009/03/01(日) 22:47:16 ID:Jolk/1HK
perlあがりでどうもphpはよく分からんのだが
datファイル(数字10桁)かどうかを調べるにはどうすりゃいいの?
これだとダメポ。

$datfile = 1234567890.dat;
$number = str_replace(".dat", "", $datfile);
if ($number != \d{10}){
 print "2chのdatじゃない";
} else {
 print "おk";
}
691nobodyさん:2009/03/01(日) 22:52:53 ID:???
preg_match
692nobodyさん:2009/03/01(日) 22:54:09 ID:???
>>690
$datfile = "1234567890.dat";
if (preg_match("/^\d{10}\.dat$/", $datfile)) echo "おk";
else "2chのdatじゃない";
693nobodyさん:2009/03/01(日) 22:59:06 ID:Jolk/1HK
print Thx
694nobodyさん:2009/03/01(日) 23:04:31 ID:???
正規表現(笑)
695nobodyさん:2009/03/01(日) 23:16:30 ID:A3j42u8W
まとめてファイルをアップロードする仕組みを作りたいのですが、
PHPにZIPを解凍する関数ってあるのでしょうか?

やっぱり、フォームのfile要素をいくつも用意して
1つずつ選択して送信する方法しかないのでしょうか?
696nobodyさん:2009/03/01(日) 23:21:54 ID:???
peclとかpearとか探せば色々あるよ
zipだけでもArchiveTarとかArchiveZipとかpecl zipとか色々
697nobodyさん:2009/03/01(日) 23:26:26 ID:???
標準クラスであるだろうが
698nobodyさん:2009/03/01(日) 23:27:29 ID:???
ArchiveTarは違ったわ
699nobodyさん:2009/03/01(日) 23:29:07 ID:???
>>697
それってzip関数のことでしょ?
それはpecl
700nobodyさん:2009/03/01(日) 23:38:13 ID:???
標準であるじゃん
暗号化ZIPには対応してないようだけど
701nobodyさん:2009/03/01(日) 23:40:37 ID:???
そうだっけ?すまん
702nobodyさん:2009/03/01(日) 23:50:07 ID:???
ID:Jolk/1HK
回答もらったらお礼ぐらい書けよksg
703nobodyさん:2009/03/02(月) 00:02:07 ID:???
>>693にあるやん
704nobodyさん:2009/03/02(月) 00:07:04 ID:???
ID:Jolk/1HK=>>703
705703:2009/03/02(月) 00:14:22 ID:???
>>704
いんや、>>692なんだけどね
別にお礼を期待して回答しているわけではないから、そんなのはどうだっていいよ
706nobodyさん:2009/03/02(月) 00:56:54 ID:???
どうだっていいなら何で書くの?
707nobodyさん:2009/03/02(月) 06:17:58 ID:???
アマゾンの文章を取ってきて、
一部の文を変更するプロキシみたいなの
作りたいんだけど、できる?

「この商品を買った人はこんな商品も買っています」

              ↓これを

「この商品を買ってしまったかわいそうな人はこんな商品も買っています」

みたいに変更して表示したいんだけど。

チラ見だと気がつかないって言う。
よーく見ると違いがわかるっていう。
708nobodyさん:2009/03/02(月) 06:18:54 ID:???
>>1
709nobodyさん:2009/03/02(月) 06:36:54 ID:xA87Qrbu
指定したディレクトリ内から、
指定したMD5(またはSHA-1)の値を持つファイルを取得したいのですが、
なにかよい方法はないでしょうか?

やはり、一度全部取得して、
ひとつひとつ確認する必要があるのでしょうか?

よろしくお願いします。
710nobodyさん:2009/03/02(月) 08:01:04 ID:Kxwrby6q
$files = scandir("./doc");
$i = 2;
while($files[$i] != null ):
$files_end = $i;
$i++;
endwhile;

と、docフォルダに入っているファイル数をしらべるスクリプトですが、
while($files[$i] != null ):
の行で
Notice: Undefined offset: 5
と、Noticeが出て来ます。
この、Noticeを消すにはどうしたらいいでしょうか?
711nobodyさん:2009/03/02(月) 08:04:40 ID:???
>>707
フィッシング詐欺はやめな
712nobodyさん:2009/03/02(月) 08:05:07 ID:???
classの使いどころがさっぱりわからん
使えたらかっこいいんだろうなと思って
使いたい使いたいと思ってるけど結局使わないまま終わってしまう
713nobodyさん:2009/03/02(月) 08:08:31 ID:???
>>712
すごい、カンタンなところからはじめれば?
714nobodyさん:2009/03/02(月) 08:10:21 ID:???
>>712
変数名をclassにすればいいよ。
$class1 $class2 $class3
715nobodyさん:2009/03/02(月) 10:10:58 ID:???
>>710
OUT => while($files[$i] != null ):

IN => while( isset($files[$i]) ):
716nobodyさん:2009/03/02(月) 10:18:29 ID:???
>>712
無理して使わなくていいよ
所詮プログラミング手法の1つに過ぎない
世の中には全てオブジェクトにしないと扱うことができない
言語も存在するがPHPはそうではない
使いどころを意識してるうちは概念も理解できないはずだ
オブジェクト指向が何かとかは考えないで
まずはオブジェクトにしないとプログラムが動かないと思ってはじめてみるといい
717nobodyさん:2009/03/02(月) 12:30:23 ID:???
クラスを使う利点を教えてください
718nobodyさん:2009/03/02(月) 12:39:55 ID:???
人数が多い場合クラス分けしないと学年がばらばらごちゃごちゃになるじゃん
719nobodyさん:2009/03/02(月) 13:33:46 ID:qotKuiB9
php5で動作するクラスを勉強で作ってます

class hello
{
function asa(){$word="おはよう";return $word;}
function hiru(){$word="こんにちは";return $word;}
function yoru(){$word="こんばんは";return $word;}
}

これを呼び出して挨拶を表示するときにこのように書きました
$obj=new hello;
echo $obj->asa;

クラスの使い方としてこのような用途で使用するのは正しいでしょうか?
720nobodyさん:2009/03/02(月) 13:47:22 ID:yL43OBtl
MVCでアプリケーションを組もうとしています。

やはり、どうしてもクラス数が膨大になり、1ファイル1クラスにするので、
読み込むファイル数も膨大になってくるのですが、余程のことがない限り速度は気にするほど変わらないと考えても構いませんか?
721nobodyさん:2009/03/02(月) 13:56:03 ID:???
おk
722nobodyさん:2009/03/02(月) 13:56:47 ID:???
ウェブの場合クラス分けしてもそんなに膨大にはならんと思うけどな
723nobodyさん:2009/03/02(月) 14:02:29 ID:Kxwrby6q
>>715
おお、ありがとうございます。 noticeが消えました!!
724nobodyさん:2009/03/02(月) 14:03:01 ID:???
>>719
class hello {
function greeting(){ return $this->word; }
}
class asa extends hello {
var $word = "おはよう";
}
class hiru extends hello {
var $word = "こんにちは";
}

$obj = new asa(); echo $obj->greeting();
$obj = new hiru(); echo $obj->greeting();

こういうほうがより現実的。挙動を変えたければgreetingだけをいじればよいので。
725nobodyさん:2009/03/02(月) 14:13:16 ID:???
$objを何度も作るのってアリなの?
726nobodyさん:2009/03/02(月) 14:29:02 ID:Be8+CZVl
PDOでbindParamするときに、どうしても
PDO::PARAM_STRとPDO::PARAM_INTを同じbindで使いたくて
PDO::PARAM_STR|PDO::PARAM_INTてやってみたのですが、
こちらでエスケープしたエラーになってしまいます。
int、str片方づつならデータが取得できるのですが・・
どのような手段でできますでしょうか
よろしくお願いします
727nobodyさん:2009/03/02(月) 14:53:55 ID:yL43OBtl
>>721-722
勉強がてらのものなので、クラス分けなどが、まだうまくできてないのかもしれません。

ありがとうございました
728nobodyさん:2009/03/02(月) 14:55:08 ID:v7Ja9zye
フォーム内のラジオボタンがあります
<form>
<input type="radio" name="s" value="0" />ページ1
<input type="radio" name="s" value="1" />ページ2
<input type="radio" name="s" value="2" />ページ3
</form>

http://www.example/?s=1でアクセスしてきたとき、ページ2のラジオボタンを選択済みにさせたいのですが
どのように書けばよろしいのでしょうか?
729nobodyさん:2009/03/02(月) 15:00:03 ID:???
if(sが1だったら){ echo 選択済み }
730nobodyさん:2009/03/02(月) 15:00:07 ID:???
<input type="radio" name="s" value="0" <?if($_REQUEST["s"]=="0"){ echo "checked"; }?> />ページ1
<input type="radio" name="s" value="1" <?if($_REQUEST["s"]=="1"){ echo "checked"; }?> />ページ2
<input type="radio" name="s" value="2" <?if($_REQUEST["s"]=="2"){ echo "checked"; }?> />ページ3
731nobodyさん:2009/03/02(月) 15:02:03 ID:v7Ja9zye
やっぱりそれしかないですよね、わかりました
ありがとうございます
732nobodyさん:2009/03/02(月) 15:13:43 ID:Hva8cjMK
mb_convert_encodingでUTF-8の文字をSJISに変換した時、
SJISに対応する文字がない時はU+XXXXという文字列に変換されますが、
このXXXXはどういう法則に従って算出されているのでしょうか?
733nobodyさん:2009/03/02(月) 15:28:28 ID:???
>>731
ライブラリやらFW使えば楽
>>732
まんま文字コードかと
734nobodyさん:2009/03/02(月) 16:54:20 ID:v7Ja9zye
フレームワークで使われるキャッシュファイルについて質問です
キャッシュの作り方は以下のやり方でよろしいでしょうか?

キャッシュファイルがなかったら→キャッシュファイル作成→出力
キャッシュファイルがあったら→キャッシュファイル読み込み・出力
735nobodyさん:2009/03/02(月) 19:33:12 ID:???
>>726
PDO::PARAM_STR|PDO::PARAM_INTなんて指定が仮に出来たとして
どんなSQL文になるのが望みなんだ

>>734
ok
後はキャッシュの有効期限やキャッシュの保存手段を設定できるようにしたりと
使いやすいようご自由に
736nobodyさん:2009/03/03(火) 00:38:28 ID:ttnGHap+
KJ、田中ナルミ両氏による『〜スーパーサンプル 活用編 第2版』を見て、ADODBを使ってみました。
サンプルを真似しながら、何とか自分なりに扱えるようにはなったのですが、
見たことの無い記述法に戸惑ってます。

$DB = NewADOConnection($sql_type);
$DB->PConnect($server, $user, $password, $dbname);
$result = $DB->Execute('SELECT * FROM blog_articles');
echo "<pre>";
print_r($result->GetArray());
echo "</pre>";

↑このコードの中の、
$result->GetArray();
の部分です。

メソッド(変数);
とかだったら普通に見慣れた形なのですが、
変数->メソッド();
となっているようで、よくわかりません。

これはどういう記述なのでしょうか?
737nobodyさん:2009/03/03(火) 00:42:29 ID:???
クラスメソッドの呼び出し
その本に書いてないの?
738nobodyさん:2009/03/03(火) 01:07:31 ID:???
$DB->PConnectや$DB->Executeには疑問抱かないのか?
739nobodyさん:2009/03/03(火) 01:11:49 ID:???
$DB = NewADOConnection($sql_type);
$DB->PConnect($server, $user, $password, $dbname);
も一緒じゃんw

var_dump($result);してみ
$resultが何なのか分かるから
740736:2009/03/03(火) 02:10:24 ID:ttnGHap+
$DBもそうですね…。
自分の知っているパターンと勘違いしていたようです。

クラススメソッドの呼び出しというと、例えば
// インスタンスの作成
$obj = new MyDBClass();
// メソッドの呼び出し
$obj->ConnectDB();
// プロパティの呼び出し
var_dump($obj->tables);

みたいなのはわかります。

ですが、ADODBのサンプルコード(>>736のような)を見ても、
newを使ってのインスタンスの作成をしているようには見えません。

それにも関わらずアロー演算子を使うのは、どのような場合なのでしょうか?
741736:2009/03/03(火) 02:15:34 ID:ttnGHap+
$DBをprint_rしてみると

ADODB_mysql Object
(
    [databaseType] => mysql
    [dataProvider] => mysql
    // 中略
)

というようになってました。

普通の配列だと

Array
(
    [0] => 20081231
    [1] => 20090101
)

のようになると思うんですが、変数の型自体が違うようです。
742nobodyさん:2009/03/03(火) 02:26:02 ID:???
>>740
NewADOConnection() は関数
関数内でオブジェクトを生成して返していると読んでくれ
743nobodyさん:2009/03/03(火) 02:33:15 ID:???
>>740-741
配列は関係ない

class Ichiro{
 function getResult(){ return "5タコ"; }
}
class Samurai{
 function getCaptain(){ return new Ichiro(); }
}
$obj = new Samurai();
$obj2 = $obj->getCaptain();
echo $obj2->getResult();   ←これ

↑こんなんと同じ。つまり
$result = $DB->Execute('SELECT * FROM blog_articles');
でインスタンス(newされたクラス)が返ってきてるんだよ
744736:2009/03/03(火) 02:46:22 ID:ttnGHap+
>>742,743
ありがとうございます!
自分の理解力の無さから、まだ飲み込めてはいませんが、
何となく道筋は見えた気がします。

ゆっくり理解していきたいと思います。
745nobodyさん:2009/03/03(火) 02:53:56 ID:???
いやこれくらいさっさと理解して次のステップ行けよ
746nobodyさん:2009/03/03(火) 10:47:55 ID:???
今気づいたんだけどPHPってセミコロンだけ書いてもパースエラーにならないんだね
747nobodyさん:2009/03/03(火) 10:53:02 ID:???
>>746
行の終わりって意味だからな
748nobodyさん:2009/03/03(火) 10:58:02 ID:???
rubyもpythonも;なんていらないのに
phpは旧世代の遺物だよな
749nobodyさん:2009/03/03(火) 11:15:43 ID:???
それ1行で終わるときだけじゃん
750nobodyさん:2009/03/03(火) 11:36:15 ID:???
インデントがなくなったらエラーになる言語なんか使わねーよ
751nobodyさん:2009/03/03(火) 11:38:44 ID:e2rK5fJ7
ttp://www.next-space.jp/
で、れっつPHPの写メール掲示板を設置すると500エラーになります。
他の鯖だと大丈夫なんですが、この場合php.iniの設定を変えないといけないのでしょうか?
752nobodyさん:2009/03/03(火) 11:41:40 ID:EqwXxIO6
>>751
パーミッションの問題かと思われ
どこの鯖かわからんが、スクリプトに実行権限与えてる?


話変わるけど、PHPのswitchって数値以外にも文字列で判別できるけど皆使ってる?
Javaで数値での判別に慣れてしまったせいか、PHPのswitchって何か違和感あるなぁ
753nobodyさん:2009/03/03(火) 11:44:42 ID:???
Javaは文字列で判別できないと?
754nobodyさん:2009/03/03(火) 11:46:36 ID:EqwXxIO6
>>753
今ググったらできるのか、知らなかった
Javaの改造してたとき、switchで必ず数値ばかりだったからそういう仕様なのかと思ってた
755751:2009/03/03(火) 11:47:00 ID:e2rK5fJ7
>>752
パーミッションも正しいと思うんですが、いろいろ変えてみてもエラーのままです。
756nobodyさん:2009/03/03(火) 11:47:04 ID:???
switchの第二引数に厳格に判断するモード(===)の設定があればよかった
757nobodyさん:2009/03/03(火) 11:59:09 ID:???
>>756
switch ($hoge) {
case "1":
break;
}

switch (true) {
case ($hoge === "1"):
break;
}
758751:2009/03/03(火) 12:04:16 ID:???
事故解決しました
759709:2009/03/03(火) 12:17:13 ID:sEyF02be
>>709 なのですが
どなたかお願いできないでしょうか?

ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
何かいいアイデアはないでしょうか?
760nobodyさん:2009/03/03(火) 12:19:10 ID:???
方法1:指定したディレクトリ内のファイルを読み込んで値があるかチェック
方法2:値の入ったファイルを作成した時に、リストに書き込む

以上
あとはない
761709:2009/03/03(火) 12:26:35 ID:sEyF02be
やはり、MD5などをキーにして検索することはできないようですね。

ファイル名とMD5の値をデータベースに格納(方法2?)して
管理することにします。

ありがとうございました。
762nobodyさん:2009/03/03(火) 12:28:02 ID:???
ファイル名をmd5にすりゃ簡単じゃん
763nobodyさん:2009/03/03(火) 12:28:24 ID:???
まあ方法3もあるけど拡張しないといけないから書くのやめとく
764nobodyさん:2009/03/03(火) 12:29:04 ID:???
>>762
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
765nobodyさん:2009/03/03(火) 12:55:24 ID:???
md5とMD5だから違うな
766nobodyさん:2009/03/03(火) 14:43:30 ID:qqtWuzTo
ここの[返信]が直リン禁止になってるけど
どうやって禁止にしているの?
ttp://nanapi.o0o0.jp/moemoe/
767nobodyさん:2009/03/03(火) 14:44:33 ID:???
リファラ
768nobodyさん:2009/03/03(火) 15:09:32 ID:???
リファラだけか?
769nobodyさん:2009/03/03(火) 15:12:50 ID:???
>>768
そうだよ
試してから言え
770766:2009/03/03(火) 15:19:28 ID:???
>>769
Irvineでリファラ使ってダウンしてみたが返信ページはダウンできないよ。
771nobodyさん:2009/03/03(火) 15:22:13 ID:???
スクリプト荒らし乙
772766:2009/03/03(火) 15:33:49 ID:???
スクリプト荒らしを防ぐためなんだろこれは?
だからそれを真似たいんだよ。
773709:2009/03/03(火) 15:46:24 ID:sEyF02be
連続して質問失礼します。

MySQLのカラムにPHPでserializeした配列を入れてあるとき、
たとえば、

array(
'id' => 1,
'username' => 'hogehoge',
'password' => 'fugafuga'
);

というような配列をシリアライズしたものがuserテーブルのdataカラムに入ってるとして、
dataのなかのusernameがxxxのものを取り出すといったことはできますでしょうか?
正規化しろ!というのはなしでお願いします。

スレ違いでしょうかね;;

よろしくお願いします。
774nobodyさん:2009/03/03(火) 16:01:26 ID:???
>>773
無理っすー
775nobodyさん:2009/03/03(火) 16:17:45 ID:tFVuo7P+
phpで指定された任意の外部URLを読み込み、それをコピーするって可能ですか?
例えばこのスレは
http://pc11.2ch.net/php/dat/1234958956.dat
で、これをそのままコピーし任意のフォルダに保存するということです。
776nobodyさん:2009/03/03(火) 16:18:48 ID:???
>>775
可能ですよ
●対応も普通になんとかなる
777nobodyさん:2009/03/03(火) 16:22:28 ID:???
>>773
なんでそんなことをしようとするのか分からん

>>775
User-Agentにmonazillaが含まれないと駄目じゃなかったけ?
778nobodyさん:2009/03/03(火) 17:53:07 ID:???
>>770
ブラウザじゃないから別の理由ではじかれたんじゃない?
779nobodyさん:2009/03/03(火) 17:59:07 ID:???
http、ttp という文字列が混在しているところで
「ttp」だけを「http」に置換させたいのですが、単純に行うと
httpが「hhttp」と置換されてしまいます。
何かいい方法はないでしょうか?
780nobodyさん:2009/03/03(火) 18:07:02 ID:???
str_replace( "hhttp", "http", str_replace( "ttp", "http", $str ) )
781nobodyさん:2009/03/03(火) 18:10:01 ID:???
別にhttp;//はつけなくてもページは見れるよ

2ch.net←これブラウザに貼り付けて来いよ
782nobodyさん:2009/03/03(火) 18:11:32 ID:???
>>781
ttp://2ch.net がエラーなるから言ってるんだろ
783nobodyさん:2009/03/03(火) 18:12:54 ID:???
strtr($s, array('http'=>'http', 'ttp'=>'http'));
784nobodyさん:2009/03/03(火) 18:15:24 ID:???
>>770
それは単にリファラが空になってるだけじゃね?
リファラをルートURLに書き換えてみ
785nobodyさん:2009/03/03(火) 18:46:52 ID:???
>>782
日本語でどうぞ
786nobodyさん:2009/03/03(火) 19:38:44 ID:P96ap3nl
php5でクラスの質問です
100円の商品がありまして、、この商品の消費税込みの料金を計算します
書き方は以下のような形でよろしいでしょうか?
ここはこうしたほうがいいなどありましたらご教示お願いします

class keisan
{
$tax=1.05;
function shouhizei($okane) {
return $kekka = $okane * $tax;
}
}

$obj = new keisan;
echo $obj->shouhizei(100);
787nobodyさん:2009/03/03(火) 19:45:18 ID:???
var $tax=1.05;
788nobodyさん:2009/03/03(火) 19:45:59 ID:???
return $okane * $tax;
789766:2009/03/03(火) 19:50:41 ID:???
>>784
Irvineで取れるのかい?

スレッドを開始します
nanapi.o0o0.jpが見つかりました
nanapi.o0o0.jp(59.106.13.205):80にconnect成功しました
サーバへリクエスト送信
GET /moemoe/futaba.php?res=355430 HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Connection: close
Host: nanapi.o0o0.jp
Referer: http://nanapi.o0o0.jp/moemoe/
Accept: */*
サーバからのレスポンス
HTTP/1.1 302 Moved Temporarily
X-Powered-By: PHP/5.2.8
Location: http://nanapi.o0o0.jp/moemoe/index.html
Transfer-Encoding: chunked
http://nanapi.o0o0.jp/moemoe/index.htmlにリダイレクトします
790nobodyさん:2009/03/03(火) 19:52:03 ID:???
$thisは使わんのか〜い
791nobodyさん:2009/03/03(火) 22:40:59 ID:???
>>786
書き方うんぬん以前に、まずきちんと動くものを書けるようになるべっきー
792nobodyさん:2009/03/03(火) 22:45:40 ID:???
>>773
配列をserialize()した結果は文字列だから

'username' => 'hogehoe'

のとこがどう表現されてるかがわかれば
その文字列使って like すれば列は取れるのでわ?
793nobodyさん:2009/03/03(火) 22:50:46 ID:???
>>730
やや変態ちっくかも知れないけど

$a[ $_REQUEST['s'] ] = 'checked="checked"' ;

<input type="radio" name="s" value="0" <?php echo $a[0] ?> />ページ1
<input type="radio" name="s" value="1" <?php echo $a[1] ?> />ページ2
<input type="radio" name="s" value="2" <?php echo $a[2] ?> />ページ3

なんてしてみたり。
794nobodyさん:2009/03/03(火) 22:51:52 ID:???
'checked="checked
なんじゃこりゃ
795nobodyさん:2009/03/03(火) 22:54:57 ID:???
>>794
xhtmlを一から勉強してこい
796nobodyさん:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
797nobodyさん:2009/03/03(火) 23:01:08 ID:???
>>794
うん?
xHTMLで書いてあったから従ったんだけどなんかヘン?

< input .... />
798nobodyさん:2009/03/03(火) 23:03:27 ID:???
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
799nobodyさん:2009/03/03(火) 23:03:56 ID:???
>>796
馬鹿丸出しワロタw
800nobodyさん:2009/03/03(火) 23:10:56 ID:???
じゃなぜchecked="1"でも"on"でも"yes"でも"true"でもなくてchecked="checked"なのか説明してみろよ
801nobodyさん:2009/03/03(火) 23:18:39 ID:???
「何故」なのかの説明は無理だな。
どういう経緯でそうなったのかは資料を漁れば可能だろうが。
802nobodyさん:2009/03/03(火) 23:20:43 ID:???
>>786
それ$tax取れるんか?

class keisan
{
  var $tax=1.05;
  function shouhizei($okane) {
    return $okane * $this->tax;
  }
}
にするべき
803nobodyさん:2009/03/03(火) 23:22:15 ID:???
>>800
なにか勘違いしてる気がするなぁ。。

例えば,optionタグなら
<option selected="selected">
だよ。

804nobodyさん:2009/03/03(火) 23:26:33 ID:???
あ、そうか。
何故かって言われたら、XMLの決まりだからとしか答えられないかなぁ。。

http://www.w3.org/TR/xhtml1/#h-4.5
805nobodyさん:2009/03/03(火) 23:29:28 ID:???
>>800
HTML なら checked だけでいいんだけど、XHTML はそういう仕様になってるだけのこと

「なんじゃこりゃ」って単に知らなかっただけでしょ
そんで記述に無駄があると後付けしてくるなんてかっこ悪いよ^^;;;;
806nobodyさん:2009/03/03(火) 23:30:40 ID:???
>786
動かすだけなら、3行目を>787、5行目はreturn $okane * $this->tax;

勉強中のようなので少しだけ高めのボールで返す。俺ならこういうクラスにする。
class Item{
 private $tax_rate = 1.05;
 private $price;
 private $name;
 function __construct($name, $price){
  $this->name = $name;
  $this->price = $price;
 }
 function taxedPrice(){
  return $this->price * $this->tax_rate;
 }
}
$i_phone = new Item('IPhone', 30000);
$x_box = new Item('XBOX', 40000);
echo $i_phone->taxedPrice(); // 31500
echo $x_box->taxedPrice(); // 42000
807nobodyさん:2009/03/03(火) 23:31:51 ID:???
checked="on"じゃダメなの?
808786:2009/03/03(火) 23:42:14 ID:???
たくさん回答いただき助かりました
どれも勉強になります
ありがとうございます
809nobodyさん:2009/03/03(火) 23:42:41 ID:???
そろそろ通報されそうだなww
810nobodyさん:2009/03/03(火) 23:48:56 ID:???
いまクラスについてわかりやすく教えてるサイトがあんまりないから
今ならアフィリエイトつけても許すから誰か講座サイトやってください
811nobodyさん:2009/03/04(水) 00:52:53 ID:TJHoC0pm
リダイレクトのヘッダー吐いて別のサイト(URLも当然別)に飛ばしたいのですが
自分のサーバーからだと別のページに飛んでくれます。
しかし外部のPCからそのページにアクセスすると、別のサイトには飛ばずにうちのサーバーのルートに飛びます。
何でですか?
812nobodyさん:2009/03/04(水) 01:01:52 ID:???
>>811
絶対URLで指定してみ
813nobodyさん:2009/03/04(水) 03:50:16 ID:pWv0VEvt
phpで画面を初期化するにはどうしたらいいですか?
814nobodyさん:2009/03/04(水) 03:51:03 ID:???
初期化って?
815813:2009/03/04(水) 03:54:02 ID:pWv0VEvt
>>814
画面をクリア、真っ白にしたいのです。
816nobodyさん:2009/03/04(水) 04:16:39 ID:???
BASICと間違えているのでは?
817nobodyさん:2009/03/04(水) 04:18:34 ID:???
displays_error = offにしてfatal errorを出す
818813:2009/03/04(水) 04:24:16 ID:pWv0VEvt
エラーを消したいのではなく、printやechoで画面に表示させたものを消したいのです。
819nobodyさん:2009/03/04(水) 04:28:27 ID:???
ob_*系の出力バッファリングを使う
820nobodyさん:2009/03/04(水) 04:29:25 ID:???
送った後なら、JSで処理だろうな
821813:2009/03/04(水) 04:39:39 ID:pWv0VEvt
>>819-820
具体的にどうすればいいのか教えて下さい。
822nobodyさん:2009/03/04(水) 05:11:41 ID:???
断る
823nobodyさん:2009/03/04(水) 05:57:21 ID:???
>>821
具体的にどうしたいのか分からんから答えようがない
824nobodyさん:2009/03/04(水) 06:42:13 ID:???
<?php
/*
$hoge = "hoge";
・・・
・・・
・・・
*/
?>
825nobodyさん:2009/03/04(水) 07:42:58 ID:???
【豆知識】

<?php

$a=get_defined_constants();

foreach($a as $a=>$b){

print "[$a] => [$b]";
print "<br>";

}
?>

を実行すると大変なことになる
826nobodyさん:2009/03/04(水) 11:21:01 ID:fYg53wem
出力はSJIS、DBはUTF8で運用しています
SJIS-winをUTF8に変換した時に
W932+とかBAD+とかJIS+とかで始まる文字列になる場合がありますが、
そういう時どう処理していますか?
827nobodyさん:2009/03/04(水) 11:30:23 ID:???
UTF−8は使わないようにしてる
828nobodyさん:2009/03/04(水) 13:02:05 ID:???
SJISを使うな
829nobodyさん:2009/03/04(水) 13:14:42 ID:???
SJIS(笑)
830nobodyさん:2009/03/04(水) 13:17:13 ID:???
PC版しか開発しないやつらはラクでいいな
831nobodyさん:2009/03/04(水) 13:30:50 ID:???
携帯(笑)
832nobodyさん:2009/03/04(水) 13:38:25 ID:???
というか、今時携帯でも見れないサイト開発するとか終わってるな
833nobodyさん:2009/03/04(水) 13:44:27 ID:???
くだらない煽り合いはどうでもいいです
経験者のみ回答して下さい
834nobodyさん:2009/03/04(水) 13:54:05 ID:???
encoding_translation
835nobodyさん:2009/03/04(水) 16:21:34 ID:???
encodeing_mobile
836nobodyさん:2009/03/04(水) 16:33:55 ID:???
間違えて書き込んだの消すのってどうやってやるか教えてください
837nobodyさん:2009/03/04(水) 16:38:37 ID:???
┌──-┐
|Back |
|space|
└──-┘
838nobodyさん:2009/03/04(水) 19:20:19 ID:F5lJueso
php5.2.8使ってます
phpはc:\php5にインストールしてます
このディレクトリの中にphp.exeがあります

コンソールでphpを使って「こんにちは」と表示させたいのですがパースエラーになってしまいます

c:\php5>php.exe -r echo "こんにちは";

どのように書き直したらよろしいでしょうか?
839nobodyさん:2009/03/04(水) 19:26:35 ID:???
c:\php5>php.exe -r "echo \"こんにちは\";"
840838:2009/03/04(水) 19:35:43 ID:???
できました、ありがとうございます
コード自体を囲まないといけないのですね勉強になりました
841nobodyさん:2009/03/04(水) 19:48:31 ID:???
>>826
UnicodeのPrivate Use Areaと相互変換したり
mbstring.substitute_character = none にしてばっさり切り落としてしまうなり
要求次第
842nobodyさん:2009/03/04(水) 20:55:52 ID:P0bBQCst
phpとajaxの組み合わせのとき、データファイルはJSONが一番簡単ですか?
843nobodyさん:2009/03/04(水) 21:15:34 ID:???
まあ、JSONでいいんじゃないか?バランス取れてるし。

送出するデータによるし、どっちが得意かにもよる。
例えばJavaScriptの比重を極限まで減らしたいなら、PHPでHTMLまで生成して送りつけたほうが当然JSでやる事が減る。

それと、変更が入った場合の修正の手間だな。
JSONだと、データが追加になったらJSとPHP両方修正が必要になる。
PHPでHTMLを書き出すと、画面表示の変更の際にPHPに手を入れないといけなくなる。
844nobodyさん:2009/03/05(木) 09:51:15 ID:HLFGjq1S
ifから抜ける方法についての質問です。
ifの中で、デバッグ時、意図的に以降のコードを残したいとき等にifから抜けさせる方法はどうしたらいいでしょうか?
具体的には(実際にはbreakが通りませんが)下記のようなコードを書きたいです。
コメントアウトだとながーいif文の時に困りそうなので他の手段を考えています。


if(true){
echo "if no naka fuck ass\n";
break;
echo "mada naka my godness\n";
}
echo "detayo holy shit\n";
845nobodyさん:2009/03/05(木) 10:04:29 ID:???
ネタ乙ww
後藤に聞け
846nobodyさん:2009/03/05(木) 10:06:31 ID:???
>>844
これでいいやん・・・

echo "if no naka fuck ass\n";
if(false){
echo "mada naka my godness\n";
}
echo "detayo holy shit\n";
847844:2009/03/05(木) 10:17:06 ID:HLFGjq1S
>>846
すみません、コメントアウトだとって書きましたが、ifで囲うのも同様に辛いです><
処理させないのではなくて抜けさせるコードが無いかなぁ、と思ったんです。
848nobodyさん:2009/03/05(木) 10:17:43 ID:???
>>844
汚いコードだな
849nobodyさん:2009/03/05(木) 10:29:40 ID:???
条件制御をコメント代わりにすんなや
850nobodyさん:2009/03/05(木) 10:39:14 ID:???
え?もしかしてただコメントアウトしたいだけとか・・・?

/*
* コメントアウト
*/

// コメントアウト

# コメントアウト

これでいいの?それとも別の何か?


851nobodyさん:2009/03/05(木) 10:44:30 ID:???
<?php

for ($i=1;$i<10;$i++){
print microtime();
print "<br>";

}
?>


このコードを実行すると、

0.97075300 1236217379
0.97083700 1236217379
0.97084800 1236217379
0.97085700 1236217379
0.97086500 1236217379
0.97087300 1236217379
0.97088200 1236217379
0.97089000 1236217379
0.97089800 1236217379

ってなるんだけど、結局、1個のループ処理をするのに、
何マイクロ秒かかってるの?
852nobodyさん:2009/03/05(木) 10:50:37 ID:u8y4hmKR
>>851
リファレンス読んだら分かるけど
0.97089800 1236217379
 ↑秒      ↑現在のPCの時間

半角スペースの前後で意味が違う
853nobodyさん:2009/03/05(木) 10:58:03 ID:???
質問とは関係はないけど
マイクロ秒とミリ秒って世間的に同じ意味なの?
10^-6と10^-3だと思っていたが
原語マニュアル見たりぐぐったりしてみるとどうも混同して扱われてる気がする
854nobodyさん:2009/03/05(木) 11:02:47 ID:???
>>853
マニュアルのどこで混同してるの?
855nobodyさん:2009/03/05(木) 11:12:14 ID:???
<?php

$a=0.97075300;
$b=0.97083700;
$c=$b-$a;
$d=sprintf("%.f", $c);
print $d;



?>

これを実行すると、
0.000084
ってなるんだけど、
0.000084秒
かかった、って理解でいいの?
856nobodyさん:2009/03/05(木) 11:13:48 ID:???
857nobodyさん:2009/03/05(木) 11:48:05 ID:QryPG+0b
PHPでアクセスログを取得したいと思っています。
以下の質問者のような状況なのですが
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1223035602

それに対する回答では「じゃ、どうすればいいのか」
と言う答えが書かれて無くて、自分でも解決策がわかりません。

どうすれば上記URLの方法で、リンク元を取得できるのでしょうか?
858nobodyさん:2009/03/05(木) 11:49:32 ID:???
>>857
どうすればの前にお前はどうしたんだ?
859nobodyさん:2009/03/05(木) 11:50:35 ID:???
aaa.jpで取得したリファラをaccesslog.phpのGETにでもつけてやったら?
860nobodyさん:2009/03/05(木) 11:51:59 ID:???
ああすまんaaa.jpのほうは静的htmlなのか
どっかの既存スクリプトのソースでも見てみればいいんでないかね
861857:2009/03/05(木) 11:55:26 ID:???
>>860
WEBサービスなどの既存スクリプトを見ると
<script type="text/javascript" src="アクセス解析のURL">

となっているだけ、それでどうやって取得しているのか予測できないんです。。

862nobodyさん:2009/03/05(木) 11:59:23 ID:???
いやだからその中身です
863nobodyさん:2009/03/05(木) 12:13:20 ID:???
>>861
"アクセス解析のURL"をアドレスバーにぶっこめばソース見れるでしょ
864nobodyさん:2009/03/05(木) 12:36:30 ID:???
解析対象のページに直接貼り付ければおk
865857:2009/03/05(木) 12:37:02 ID:???
見れました。Javascriptのソースが出ます。
処理を予測すると、

Javascriptでアクセス情報を取得→PHPで受け取って→DBなどに保存

だと思います。
Javascriptでアクセス情報を取得する方法はわかりますが、
PHPに渡す方法がわかりません。AJAXで通信するというのは聞いたことありますが。。

かなり規模が大きくなりそうなので、別の方法を考えます。
866nobodyさん:2009/03/05(木) 12:40:39 ID:???
なんでソース見れてるのに渡す方法がわからないの?jsが膨大なのか?
867nobodyさん:2009/03/05(木) 12:44:57 ID:Ai8YQiii
http://www.example.com/index.php/test/100

上記でアクセスし$_SERVER['PATH_INFO']を使って以下のようにします

$path1 // testを代入
$path2 //100を代入

1.この値をhtmlに出力するときにhtmlspecialcharsをするべきでしょうか?
2.この値を<a href="get.html?mode=<?php echo $path1;?>"?>のようにソースに書くときもhtmlspecialcharsは必要でしょうか?
3.この値を利用して$file=file($path1.".log") or die("エラー");とするとき、$path1をhtmlspecialcharsをするべきでしょうか?
868nobodyさん:2009/03/05(木) 12:49:09 ID:???
>>867
XSSでぐぐれ
869nobodyさん:2009/03/05(木) 13:13:08 ID:7kExiJxs
kokugo.logをfile関数で開くとき、以下のようにしました
$file=file("kokugo.log");

もしファイルが存在しなかった場合ワーニングになるのですが
file関数で開く前にkokugo.logが存在して読み込み可能かチェックしたほうがいいのでしょうか?
870nobodyさん:2009/03/05(木) 13:16:09 ID:???
>>867
上2つは XSSになりえる。
html..でおk

残り1つは DirectoryTraserval になりえる。
これは html.. じゃ防げない。
パスに関する文字を消す処理を挟むべき。
871870:2009/03/05(木) 13:18:10 ID:???
すまん、スペルに自信がない。

日本語だと ディレクトリ遡り攻撃ね。
872nobodyさん:2009/03/05(木) 13:39:41 ID:2sUk8Kdm
3のほうを検証してみたのですが
http://www.example.com/index.php/../test/100とすると
ページがNot Foundになります


以下のようにしてみたのですがこれは対策になってますでしょうか?
$path = split("/",$_SERVER['PATH_INFO']);
print_r($path);
873867:2009/03/05(木) 13:40:24 ID:2sUk8Kdm
すいません電話回線なので再接続でID変わってしまいました
すみません
874nobodyさん:2009/03/05(木) 13:49:36 ID:???
最近になって思い始めた
ヒアドキュメントはSQLを書くためにあるものじゃないのかと
875nobodyさん:2009/03/05(木) 14:16:58 ID:???
PEAR::MDB2のexecuteで
Call to a member function execute() on a non-object
とエラーが出ます。

クエリミスや引数ミスでこのエラーが出るのですが、
実行前にデバッグしたいのですが、クエリを参照する方法がわかりません。

$sth->execute($data);の段階でエラーが出るのですが、
それ以前にダンプしてもクエリが作成されてなく、確認ができません。

何か方法はないでしょうか
876nobodyさん:2009/03/05(木) 14:17:30 ID:???
ごめんなさい、ID忘れました
877875:2009/03/05(木) 14:18:27 ID:u8y4hmKR
また忘れました><。
878nobodyさん:2009/03/05(木) 14:35:56 ID:UILw4QgF
定義した関数を$kansuに代入して、呼び出したいところで定義した関数を実行したいのですが
$kansu = hello();の時点で実行されてしまいます
どのようにしたらよろしいでしょうか?

function hello() {return "こんにちは";}
$kansu = hello();
〜他の処理〜
echo $kansu;
879nobodyさん:2009/03/05(木) 14:39:01 ID:???
>>878
$kansu = function {return "こんにちは";};
880nobodyさん:2009/03/05(木) 14:54:19 ID:???
>>879
php5.3限定かよ
881nobodyさん:2009/03/05(木) 14:58:09 ID:???
$kansu = create_function('', 'return "こんにちは";');
882nobodyさん:2009/03/05(木) 16:47:02 ID:hzERq96A
if (substr($var, 0, 1) != '#') { ... }
という、先輩が書いたコードがあるんですけど、これって
if ($var[0] != '#') { ... }
と等価でしょうか。
なにか違う点がありましたら教えてください。
883nobodyさん:2009/03/05(木) 16:55:02 ID:???
上は1文字目を取り出してる
下は配列の一つ目を取り出してる
意味は全く違う
884nobodyさん:2009/03/05(木) 16:57:21 ID:???
$varが数値だと違いは出るけど。

$var = 123;
echo substr($var,0,1); #=> 1
echo $var[0]; #=> NULL
885先輩:2009/03/05(木) 16:57:35 ID:???
>>882
おいおい仕事中になにやってんだてめえ
886nobodyさん:2009/03/05(木) 16:58:05 ID:???
$varが文字列なら等価だと思いたいんだろうが、
$varが配列や、ダブルバイトなら使えん。
素人はこれだから困るという先輩の顔が目に浮かぶw
887nobodyさん:2009/03/05(木) 17:01:58 ID:???
言語仕様がスカラーも配列も連想配列も見た目同じ$始まりだから違和感あるのは解かるよ
888nobodyさん:2009/03/05(木) 17:03:54 ID:???
デターwwww
889nobodyさん:2009/03/05(木) 17:25:19 ID:???
mb_substrでないから同じジャン
890nobodyさん:2009/03/05(木) 17:37:55 ID:???
そろそろ闘技場でも行こうか
891nobodyさん:2009/03/05(木) 17:57:10 ID:???
まぁ、
$var = array("#", "any");
で、>>882は終了してるけどな。
892nobodyさん:2009/03/05(木) 17:58:45 ID:???
>>882
上記は文字列として比較
下記は配列として比較
893nobodyさん:2009/03/05(木) 18:36:23 ID:0C8jTvwA
正規表現で僕の彼女を探したいのですがどのように書けばよろしいでしょうか?
よろしくお願いします
894nobodyさん:2009/03/05(木) 18:37:50 ID:???
preg_match("/僕の彼女/", $str)
895nobodyさん:2009/03/05(木) 18:38:39 ID:???
センスねえな
896nobodyさん:2009/03/05(木) 19:11:16 ID:???
まず、ちんこを出してだな。
897nobodyさん:2009/03/05(木) 19:46:42 ID:???
>>882
substr() は mbstring.func_overload に影響を受ける
http://www.php.net/manual/ja/mbstring.overload.php

オフセット参照は変数の型に影響を受ける
http://www.php.net/manual/ja/language.types.string.php#language.types.string.substr
898882:2009/03/05(木) 19:55:19 ID:???
>>883
ここでは$varは配列ではなく文字列です。
>>884
なるほど、$varが文字列以外の場合、substr() だと$varが自動的に文字列に変換されるわけですね。
参考になります。ありがとうございました。
>>885
おこるぐらいならもっとましなコード書いてください。
899nobodyさん:2009/03/05(木) 19:57:58 ID:???
>>898
だったら、!is_string($var) ならexit()とか入れとけ。
ソースにないもんをエスパーできるかよw

にしたって、strposを使うケースだけどな。$var[0]とか狂ってる。
900nobodyさん:2009/03/05(木) 20:23:31 ID:???
>>899
いや、そこはstrncmpだろ
901nobodyさん:2009/03/05(木) 20:29:27 ID:???
いや、そこはstrpbrkだろ
902nobodyさん:2009/03/05(木) 20:33:26 ID:???
>>899
>>897を理解してる上で使う分には間違っちゃいない
$a = array(); $a[] = 1; は許すのに $a = ''; $a[1] = 'a'; は許さないとか
シンタックスシュガーを利用するしないはコーディング規約で決めるものだ

それにstrpos()は最悪文字列全体を見るまで処理を打ち切らないし
882をバカにできる奴が選ぶ手段じゃない
903nobodyさん:2009/03/05(木) 20:41:00 ID:???
>>901
strpbrkはないわw
904nobodyさん:2009/03/05(木) 20:41:26 ID:???
substrは文字列にしか使えない。
$str[0]は配列にも使える。
従って文字列へのアクセスならば、substrのほうが分かりやすい。
スレが軽く荒れたところを見ても、角括弧が混乱を招きやすい表記だという事は分かるだろ。
ちょっとコードの見た目がスッキリするとか、何ナノ秒処理が早くなるだとか、そんなメリットと引き換えにしていいレベルじゃない。
905nobodyさん:2009/03/05(木) 21:11:52 ID:???
マヌアルのどっかでstrposはメモリの使用量も小さくオヌヌメなんて書いてあったよな
んなもん、strposが最適解だと思うだろjk
オライリの詳説正規表現の効率云々みたいに解説本でも欲しいところだなw
906nobodyさん:2009/03/05(木) 21:20:58 ID:???
>>905
何文字目とか分かってるなら、substrかstrncmpだろ
907nobodyさん:2009/03/05(木) 21:24:16 ID:???
なんだかんだで、substrが正解ってことだよな。
先輩乙
908nobodyさん:2009/03/05(木) 21:27:44 ID:Zs/6GWof
皆さんは運用環境にxdebug入れておきますか?
それともあくまでデバッグのみに使用しますか?
909nobodyさん:2009/03/05(木) 21:28:33 ID:???
別に入れといたっていいだろ。設定でOFFにするだけなんだし
910nobodyさん:2009/03/05(木) 21:43:17 ID:l6IOt6/c
非常に下らない質問かもしれませんが、ご存知の方がいらっしゃったらお教えください。

配列についてなんですが、
$arr = $this -> fncName($aa);
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
で値を返し、ajaxでページに表示させると、何も表示されないのに、
$arr = $this -> fncName($aa);
$appArr['配列名'] = '';
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
と、$arr['配列名'] = '';のように初期化した値だけページに反映されるって状況の場合、
一体何が問題なのでしょうか?
当方PHP5.2.9をapache2.2.11を使用しております。
よろしくお願いいたします。
911nobodyさん:2009/03/05(木) 21:44:03 ID:???
>>908
maana
912nobodyさん:2009/03/05(木) 21:54:28 ID:???
>>910
他人に非常に分かりにくい文章です
できればもう一度整理して質問し直して下さい
913nobodyさん:2009/03/05(木) 22:03:45 ID:???
>>912
sine tinpo yarou
914nobodyさん:2009/03/05(木) 22:23:07 ID:???
>>910
配列初期化してないってこと?
$appArr = array(); の方がいいとは思うけど。
915nobodyさん:2009/03/05(木) 22:42:02 ID:l6IOt6/c
>>914
それしても、入力されません。
具体的に配列のkeyを直接入力しなければ入らないのです。
また、$arr['key']には、htmlの要素がいっぱい入っています
(<span>や<div><form>など)
それが入っていない場合は、普通に表示されます。
なぜなんでしょ?
916nobodyさん:2009/03/05(木) 22:54:40 ID:???
$arr = $this -> fncName($aa);
$appArr = array();
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;

↑でダメならvar_dumpかprint_rしながら
$appArrに求めてる値が入ってるか確認してみた方がいいかも。
917nobodyさん:2009/03/05(木) 22:57:16 ID:???
>>910
$arrが空っぽ または $this->fncName2($val)が値を返さない

というか後者は $this->fncName2($key) じゃなくていいの?
918nobodyさん:2009/03/05(木) 23:26:53 ID:???
おれさ、人と話してないんだよね
このスレだけが俺の生きがいだからかそらないでくれたまえ
919nobodyさん:2009/03/05(木) 23:28:36 ID:???
じゃあかなりPHPの実力ついてるんじゃないか?
解説サイトとかつくって人呼べばいいじゃん^^
920nobodyさん:2009/03/05(木) 23:35:44 ID:???
そういやぁ、俺も人と話してないやw
921nobodyさん:2009/03/06(金) 02:07:01 ID:???
phpの欠点を挙げてるサイトで、「文字列操作系の関数で、似たようなことをするのに引数の順番がバラバラ」みたいなことを書いてるサイトを探してるのですが、知りませんか?
もしくは、どの関数のことを言ってるのか想像つきますか?
922nobodyさん:2009/03/06(金) 02:11:16 ID:???
>>921
in_arrayとstrposとかかな
923nobodyさん:2009/03/06(金) 02:32:04 ID:cF17z8wj
HTML側
<img src="img.php">

PHP側
header("Content-type: image/jpeg");

とだけしました。しかし、IE6で見ると×が表示されて
画像として読み込めていないようです。
これはどうしてでしょうか?
924nobodyさん:2009/03/06(金) 02:36:58 ID:???
中身が何もないからでは?
925nobodyさん:2009/03/06(金) 02:42:04 ID:cF17z8wj
中身は表示させたくなくて、PHPの処理がしたいので
>>923のようにしているのですが、
やはりimgタグの方にwidth="1" height="1"と指定するか、
readfileで透明な1ピクセルのファイルを読み込む方法しかないのでしょうか?
926nobodyさん:2009/03/06(金) 02:45:51 ID:???
>>921
Ruby作者だろw
927nobodyさん:2009/03/06(金) 03:08:35 ID:???
Rubyの良さはJavaとPHPの欠点を挙げないと見えてこないからなw
928nobodyさん:2009/03/06(金) 03:08:41 ID:???
そんな細かいことをあげつらうんだよなぁPHPディス者ってのは
929nobodyさん:2009/03/06(金) 03:11:50 ID:???
JavaからRubyへって本読んだけど精神的にマイナス思考に追い込んで
自分たちの領域に引き込む宗教本みたいだったぜ
どんだけJavaの生産性が低いかの説明ばっかり
930nobodyさん:2009/03/06(金) 03:45:28 ID:???
>>922
ぐぐったらまさにそれっぽいんですが、関数の中身(文字列の結合、分解)とかにまで触れてた記事は無かったでしょうか?
931nobodyさん:2009/03/06(金) 04:01:35 ID:???
>>929
宗教本っていうか、
rubyの作者自体がモルモン教徒だから。

(1)rubyをやらせる
     ↓
(2)モルモンに入信させる
     ↓
(3)ニュースキン、ニューウェイズをやらせる

こういうビジネスモデルだから。
932nobodyさん:2009/03/06(金) 05:36:30 ID:???
豆知識

<?php
echo exec('notepad.exe');
?>

これを実行するとメモ帳が起動する。
933nobodyさん:2009/03/06(金) 05:40:42 ID:6cUsAerc
and とかでいつも悩むんですが
2ch かつ php かどうかを比較するにはこのようにしていいのでしょうか?

if ( $a == '2ch' && $sub != ''php'){
  print "2chだけどphpスレではない";
}
934nobodyさん:2009/03/06(金) 05:56:30 ID:???
>>933
うん
あと、それだったら === を使った方がいいよ
935nobodyさん:2009/03/06(金) 08:52:00 ID:???
>927
>929
釣れませんね
936nobodyさん:2009/03/06(金) 08:58:45 ID:???
どう見ても釣れてるようにしか見えない
というか事実だから釣りでも何でもないだろうけど
937nobodyさん:2009/03/06(金) 09:03:29 ID:???
935みたいのがRuby信者か
938nobodyさん:2009/03/06(金) 09:05:57 ID:???
939nobodyさん:2009/03/06(金) 11:17:48 ID:???
C言語からPHP移ったら違和感を感じた
940nobodyさん:2009/03/06(金) 11:23:57 ID:???
古来より適応力のない生物は絶滅する運命

それより、移るってどういうことよ。
おれはCだろうがPHPだろうが、適材適所で使い分けてるけど、
移ったらってことは、Cを捨てるのか、いや捨てられたのか。あ、そか。
きっとPHPも君を捨てるだろう。
941nobodyさん:2009/03/06(金) 11:48:17 ID:???
ruby真理教必至だな
942nobodyさん:2009/03/06(金) 11:57:16 ID:???
違和感ってどんなとこに?
943nobodyさん:2009/03/06(金) 12:02:29 ID:???
C言語からRubyだと違和感どころじゃ済まないけどな
944nobodyさん:2009/03/06(金) 12:04:02 ID:???
ちょっと前にある会社面接行ったら
面接官が言葉の端々で最近はRubyしか使わないを連呼してたので断ったわ
RoRで作っても後に痛い目に遭うのは確実だし
あんなメモリ食いまくる仕組みがなんで流行ってるのか理解に苦しむ
945nobodyさん:2009/03/06(金) 14:03:24 ID:???
ircで部屋たてたから誰かきてー
24時間つなぐぜ

http://irc.2ch.net/
#WEB制作板
946nobodyさん:2009/03/06(金) 14:17:45 ID:???
何を語るんだ
947nobodyさん:2009/03/06(金) 15:22:09 ID:k96rJD9y
PHP5.2.8です

class keisan {
function tasizan($a,$b) {return $a+$b;}
function hikizan($a,$b) {return $a-$b;}
function kakezan($a,$b) {return $a*$b;}
function warizan($a,$b) {return $a/$b;}
}

$obj=new keisan;
$tasizan_kekka = $obj->tasizan(10+5);
$obj->kakezan($tasizan_kekka,20);

tasizan関数で足し算の結果をkakezan関数の$aに使いたいのですが
このような書き方でよろしいでしょうか?
もっと効率的・スマートな書き方がございましたらご教示お願いいたします。
948nobodyさん:2009/03/06(金) 15:23:34 ID:???
echo keisan::kakezan(keisan::tasizan(10,5),20));
949nobodyさん:2009/03/06(金) 16:07:43 ID:???
>>947
計算結果を内部に持っても良いのなら、以下のようなのはどう?

class keisan {
private $result;
function __construct($a) {
$result = $a;
}
function tasizan($b) {
$this->result += $b;
retun $this;
}
function hikizan($b) {
$this->result -= $b;
return $this;
}
function kakezan($b) {
$this->result *= $b;
return $this;
}
function warizan($a,$b) {
$this->result /= $b;
return $this;
}
function kekka {
retun $this->result;
}
}

$obj=new keisan;
$kekka = $obj->tasizan(5)->kakezan(20)->kekka();
950nobodyさん:2009/03/06(金) 16:10:52 ID:???
>>949ちょっと違ってた。
$obj=new keisan(10);
$kekka = $obj->tasizan(5)->kakezan(20)->kekka();
951nobodyさん:2009/03/06(金) 16:21:58 ID:ox3YTIPG
モジュールで動作していてセーフモードで動いてるサーバではPHPでディレクトリを作成することができないので
FTPでいつも手動でディレクトリを作成してます
一つのディレクトリの中に10000ファイルためる場合、処理が遅くなりますか?
952nobodyさん:2009/03/06(金) 16:23:10 ID:???
質問もアレだが、答えもアレだな。
メソッドチェーン覚えました〜〜って香ばしい匂いが
953nobodyさん:2009/03/06(金) 16:24:03 ID:???
>>951
1ディレクトリに10000ファイルも溜めたら、apacheだって重くなるよ。
954nobodyさん:2009/03/06(金) 16:24:37 ID:???
>>949のが一番すごいだろ
955nobodyさん:2009/03/06(金) 16:25:07 ID:ox3YTIPG
>>953
ありがとうございます
手動で定期的にファイルを移動させます
956nobodyさん:2009/03/06(金) 17:26:24 ID:???
apacheだFTPだじゃなくてファイルシステムがどうかだな
ext3とかなら確実にアウトだ
957nobodyさん:2009/03/06(金) 17:32:06 ID:???
だよな
いまどきlinuxでext3を教えてる教本があるから困る
いまはFATだろが
958nobodyさん:2009/03/06(金) 18:17:51 ID:???
まさか面白いと思って書いてないよね
959nobodyさん:2009/03/06(金) 20:49:00 ID:???
>>944
まぁフレームワークに固執する時点で技術レベルわかるけどな
960nobodyさん:2009/03/06(金) 23:38:33 ID:???
>947
>もっと効率的・スマートな書き方

$tasizan_kekka = 10+5;
$tasizan_kekka * 20;

もっと格好いい書き方
ttp://pastie.org/409335
参考文献
ttp://d.hatena.ne.jp/masayang/20081211/1229033163
961nobodyさん:2009/03/06(金) 23:51:00 ID:???
>>960

>>947のような単純なものならそれがスマートなのは同意するが
質問の意図をとらえてない
962nobodyさん:2009/03/07(土) 00:16:31 ID:???
>>949
$result = $a;

$this->result = a;
だな
963nobodyさん:2009/03/07(土) 00:21:07 ID:???
>>947
まったく問題ない。まちがっても>>949みたいなキモいコードは書かないように。
964nobodyさん:2009/03/07(土) 11:57:49 ID:???
一回しか取引が無いような相手に納品するとき
虎の子のライブラリとかどうしてる?暗号化する?
965nobodyさん:2009/03/07(土) 12:02:37 ID:???
そんなご立派なライブラリをお持ちで?
966nobodyさん:2009/03/07(土) 12:18:42 ID:???
ライセンスだけ自分にしておけば別に隠す必要ないだろ
967nobodyさん:2009/03/07(土) 12:26:47 ID:???
以前ここで
「ライセンスで規制されてても二次利用は当たり前、パクって何が悪い?」
ってドキュソがいたなwww
968nobodyさん:2009/03/07(土) 16:03:58 ID:???
その程度のスクリプトが虎の子扱いなのは、御社の技術力がだな、その
969nobodyさん:2009/03/07(土) 18:45:33 ID:???
日本語でおk
970nobodyさん:2009/03/07(土) 18:49:09 ID:???
御社と貴社の使い方も知らないと無知もいいところだな
971nobodyさん:2009/03/07(土) 18:59:23 ID:???
そんな煽り方とは無知もいいところだな
972nobodyさん:2009/03/07(土) 19:00:07 ID:???
973nobodyさん:2009/03/07(土) 19:21:18 ID:???
は・ず・れ
残念でしたw
974nobodyさん:2009/03/07(土) 21:49:03 ID:C+oqmm8h
アクセス解析で自分のサイトからのリファラは省くようにしたいので以下のように書きました
ifで真なら「自分サイト」、偽なら「外部サイト」と表示させたいのですが
結果が逆になってしまいます
どこを直したらよろしいのでしょうか?

$myurl = "http://localhost";
$referer = "http://www.2ch.jp/";
#$referer = "http://localhost/link.php";

if (preg_match('{^https?://[^('.$myurl.'].*$}', $referer)) {
echo "自分サイト";
} else {
echo "外部サイト";
}
975nobodyさん:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
976nobodyさん:2009/03/07(土) 22:06:13 ID:???
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
977nobodyさん:2009/03/07(土) 22:07:53 ID:???
978nobodyさん:2009/03/07(土) 22:08:30 ID:???
>>975
フイタw
979nobodyさん:2009/03/07(土) 22:28:21 ID:???
>>977
ほー{}も対応してたのか
/でしか使ったことなかったから初めて知った、thx
980nobodyさん:2009/03/07(土) 22:34:36 ID:???
/意外だと気持ち悪い
#とか
981nobodyさん:2009/03/07(土) 22:37:12 ID:???
思ったけど、myurlの値違うくね?

それだと
http://http://localhost
になるんじゃね?
982nobodyさん:2009/03/07(土) 22:48:03 ID:???
strpos('example.co.jp', $_SERVER['HTTP_REFERER'])
でいいんじゃないの?
983nobodyさん:2009/03/07(土) 22:52:31 ID:???
>>974

$mydomein = 'exsample.com';
if(strpos($_SERVER['HTTP_REFERER'],$mydomein)){
 echo "自分サイト";
} else {
 echo "外部サイト";
}
984nobodyさん:2009/03/07(土) 22:53:01 ID:???
それだと
http://localhost/example.co.jp.html
でもひっかかる
985nobodyさん:2009/03/07(土) 22:54:06 ID:???
>>982
>>983
http://www.yahoo.xxco.jp/?url=example.com
みたいなとこから飛んできたらどうするんだよ
せめて先頭マッチくらいしろよ
986nobodyさん:2009/03/07(土) 22:55:59 ID:???
別にアクセス解析で省くくらいの用途ならそれくらいでいいだろ
987nobodyさん:2009/03/07(土) 22:56:23 ID:???
>>974
せめてここからはじめたほうがいいんじゃないか?

$myurl = $_SERVER['HTTP_HOST'];
$referer = "http://www.2ch.jp/";
#$referer = "http://localhost/link.php";

if (preg_match('{^https?://[^('.$myurl.'].*$}', $referer)) {
echo "自分サイト";
} else {
echo "外部サイト";
}
988nobodyさん:2009/03/07(土) 23:05:37 ID:???
>>986
初心者乙
989nobodyさん:2009/03/07(土) 23:24:25 ID:???
人生の初心者に言われたくないわ
990nobodyさん:2009/03/07(土) 23:36:26 ID:???
>>982-983はギャグだろ
本気になるなよ
991nobodyさん:2009/03/08(日) 01:30:25 ID:???
To : アクセス元の皆様
Subject : リファラ送出停止のお願いについて

お世話になっております。
私のサイトにアクセスする際は、当サイト内を相互移動する場合
リファラを送出しないようにお願い致します。
992nobodyさん:2009/03/08(日) 03:00:38 ID:???
せっかくPHPなんだから
parse_url($_SERVER['HTTP_REFERER'])
とかしてからいろいろやった方がなにかと楽じゃない?
ちゃんとPHP使ってる?
993nobodyさん:2009/03/08(日) 03:17:30 ID:???
おれ22才なんだがとりあえずこのスレおれより年上いないみたいだな
だから今から敬語使えや

ここで上下関係はっきりさせようや
994nobodyさん:2009/03/08(日) 03:21:31 ID:???
オッサンwww仕事しろ
995nobodyさん:2009/03/08(日) 07:09:54 ID:3tsEMQzx
pearのバージョンを入れ替えたところ2→3(PHPは4.3.11で変動無し)
AのDB切断が呼び出しもとのDBインスタンスにも反映されて
Cでエラーがでるようになったのですが、
これってpear::db仕様なんでしょうか?
回避方法あれば教えてほしいです。
<?php
require_once("DB.php"); // pear::db
class postage
{
function postage()
{
$db1 = new DBC;
$row = $db1->getRow("select * from session limit 1;");
print nl2br(print_r($row,1));// --------------@
print "@<br>\n";
$db1->disconnect(); // --------------A切断
}
}
996nobodyさん:2009/03/08(日) 07:11:47 ID:3tsEMQzx

class sess
{
function sess()
{
$db2 = new DBC;
$row = $db2->getRow("select * from session limit 1;");
print nl2br(print_r($row,1)); // --------------B
print "B<br>\n";

$postage = new postage;

$row = $db2->getRow("select * from session limit 1;");
print nl2br(print_r($row,1)); // --------------C
print "C<br>\n";

$db2->disconnect();
}
}
$c = new sess;
997nobodyさん:2009/03/08(日) 07:13:48 ID:3tsEMQzx
class DBC
{
var $connection;

function DBC(){
$this->connection =
DB::connect("mysql://root:pass@localhost/shop");
}

function getRow($sql){
return $this->connection->getRow($sql);
}

function disconnect(){
$this->connection->disconnect();
}
}
?>
998nobodyさん:2009/03/08(日) 07:22:16 ID:???
1000
999nobodyさん:2009/03/08(日) 07:42:42 ID:???
参照でインスタンス返してんじゃないの?
1000nobodyさん:2009/03/08(日) 08:15:30 ID:???
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。