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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/02/05(日) 22:35:34ID:sf8bx52D
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/

過去スレは>>2
0951nobodyさん2006/02/23(木) 23:53:06ID:???
できる
0952nobodyさん2006/02/24(金) 00:42:35ID:???
.htaccessの仕事っぽい
0953nobodyさん2006/02/24(金) 02:01:19ID:???
extractの話題が良く出てますけど、
$hoge = $_POST['hoge'];
をextractを使って表現するとどのように書けばいいのでしょうか?
特に何もしないとXSSの原因になるそうなので、
わからないうちは使うつもりはありませんが、気になるので・・・
0954nobodyさん2006/02/24(金) 02:13:43ID:???
>>953
extract ($_POST);
$hoge == $hoge;
0955nobodyさん2006/02/24(金) 02:30:53ID:???
>>953
extract($_POST, EXTR_SKIP);

extract($_POST, EXTR_PREFIX_ALL, "post");
のどっちかかな。
$hoge = $_POST['hoge'];相当なのは前者。
後者は$post_hoge = $_POST['hoge'];相当。
0956nobodyさん2006/02/24(金) 02:36:19ID:???
>>954
どうもありがとうございます。
早速実行してみたところ、
ちゃんと$hoge = $_POST['hoge'];と同じになりますね。
便利ですねえ。
どういう危険性があるか理解できるまで使わないことにします。
ひとつ謎が解けました。ありがとうございました。
0957nobodyさん2006/02/24(金) 02:38:49ID:???
>>955
レスしてる間にレスがorz
詳しくありがとうございます。
値もいろいろと指定できるんですねー
早速値に関してどういったものか調べてまいります。
0958nobodyさん2006/02/24(金) 03:44:05ID:???
>>956
extractで展開していると
予期しない変数を書き換えられる危険がある。
例えばパスワードを$passに設定している場合に
hogehoge.com?pass=〜
でアクセスされ、これをextractで展開すると…。
↑はgetの場合だけれど
ローカルでフォームを書けばpostだって送りつけられるし。
0959nobodyさん2006/02/24(金) 03:59:26ID:???
>>956
>>826
0960nobodyさん2006/02/24(金) 04:00:42ID:???
>>958
見たいに
example.com?pass=5
しか想定しないでextractすると、下のURLみたいなアクセスをされた場合に大量に変な変数作られるのが危険て事?
example.com?pass=5&user=hoge&db=example.com

予期しない変数を大量に作られるのは気持ち悪いね
でも、プログラムの一番最初にextractすれば変数の内容は上書きされないような気もするけど・・
0961nobodyさん2006/02/24(金) 04:24:48ID:???
じゃあパスワードは定数にすればいいってことか!
0962nobodyさん2006/02/24(金) 06:38:31ID:???
引用
http://jp2.php.net/manual/ja/function.extract.php

警告
extract() をユーザー入力 ($_GET, ...) のような信頼できないデータについて使用しないでください。
もし行う場合、例えば register_globals を信頼しているような古いコードを一時的に実行したい場合、
EXTR_SKIP のような extract_type の値が上書きされていないことを確認してください。そして php.ini の
variables_order で定義されたものと同じ順で展開すべきであることに留意してください。

ま、他人のサーバがどうなろうが知ったこっちゃ無いが
0963nobodyさん2006/02/24(金) 07:41:52ID:???
>>960
>>826
0964nobodyさん2006/02/24(金) 08:35:07ID:???
掲示板のように入力させるようなデータはおとなしく、
$data=$_POST['data'];にしとけばいいってこと?
他人のスクリプト見ると、
extractを使うのが一般的だとか思っちゃうけど…
0965nobodyさん2006/02/24(金) 09:41:42ID:???
>>964
それだけ我々にとって「チャンス」があるということです。
フフフ・・・
0966nobodyさん2006/02/24(金) 10:14:36ID:???
>>964
>他人のスクリプト = Le●sPHP = 過去の遺物 = 諸悪の根源
0967nobodyさん2006/02/24(金) 10:24:28ID:???
extractをpostやgetに使わなければ全然問題ないじゃん
0968nobodyさん2006/02/24(金) 12:03:24ID:???
>>964
それは過去の遺物。
大昔(と言ってしまおう)のPHPがデフォルトでextractと同等のことを自動的にする仕様だったんで、
その頃からPHPで物作ってる人は互換性のためにextract使っちゃうのよ。
で、そういうプログラムって過去の実績は多数あるんで、さらに巷で大量に流布しちゃって
それを真似する素人プログラマがまた問題があるままパクって傷を広げてしまうんだな。
0969nobodyさん2006/02/24(金) 12:05:01ID:???
>>967
別にextract関数自体が問題あるって話ではないわな。
でもクエリーの展開以外にextractを使う人ってほとんどいないけどなw
0970nobodyさん2006/02/24(金) 12:09:34ID:???
>>964
具体的に誰のスクリプトだか名を上げて欲しい。
0971nobodyさん2006/02/24(金) 12:34:57ID:???
>>970
>>966
0972nobodyさん2006/02/24(金) 12:39:54ID:???
>>969
DBの出力に使ったりするとわりと便利だよ
0973nobodyさん2006/02/24(金) 12:52:58ID:VruGZZOM
PHPで作られてるサイト(SNSなど)のソースを落として
解析って出来ないのでしょうか?
0974nobodyさん2006/02/24(金) 12:59:26ID:???
>>971≠>964でしょ?
とりあえず本人がどこのサイトのソースを見て思ったのか、
それが知りたい。
0975nobodyさん2006/02/24(金) 13:07:03ID:???
>>973
ソース公開していれば可能
0976nobodyさん2006/02/24(金) 14:56:56ID:j/2+6+fN
PHP5で、<input type="image" src="">のフォームボタンでPOSTの値が
取得できなくて困っています。GETは取得できます。
<input type="submit">だと、POST/GET両方普通に取得できます。
09779732006/02/24(金) 15:05:59ID:???
>>975
どうやるんすか?
0978nobodyさん2006/02/24(金) 15:22:12ID:???
>>977
ソースダウンロードしてマニュアルとにらめっこ
0979nobodyさん2006/02/24(金) 15:29:01ID:???
>>976
nameっていらないんだっけ?
09809732006/02/24(金) 15:32:05ID:???
>>978
おお、なるほど。本当にソースダウンロードしてって感じですね。
大きいサイトでソースを公開しているところって殆どないですよね?
SNSなどでソース公開しているところってご存知?
0981nobodyさん2006/02/24(金) 15:40:10ID:???
systemとかexecでcalc.exeを実行し電卓をだした後画面を消したいのですが
実行処理の後にwindow.closeとか書いても電卓が消されないと下の処理に移動しません。
system("calc.exe > /dev/null &")
とかもやったのですがこっちは電卓が画面に表示されませんでした。
どうすればよいのでしょうか?
0982nobodyさん2006/02/24(金) 15:43:23ID:???
>>981
君には、VBが良いと思ふ
0983nobodyさん2006/02/24(金) 17:15:42ID:aTqN8USg
2時間ググりましたが答えに辿りつきませんでした…

