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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2007/12/01(土) 21:18:36ID:MnWwNIk0
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1195204145/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0830nobodyさん2007/12/17(月) 08:55:04ID:???
つーか掲示板にたいしてのチェックだから
hidden値書き換えられても問題はないんだよな
禁止ワードとかのチェックは両方でやれば良い訳だし

>>825
それはスパム対策であって書き換えの対策になるとは思えない
0831nobodyさん2007/12/17(月) 08:55:28ID:???
>>829
こういう雑な仕事に慣れて、自分基準で独善的に話しているのが実に痛々しい。
0832nobodyさん2007/12/17(月) 08:55:51ID:???
> 確認画面表示時にsessionとhiddenに値をセットして
> 投稿時に確認

掲示板で確認画面の内容と「3」で実際に投稿される内容が
同一でなければならない、とかいう仕様をおもいつくやつって、
頭悪いなあ


> そのシステムの影響力とかにもよるが放置で登録するな

影響力もクソもないよ。確認画面見るのは(もし値を書き換えるとしたら)
その書き換える当人だけなんだから
0833nobodyさん2007/12/17(月) 08:56:50ID:???
> こういう雑な仕事に慣れて、自分基準で独善的に話しているのが実に痛々しい。

ものによりますね。
0834nobodyさん2007/12/17(月) 08:57:28ID:???
>>830
書き換えの対策て何のために必要なの?
0835nobodyさん2007/12/17(月) 08:57:54ID:???
> こういう雑な仕事に慣れて、自分基準で独善的に話しているのが実に痛々しい。

こういうこというやつって、掲示板での「2」の画面の意味が全くわかってないんだよね
0836nobodyさん2007/12/17(月) 08:59:55ID:???
さぁ盛り上がってまいりました
0837nobodyさん2007/12/17(月) 09:01:37ID:???
そもそも「非効率も何も普通は」 とか言ってる時点で
思考停止してる頭悪いノータリンってことが証明されてる感じだよね。

よくいるけどこういうタイプのバカって
0838nobodyさん2007/12/17(月) 09:08:11ID:???
>>832
>掲示板で確認画面の内容と「3」で実際に投稿される内容が
>同一でなければならない、とかいう仕様をおもいつくやつって、
>頭悪いなあ

パケット改ざんされて、ユーザーが入力した値が第三者に書き換えられるケースも考えられないんですねw
0839nobodyさん2007/12/17(月) 09:10:07ID:???
気になったんだが何でセッションて非効率なの?
数行のコードで済むのに。
そんな労力いるようなコードでもないと思うんだが
0840nobodyさん2007/12/17(月) 09:11:46ID:???
> パケット改ざんされて、ユーザーが入力した値が第三者に書き換えられるケースも考えられ

そんなケースはないですね

誰がおまえみたいなクズが書いたごみのような投稿を書き換えようと思うの?
0841nobodyさん2007/12/17(月) 09:14:46ID:???
そんなケースがない?おまえはそういうケースを生み出す知識がないからだろ
0842nobodyさん2007/12/17(月) 09:18:50ID:???
じゃあ客でも同僚でも友達でもいいから

>掲示板で確認画面の内容と「3」で実際に投稿される内容が
>同一でなければならない、

理由として

「パケット改ざんされて、ユーザーが入力した値が第三者に書き換えられるケース」