外部のサイトを読み込み、文字コードを変換して出力したいのですが
どうしてもエラーの表示が出てしまいます。
多分、とてつもなく馬鹿な事をしているのだと思いますが…
この場合、どのようにしたら良いのでしょうか?
ヒントだけでも頂けたら幸いです。

下記、エラーが出たもの

<?php
$max =30;//MAX件数

$arr = file("http://pc8.2ch.net/php/subback.html");
$lines = $arr;
$lines = mb_convert_encoding($lines, "UTF-8");

for($i = 0; $i < $max; $i++)
echo $lines[$i];

?>

0984nobodyさん2006/02/24(金) 17:17:39ID:???
>>983
エラーが出てるならどんなエラーが出たかくらい書かないと怒られちゃうよ。
09859832006/02/24(金) 17:20:12ID:???
WebProg板のスレタイ一覧になっていますが、
実際のものは<html><head><meta>系タグを抜いた、
<li><a>テキスト</a></li>\n
といった固定の形式のものが並んでいるのみです。(読み込み先はSJIS)

>>984
すみません。
phpのエラー表示ではなく、
なぜか一言、白い画面に「Array」と出るのみです
0986nobodyさん2006/02/24(金) 17:33:56ID:???
それエラーじゃないじゃん
$lines[$i]が配列なだけ
変数がどういう値もってるのかいろんなとこでvar_dump()してみろよ
0987nobodyさん2006/02/24(金) 17:58:16ID:???
>>983
>$lines = mb_convert_encoding($lines, "UTF-8");
ここがおかしい。 mb_convert_encoding()がパラメータに
どのような型を取りうるのか確認。
0988nobodyさん2006/02/24(金) 18:05:03ID:???
>>983
2時間も何を検索してたん
<?php
$max =30;//MAX件数

$lines = file("http://pc8.2ch.net/php/subback.html");
//$lines = $arr;
//$lines = mb_convert_encoding($lines, "UTF-8");

for($i = 0; $i < $max; $i++)
echo mb_convert_encoding($lines[$i], "UTF-8", "sjis");

?>
0989nobodyさん2006/02/24(金) 18:22:03ID:???
>>987の所でエラーが出ないって事は、表示しない設定になっていそうだ
0990nobodyさん2006/02/24(金) 20:11:38ID:???
>>989
確かにNoticeがでるな
$lines = mb_convert_encoding($lines, "UTF-8");
Notice: Array to string conversion in ****.php on line *
0991nobodyさん2006/02/24(金) 20:13:31ID:???
>>983
1行目に、

error_reporting(E_ALL);

を記述しておきましょう。デバッグに役立ちます。
0992nobodyさん2006/02/24(金) 20:14:43ID:???
>>980
XOOPSなどいかがでしょうか。
SNSとは違いますが。
0993nobodyさん2006/02/24(金) 21:03:11ID:???
Let'sPHPってダメダメなのか〜
他にいい資料置いてるとこない?
0994nobodyさん2006/02/24(金) 21:29:00ID:???
ttp://www.spencernetwork.org/
こことか・・・
0995nobodyさん2006/02/24(金) 21:32:10ID:???
>>993
>>1
0996nobodyさん2006/02/24(金) 21:55:52ID:???
スペンサーって誰だよ
09979832006/02/24(金) 22:04:04ID:???
質問しておきながらレスが遅くなりました

>>986-991
皆さん本当にありがとうございます。
自分はまだforの扱いすらあやふやな所があり論外なレベルなので
皆さんのレス保存して、根っこから勉強しつつやってみます。
ありがとうございました。
09989832006/02/24(金) 22:07:26ID:???
お礼もかねて次スレ立てときました。
どこか間違ってたらごめんなさいね

【PHP】下らねぇ質問はここに書き込みやがれpart17
http://pc8.2ch.net/test/read.cgi/php/1140786348/l50
0999nobodyさん2006/02/24(金) 22:12:15ID:???
>>998
おまえ・・・使える奴だな。
がんばれよ。乙
1000nobodyさん2006/02/24(金) 22:13:27ID:???
どう見てもくだらないです。
本当にありがとうございました。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。