を防ぐため、と、言ってみたら。
恥かくだけだと思うけど(笑)
そんなこと考えて掲示板の確認画面見てるのはおまえぐらいだよ
0843nobodyさん2007/12/17(月) 09:21:04ID:???
>>841 のような心配性が自分の脳みその程度を心配しないのは何故なんだろう
0844nobodyさん2007/12/17(月) 09:24:25ID:???
2ちゃんねるに書き込むのは恐ろしい。
確認画面がないから
パケット改ざんされて、入力した値が第三者に書き換えられるケース
が防ぎきれないもんなあ
0845nobodyさん2007/12/17(月) 09:27:46ID:???
確認画面なんて成り行きで定着したような機能だぜ?
何か裁判沙汰になったら不利になるっていう、ただそれだけ。
0846nobodyさん2007/12/17(月) 09:28:43ID:???
>>844
そんなの確認画面があっても同じことだろ?
0847nobodyさん2007/12/17(月) 10:32:21ID:???
話が脱線してるような
0848nobodyさん2007/12/17(月) 10:35:39ID:???
ところでお前ら仕事は?
0849nobodyさん2007/12/17(月) 10:54:42ID:???
不定休
0850nobodyさん2007/12/17(月) 10:55:44ID:???
質問より回答が下らない件について。
0851nobodyさん2007/12/17(月) 11:11:58ID:???
セッションの非効率というのはコードの長さは関係ない
処理的に無駄なことは結果的にサーバー負荷になり
バグを増やす原因になる
どこからでもアクセスできるグローバル変数みたいなもんだから
メモリも食うし、キャッシュファイル容量も食う
0852nobodyさん2007/12/17(月) 11:14:30ID:???
PHPの設定を htaccess で設定するときに指定するモジュール名を
簡単に判断する方法ってありますか?もしくは組み合わせのパターンとか。

mod_php4.c
mod_php5.c
mod_php.c
sapi_apache2.c

なんかBSDやらLinuxやらで違ったりするので…。
0853nobodyさん2007/12/17(月) 11:20:11ID:???
>>851
いまどきの性能を持ったマシンなら気にしなくてもいいんじゃないの

セッションを使ったらバグが増えるって・・・どんだけセッション嫌いなの?wあんたwww
0854nobodyさん2007/12/17(月) 11:25:51ID:???
>>853
個人で小さなサイト作ってる程度じゃわからないだろうな
早い話がグローバル変数は必要最低限に使えということだよ!

0855nobodyさん2007/12/17(月) 11:27:38ID:???
グローバル変数をなるべく使わない要するってのには同意できるけど
セッションを使わないってのには同意できない。

要は設計の問題だろ。
0856nobodyさん2007/12/17(月) 11:27:53ID:???
>>853
>>851じゃないけど、バグの原因になりやすそうなものを不用意に導入しないというのは当然。
データセンタの巨大さを考えれば、パフォーマンスの重要さは自明だとは思う。

ところで、PHPのセッション情報はファイルにシリアライズされて保存されるんでしょ。
明示的に廃棄しなかったら、ずっと残ってしまうの?誰か教えて。
0857nobodyさん2007/12/17(月) 11:28:29ID:???
セッションを使えば、それだけで設計を面倒くさくさせる
0858nobodyさん2007/12/17(月) 11:32:00ID:???
ログイン情報のセッションIDと
書き込みのセッションIDと
IDが、かぶらないようにしないといけない
それだけで手間だよ!
0859nobodyさん2007/12/17(月) 11:32:50ID:???
>>858
意味がわからない。
0860nobodyさん2007/12/17(月) 11:36:05ID:???
>>859
セッションの変数名が同じじゃないように管理しないといけない
セッション使う数が増加するほど、変数の重複管理が面倒
チームで作業しにくくなる
0861856,8592007/12/17(月) 11:41:06ID:???
>>860
自分はセッション情報をクラス化して、セッション名は一つだけしか使用しないようにしてる。
0862nobodyさん2007/12/17(月) 11:49:31ID:???
>>861
1つのセッションに誇大なデータが入ってるということは
その誇大なデータを常に持ってページ移動するんだから
かなりメモリの無駄使いだね
0863nobodyさん2007/12/17(月) 11:52:50ID:???
工エエェェ(´д`)ェェエエ工
0864856,8592007/12/17(月) 11:57:48ID:8ZC8+hJ8
>>862
バラバラにすればパフォーマンス上がるの?

確認はしてないけど、キャッシュファイルはセッション単位で作られるとすれば、$_SESSIONに対して
複数のキーを使用して分割しても、シリアライズに掛かる負荷は変わらない気がするんだけど。
0865nobodyさん2007/12/17(月) 12:03:42ID:???
>>864
キャッシュファイルはセッション単位でつくられるから
ばらばらにしないと
キャッシュファイル容量は大きくなるよ
セッションを取り出すときに大容量のキャッシュファイルを読むわけだから
その分、負荷がかかるよ
0866nobodyさん2007/12/17(月) 12:06:31ID:???
結局セッションは掲示板スクリプトには必要ないでFA???
0867856,8592007/12/17(月) 12:07:24ID:8ZC8+hJ8
>>865
$_SESSION は、複数のキーを持っていても、それらのキー全体で一つのセッションでしょ?

仮に、キー毎にキャッシュファイルが作られているとしたら、ファイルI/Oの負荷の方が問題。
(多分、PHPはそんな実装されていないと思うが)
0868nobodyさん2007/12/17(月) 12:07:31ID:???
簡単にいうと
ログを1つのファイルで管理するより
日付順にわけて複数ファイルで管理した方が負荷が少ない
0869nobodyさん2007/12/17(月) 12:11:11ID:???
セッションを分けてで管理しないと必要ないデータまで取ってくるじゃん
0870nobodyさん2007/12/17(月) 12:11:37ID:???
そうすると全部読み込むとき、ファイルの読み込み時間がかからない?
0871nobodyさん2007/12/17(月) 12:17:29ID:???
ひとつの大きいファイルを開くほうが断然時間がかかる
ひとつのファイルを開くのにプロセスが1つ必要
単純に考えても分割してある複数ファイルを開くことは
複数プロセスで処理させるマルチスレッドと同じことなので早い
0872nobodyさん2007/12/17(月) 12:18:34ID:???
ベンチマークを要求する
0873856,8592007/12/17(月) 12:20:08ID:8ZC8+hJ8
>>869
セッションを分けるというのは、一つのセッションを複数のキー値で管理するという意味だよね?

マニュアルには、一つのファイルとして生成されるとあるから、多分、参照していないキーの値も
メモリ中に展開してると思うけど。まさかキー毎にファイルアクセスしないだろうし。

http://www.php.net/manual/ja/ref.session.php
>結びついている情報に関わらずセッション毎にひとつのファイルが生成されます。
0874nobodyさん2007/12/17(月) 12:26:37ID:???
クラス管理しようが結局はキーの重複管理しないとダメてことじゃん
0875nobodyさん2007/12/17(月) 12:29:59ID:8ZC8+hJ8
そもそもキー名として一つしか使用しないし、それを使って $_SESSION にアクセスするクラスは一つだけだから、
全然問題ない。実際、$_SESSIONに対しては $_SESSION['user'] 以外使用してない。
0876nobodyさん2007/12/17(月) 12:36:03ID:???
>>861
セッション名は一つだけしか使用しないって、どういうこと?
キー名のこといってるの?
0877nobodyさん2007/12/17(月) 12:38:44ID:8ZC8+hJ8
>>876
そうです。
0878nobodyさん2007/12/17(月) 13:05:21ID:???
キー名の重複とか言ってる人はさ、取り決めとか規約とかないの?
prefixつけたりモジュール名をつけたりとかさ。
それぞれが勝手に$_SESSIONに突っ込んでるなんて怖すぎ。
0879nobodyさん2007/12/17(月) 13:19:10ID:8ZC8+hJ8
>>878
コピペプログラマがセッションのキー名をそのままにしてしまうというのはありがち。
同じキー名が使用されているのが異常なのかどうかは、機械的には判断しにくいし。
0880nobodyさん2007/12/17(月) 13:19:36ID:Z/SeTUpd
<form enctype="multipart/form-data" method="post" action="index.php">
<input type="file" name="up">
<input type="submit" value="送信"><br>
</form>

このコードを利用してファイルをアップロードした場合、
参照時に指定した絶対パスをサーバー側で取得、再表示することは可能でしょうか?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=41339&forum=12&start=0
同じ目的のためにJavaを用いると解決出来るようなのですが、PHPではどのようにすれば可能か教えて下さい。
よろしくお願いします。

0881nobodyさん2007/12/17(月) 13:31:54ID:???
>>880
Javascript で document.フォーム名.up.value にアクセスすれば、パス名が取得できないかな?
onSubmit で hidden パラメータにでも設定して渡せば PHP側でも取得できる気がする。

できたら教えて。
0882nobodyさん2007/12/17(月) 13:35:12ID:???
パスなんてなんに使うんだよw
0883nobodyさん2007/12/17(月) 14:51:47ID:???
セッションてさこの流れからいうと使い道ないってことじゃん
0884nobodyさん2007/12/17(月) 14:54:01ID:???
セッション使えば楽な時もあるし、そうでない時もある。
臨機応変にいこうぜ
0885nobodyさん2007/12/17(月) 14:58:04ID:vIqFWs9L
画像ファイルにPHPスクリプトを仕込まれてサーバにアップロードされた時、
この画像ファイルからスクリプトを取り除く、または無害化するときの処理で質問です。

1.画像をバイナリとして開く
↓
2.開いたら画像ファイルの中身をで<?phpと?>を置換して消しさる
↓
3.いじったこの画像ファイルを保存する


この流れ、またはこれだけで十分でしょうか?
0886nobodyさん2007/12/17(月) 15:16:55ID:???
>>885
バイナリだしなぁ、
消し去るんじゃなくて、同じ桁のビットで埋めた方が安全じゃないかなぁ。
0887nobodyさん2007/12/17(月) 15:20:40ID:BlMrBpea
データベースに22:15:00という形で時刻のデータが入ってるとき、
時(22)と分(15)をそれぞれ別個に取得したいんですが、
どういう関数を使ったらいいんでしょうか? すみません、お願いします
0888nobodyさん2007/12/17(月) 15:26:03ID:???
$hoge = getdate();
echo $hoge[hours] , $hoge[minutes] , $hoge[seconds];
0889nobodyさん2007/12/17(月) 15:37:40ID:???
>>887
DB側で用意されてる関数を使う
explodeを使う
strtotimeとdateとかstrptimeを使う
08908892007/12/17(月) 15:39:24ID:???
あ、strptimeは違ったスマン
0891nobodyさん2007/12/17(月) 15:43:46ID:8ZC8+hJ8
>>885
これって本質的には PHPスクリプトを実行可能なディレクトリを制限すべきものだよね。
ただ設定方法は自分も知らない。知ってる人居たら教えて。
0892nobodyさん2007/12/17(月) 15:52:29ID:???
>>891
engine offでいける
http://jp.php.net/manual/ja/ref.apache.php#ini.engine
08938872007/12/17(月) 15:55:28ID:BlMrBpea
>>889
出来ました! explode便利だなぁ 助かりました
>>888
ありがとう 勉強になりました
0894nobodyさん2007/12/17(月) 15:56:23ID:8ZC8+hJ8
>>892
ありがとう。こんなのがあったのか。
考えてみると、ファイル置くだけで実行できちゃうって怖いな。
0895nobodyさん2007/12/17(月) 16:08:00ID:???
phpコードが仕込まれてますよ.jpg
でも外から実行できちゃうの?
08968882007/12/17(月) 16:08:16ID:???
>>893
あーごめん、時刻のデータからの取得か。
0897nobodyさん2007/12/17(月) 16:21:21ID:???
>>886
その方法を取り入れてみます。
>>892
なるほど勉強になりました。
0898nobodyさん2007/12/17(月) 16:21:27ID:8ZC8+hJ8
>>895
自分の認識が間違ってたっぽい。
>>885 の対応は、そのサーバ自身を守るのが目的じゃないんだな。なんか奥が深い。

http://d.hatena.ne.jp/teracc/20070715#1184515587

0899nobodyさん2007/12/17(月) 17:34:31ID:???
明確な対処法ってのがないよな
0900nobodyさん2007/12/17(月) 19:24:12ID:???
他のホストにユーザがアップロードしたファイルをincludeするって
どういう状況だ??俺にはわからん。
0901nobodyさん2007/12/17(月) 20:08:08ID:???
画像アップローダのこと?
0902nobodyさん2007/12/17(月) 20:21:01ID:???
URLで指定して読み込めるように設定してあればの話じゃないの
09038982007/12/17(月) 20:33:33ID:???
改めて読んだら、なんだか良くわからん。
>>885が対応したいのは、自分が>>898で書いたようなことでは無いのかな。

どうして>>885は 画像ファイル中のphpタグを外したいんだろう。
0904nobodyさん2007/12/17(月) 20:45:46ID:4quWNqrX
http://www.phppro.jp/news/304
これを読んだのですが、イマイチ理解できません。

$obj1 = new Test_class;
$obj2 = $obj;
$obj3 =& $obj;
$obj4 = clone $obj;

これらの違いってなんですか?
内部的にどうなってるのか教えて下さい。

参考になるURLでもいいので、よろしくお願いします。
0905nobodyさん2007/12/17(月) 20:55:21ID:???
>>904
http://jp2.php.net/manual/ja/langref.php
0906nobodyさん2007/12/17(月) 22:21:21ID:MrXYi2D3
PHPで以下のようなHTTP レスポンスを返したいのですが、
どのように記述したらよいでしょうか?
よろしくご教示のほど、お願いいたします。

HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 3
<CR><LF>
OK<LF>
0907nobodyさん2007/12/17(月) 22:22:42ID:???
>>906
header();
0908nobodyさん2007/12/17(月) 22:26:08ID:???
>>907
嘘レス乙
0909nobodyさん2007/12/17(月) 22:28:13ID:???
嘘ではないだろ。親切ではないが。

とりあえず、>>906 はマニュアルぐらいは読まないと。
http://jp.php.net/manual/ja/function.header.php
0910nobodyさん2007/12/17(月) 22:41:51ID:???
某所からのコピペ
休み時間ヒマだったので、上司のパソコンに

「せんじつは」→「先曰は」
「けっさん」→「抉算」
「ねんどまつ」→「年度未」
「しゃちょう」→「杜長」
「おくえん」→「憶円」

などを辞書登録しておいた。
どうやらまだバレていないようだ。
0911nobodyさん2007/12/17(月) 22:54:12ID:???
>>910
ひどすぎるwwwwwwwww
09129062007/12/17(月) 23:04:47ID:MrXYi2D3
回答いただきありがとうございます。
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 3
上記の3行は、header()にて出力することはわかったのですが、
<CR><LF>
OK<LF>
上記の2行は、どのようにしたらよろしいでしょうか?
header()でよいのでしょうか?
よろしくご教示ください。
0913nobodyさん2007/12/18(火) 00:00:28ID:???
>>906=908
0914nobodyさん2007/12/18(火) 00:14:17ID:???
教えてGooで
\r\n
OK\n
0915nobodyさん2007/12/18(火) 05:04:43ID:UAiWi55+
1週間以上待っているのですが、
お答え頂けるのか、無理なのか、だけでもお答え頂けませんか?

他のQ&Aに質問しようにも出来ないのでお願いします!!
0916nobodyさん2007/12/18(火) 05:12:16ID:???
誰だよお前
0917nobodyさん2007/12/18(火) 05:41:31ID:UAiWi55+
>>916
おいおい忘れたのかよ。24年前、渋谷のマクドナルドで生き別れた眞理子だよ。
0918nobodyさん2007/12/18(火) 06:35:13ID:???
お、おまえ・・・
0919nobodyさん2007/12/18(火) 07:02:38ID:???
>>912
ヘッダーと本文の間には自動的に\r\nが入るから
echo "OK\n";
だけでいい
09208802007/12/18(火) 08:32:35ID:31/C79f0
>>881
遅くなりましたがありがとうございます。
JavaScriptについて明るくなく色々試し続けてるのですが、document.フォーム名.up.valueでパスを取得することは出来ました。
しかしJavaScript内で利用することは出来るみたいですが、Formとの関連付けができません。
そのプロパティをFormのOnSubmitに設定した場合、フォーム送信後PHP側で取得出来る関数はあるのでしょうか?
input hiddenのvalueに直接設定できればいいんですが、プロパティは無理なようですね。
>>880のリンク先にあるよう確認ページに用いたいので、何か取得方法があればよろしくお願いします。
0921nobodyさん2007/12/18(火) 09:50:37ID:BXvnHaJk
よくphpの参考書を見てると、DBと接続する処理の部分で、
if(!$cnn){echo "接続に失敗しました";}
みたいなエラー時に吐き出すメッセージを書いてありますけど、
現実的にはそんなメッセージ出しても利用者としては困るだけだと思います
管理者としてはどう対応したらいいんですか?
エラーが発生したときに管理者あてに通知メールを出す処理とかが必要なのか?
と、思うんですが、、皆さんどうされてるんですか? 
まともな商用サービスじゃそうなってるの?
(というか、同一ハード上のDBに接続できないなんてそんなに起こるものでしょうか?)
phpのテクニカルな質問じゃなくてすみません
0922nobodyさん2007/12/18(火) 09:54:13ID:???
>>920
適当に作ってみた。試したら、IE7/FireFox2 だと正常だけど、opera だとフルパスで取れない。
多分 operaでは無理。

<html><head><meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" /></head>
<body>
<?php print_r($_POST); ?><hr/>
<form enctype="multipart/form-data" method="post" action="test.php" onSubmit="this.path.value=this.up.value;return true;">
<input type="file" name="up"/>
<input type="hidden" name="path"/>
<input type="submit"/>
</form>
</body>
0923nobodyさん2007/12/18(火) 09:59:06ID:BXvnHaJk
>>880
以下みたいな感じじゃダメだったですか?
function getPath(){//パスを取得する処理
document.fm.hidinp.value=取得したパス;
}
<form><input type="hidden" value="javascript:getPath"></form>

?? アップロードする画像のPC上でのパスがほしいんですか?
0924nobodyさん2007/12/18(火) 10:10:27ID:???
>>923
話がそれるけど、value に javascriptって書けるの?
試したところ、FireFox2 では動作しないっぽい。

というか、これが可能だったらセキュリティホールになる気がする。
0925nobodyさん2007/12/18(火) 10:13:22ID:???
デタラメだなww
0926nobodyさん2007/12/18(火) 10:17:47ID:???
あ、わけわからんこと書いてました 923は無視
function getPath(){
document.fm.path.value=document.fm.image.value;
}
<input type="file" name="image" onchange="javascript:getPath()">
<input type="hidden" name="path">
これじゃだめだったかなぁ こんな感じでやってた気がする
質問の意味取り違えてたらすみません
>>924できないみたいですね 今試しました ウソついてすみませんw
0927nobodyさん2007/12/18(火) 10:34:29ID:O4OXReDX
pdoを使うとSQLインジェクションの危険性が減るって書いてあったけれど、どうしてですか?
また、PDOの中にサニタイジングをするメソッドって無いのですか?
0928nobodyさん2007/12/18(火) 10:46:00ID:???
ほんとに下らない質問ばかりで非常によろしい!
0929nobodyさん2007/12/18(火) 10:56:41ID:???
pdoはPHPライブラリではなく
c/c++でつくられたExtensionだからじゃね?
レス数が900を超えています。1000を超えると表示できなくなるよ。