【PHP】下らねぇ質問はここに書き込みやがれ 39
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/02/12(月) 20:33:59ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0611nobodyさん
2007/02/19(月) 02:47:59ID:???すみません。説明が悪くて。
>>610
>../secret.txt
試してみました。で、これは大丈夫でした。404エラーになりました。
ディレクトリまで指定して、ファイル名だけをGETのパラメータにしているので、
大丈夫だと思っていますが、イタズラが結構多いので心配しています。
0612nobodyさん
2007/02/19(月) 02:52:04ID:???あらかじめファイル名のリスト用意しておくとか
0613nobodyさん
2007/02/19(月) 02:53:05ID:???いや、パスで指定してるんだから404は関係ない。
URLエンコードしたのでこれで試してみて。
test.php?fileName=%2e%2e%2fsecret%2etxt
0614nobodyさん
2007/02/19(月) 02:54:24ID:???0615nobodyさん
2007/02/19(月) 03:09:46ID:???> いや、パスで指定してるんだから404は関係ない。
確かに!!そうですね。
> URLエンコードしたのでこれで試してみて。
> test.php?fileName=%2e%2e%2fsecret%2etxt
ははは、駄目でした。見つかっちゃいました。
>>612
> 心配だったらファイル名正規表現でチェキするとか、
なるほど、そうしたら、.htaccessで↓のように書きました。
RewriteRule ^([a-z0-9]+)\.php\?fileName=([a-z0-9\.]+)$ $1.php?fileName=$2
RewriteRule ^([a-z0-9]+)\.php\?fileName=(.+)$ /404.htm
↑これで、動作的にも上のような問題にも対応できそうですが、
他に問題点などありますか?
0616nobodyさん
2007/02/19(月) 03:17:37ID:???を正規表現でチェックしろってことだろ?
".."を含んでる場合はあぶないよな?
あと、ブラックよりホワイトチェックのがよい
0617nobodyさん
2007/02/19(月) 03:25:42ID:???何か良い方法ないでしょうか??
$fp = fsockopen($host, 80, $errno, $errstr, 30);
while(!feof($fp)){ $line .= fgets($fp); }
fclose($fp);
0618nobodyさん
2007/02/19(月) 03:26:12ID:???0619nobodyさん
2007/02/19(月) 03:35:59ID:???> $_GET["fileName"]
> を正規表現でチェックしろってことだろ?
あ、確かに。このパラメータ限定で.も入らないようにチェックします。
> あと、ブラックよりホワイトチェックのがよい
すみません、これで最後ですが、この「ホワイトチェック」ってどういう意味でしょうか?
googleで「ホワイトチェック」でも「ホワイトチェック php」でも「ホワイトチェック プログラム」でも、
検索してみたのですが、ホワイトチェック「柄」のページばかり引っ掛かってしまってみつかりませんでした…
0620nobodyさん
2007/02/19(月) 03:42:46ID:???http://www.pursue.ne.jp/jouhousyo/sysad/kaihatu/test/test02.html
0622nobodyさん
2007/02/19(月) 03:55:19ID:???普通にそのページは違くね?
<?php
$allowFileList = array('ok.txt', 'ok2.txt', 'ok.swf');//許可するファイルのリスト。(ホワイトリスト)
$fileName = $_GET['fileName'] || array();
if (in_array($fileName, $allowFileList)) {//ここ。
//処理
} else { die('不正なファイル名です。';) }
?>
OKなファイル名に一致してるかチェック。
0623間違えた
2007/02/19(月) 03:56:27ID:???↓
$fileName = $_GET['fileName'] || '';
0624nobodyさん
2007/02/19(月) 04:12:48ID:???なるほど、確かにその方が安全な実装ですね。
「ホワイトリスト」も初めて聞いた。
色々勉強になりました!ありがとぉ!
0625nobodyさん
2007/02/19(月) 04:13:17ID:???0626nobodyさん
2007/02/19(月) 05:29:54ID:???$_GET["filename"]
このGETの値が自分のURLからきたかどうかチェックするにはどうしたらいい?
0628617
2007/02/19(月) 07:28:18ID:???0630虚弱PHP
2007/02/19(月) 10:08:08ID:???基本的にCSRF対策と同じになるから、
CSRFで検索してみるといいと思うよ。
セッション&ワンタイムトークン使えばいい。
0631nobodyさん
2007/02/19(月) 11:24:08ID:???小数点が発生する場合は、切り上げではなく切り捨てに
する場合、どういう設定にしたらいいのでしょうか?(6.6でも6にする)
0632nobodyさん
2007/02/19(月) 11:33:04ID:???0634588
2007/02/19(月) 12:17:06ID:???あ、すいません。
凡ミスでした。
ただ、やはりうまくいきません
preg_match('/(.*)_.*\.php/', $File, $match){
の行について↓のエラーがでてしまいます
Parse error: parse error, unexpected '{'
>>594
全てのechoが実行されてしまうのは>>588の書き方です。
紛らわしくて吸いません
0635nobodyさん
2007/02/19(月) 12:31:05ID:???0636nobodyさん
2007/02/19(月) 12:36:53ID:???そのエラーメッセージを穴の空くほど見つめてみろ。答えが書いてある。
親切なエラーメッセが出てるのに、なぜ自分でそれを見て考えずに質問丸投げするのだお前は。
>>635
アホ。配列だよ。
0638616
2007/02/19(月) 13:04:41ID:???〜リストは一般的だが、概念としてはリストに限らんだろ
ブラック:通してはいけないものをチェックしてクリーンにする
ホワイト:通してよいものをチェックしてクリーンにする
どっちがより安全かはわかるよな
0639nobodyさん
2007/02/19(月) 13:10:28ID:kbGuwf2q■1番目
if($a==1){
echo"正解";
}else{
echo"不正解";
exit;
}
■2番目
if($a!=1){
echo"不正解";
exit;
}
echo"不正解";
やってる内容は同じですが一番目と二番目の書き方でどちらが妥当でしょうか?
0640nobodyさん
2007/02/19(月) 13:15:56ID:???俺だったら
result = "不正解";
if($a==1){
result = "正解";
}
echo result;
だな。途中にどんな条件が加わってもOKだからメンテしやすい。
0641nobodyさん
2007/02/19(月) 13:26:50ID:kbGuwf2q0642nobodyさん
2007/02/19(月) 13:47:28ID:???$result = array("不正解","正解");
if( $a==1 ) {
$result[$a];//正解
} else {
die($result[$a]);//不正解
}
0643nobodyさん
2007/02/19(月) 14:01:42ID:???switch($a){
1:echo '正解';break;
default: echo '不正解';break;
}
exit;
0644nobodyさん
2007/02/19(月) 14:07:20ID:???echo $a==1 ? "正解":"不正解";
ってのもありじゃない?
0645nobodyさん
2007/02/19(月) 14:12:26ID:???メンバ変数の宣言(var $var;)を行わなくても
特に問題なくスクリプトは動作します。
宣言することにはどういった意味があるんでしょうか。
0647nobodyさん
2007/02/19(月) 14:15:46ID:???ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい>>636!!
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
0648nobodyさん
2007/02/19(月) 14:17:08ID:???一人でも引き継いだりするときあるならちゃんとやっとくのがマナー
0649nobodyさん
2007/02/19(月) 14:29:12ID:???>>634の事例におけるpreg_matchの返値がboolだと言い張る超チンカスくんwww
最近こういう基地害が増えて困るね。
0651nobodyさん
2007/02/19(月) 14:41:53ID:???下スレだからまぁ許してあげなよ
まぁできればマニュアルと過去ログくらいは見てもらえたら嬉しいけどね
誰か下スレwikiとか作ってくれないかなw
0652nobodyさん
2007/02/19(月) 14:43:04ID:???0653nobodyさん
2007/02/19(月) 14:43:50ID:???0654nobodyさん
2007/02/19(月) 15:19:26ID:QDcNnbeDここを参考に apache 2.0.59, php4.4.4 をインストールしたんですが
phpinfo.php を表示しようとするとソースコードがブラウザにそのまま表示されます。
上のサイトに出ている事だけしかやってないわけですが、
どこら辺が問題かわかりますか?
OSはWindowsXP
0655nobodyさん
2007/02/19(月) 15:25:44ID:???ここを見てからきなさい
http://pc10.2ch.net/test/read.cgi/php/1167984858/
0656nobodyさん
2007/02/19(月) 15:25:44ID:???AddType application/x-httpd-php-source .phps
を追加してない。もしくは追加はしたがApacheの再起動をしてない。
0658nobodyさん
2007/02/19(月) 17:02:13ID:???0661nobodyさん
2007/02/19(月) 17:11:20ID:???0662nobodyさん
2007/02/19(月) 17:18:43ID:???というスレがsageられてるのにあがっているのは仕様ですが?
0665nobodyさん
2007/02/19(月) 17:36:43ID:???0670665
2007/02/19(月) 19:22:01ID:???0673nobodyさん
2007/02/19(月) 19:58:09ID:aXeEKgI5構築の仕方が載っている本かサイトを教えてください
0674nobodyさん
2007/02/19(月) 20:18:37ID:???0675nobodyさん
2007/02/19(月) 20:20:30ID:???バリュコマとかA8とか登録して設計パクったほうがはやそう。
0676nobodyさん
2007/02/19(月) 20:23:34ID:aXeEKgI5どっかにサイトがないでしょうか?
0677nobodyさん
2007/02/19(月) 20:34:35ID:???エラーが出るたびにexitして処理止めるとHTMLを最後まで読まないからいやなんだよな。
でも、
エラーがあるたびにexitすると処理が読みやすいんだよな
0678nobodyさん
2007/02/19(月) 20:57:40ID:???パクるかそれが難しければアフィリエイトの本(アフィで儲ける用の本でも)
買ってきて仕組みを理解して設計すればいい。
設計しちゃえばPHPで作ろうが何で作ろうが同じでしょ。
0679nobodyさん
2007/02/19(月) 21:00:53ID:???すでにあるアフィリサービスを自分で使ってみて、
それでもクローンを作れないレベルなら、どちらにしろ実力不足。
お前には100年早いから諦めろ。
で、そんなのが載った本があるわけないだろ。
お前みたいな他力本願のチンカスに、たかだが2000円かそこらの本でノウハウ教えるわけがない。
システム制作を請け負えばそれで100万円単位でお金もらえるんだから。
0680nobodyさん
2007/02/19(月) 21:01:25ID:???いきなりPHP言語勉強するとあれだよな
0681nobodyさん
2007/02/19(月) 21:06:56ID:???素人が、アフィのような金に関わるシステムを作るのは止めとけ。
業務システムを何件か構築した経験がないと辛いぞ。
それらしいものが出来ても、後々大変なトラブルになりかねない。
0683nobodyさん
2007/02/19(月) 21:10:11ID:???0684nobodyさん
2007/02/19(月) 21:28:37ID:???「出会い系サイト作って金と女でウハウハしようぜ」と言ってきた
今時出会い系サイトでそんな夢見れないことを言い出せなかったから承諾した
死にたい
0685nobodyさん
2007/02/19(月) 21:29:44ID:???0686676
2007/02/19(月) 21:39:44ID:aXeEKgI5アフィリエイト的な事は組み込むけど
>>681のような事態にならないために
システム自体はなるべく簡易化して
トラブルの発生率を下げようかと思います。
0687nobodyさん
2007/02/19(月) 21:47:12ID:???0688676
2007/02/19(月) 21:53:11ID:aXeEKgI5と言うのは冗談で、動作テストしてからやりますよ。
0689nobodyさん
2007/02/19(月) 21:59:31ID:???0690nobodyさん
2007/02/19(月) 21:59:59ID:???0691nobodyさん
2007/02/19(月) 22:04:02ID:ycTIkwVfトラブルってのはな、テストではわからなかった問題が発覚するからこそトラブルなんだよ。
0692588
2007/02/19(月) 22:05:45ID:???できました^^
穴があくほどみつめてもわからなかったけど、手当たり次第にやったらなんとか。
<?php
preg_match('/(.*)_.*\.php/', $File, $match);
switch ($match[1]){
case 'top':
echo 'トップ';
break;
case 'und':
echo 'アンダー';
break;
default:
echo 'その他';
}
?>
アドバイス頂いた皆さんThanks
0693nobodyさん
2007/02/19(月) 22:06:09ID:???お前のレベルがどの程度あるのか分からないから説明のしようがない。
今までの書き込みから推測するレベルだと。
無理だからやめとけ。
0695nobodyさん
2007/02/19(月) 23:18:22ID:kbGuwf2q0696nobodyさん
2007/02/19(月) 23:40:02ID:???デフォルトでアクセス禁止、リストに載ってるものだけ許可する。
対してブラックリストはアクセスを禁止するリスト。
デフォルトで誰でもアクセス許可、リストに載ってるものだけ禁止する。
0697nobodyさん
2007/02/19(月) 23:40:57ID:???Deny=ブラック
でおk?
0698nobodyさん
2007/02/19(月) 23:48:49ID:???思ってるんですけど
ttp://hiromasa.zone.ne.jp/documents/xampp_eclipse04.html
ここでひっかかります。
403になります
上のやり方で本当にできるんでしょうか?
0699nobodyさん
2007/02/19(月) 23:56:14ID:???ありがとうございました。
ソース元がわかりました。
日本のPHP本家のPDFを拝見しましたことを記しておきます。
0701nobodyさん
2007/02/20(火) 00:09:49ID:???* + 巛 ヽ
〒 ! +
+ 。 | |
* + / / +
∧_∧ / /
(´∀` / / +
,- f
/ ュヘ | *
〈_} ) |
/ ! +
./ ,ヘ |
ガタン ||| j / | | |||
―――――――――――――
それがWebProg板クォリティ―
0703nobodyさん
2007/02/20(火) 00:16:05ID:???バーチャルホストの設定でないの
>>689
ttp://www.atmarkit.co.jp/flinux/rensai/apache08/apache08a.html
0706nobodyさん
2007/02/20(火) 00:46:27ID:???> イィィヤッッッッホオォォォー
>
> * + 巛 ヽ
> 〒 ! +
> + 。 | |
> * + / / +
> ∧_∧ / /
> (´∀` / / +
> ,- f
> / ュヘ | *
> 〈_} ) |
> / ! +
> ./ ,ヘ |
> ガタン ||| j / | | |||
> ―――――――――――――
> それがWebProg板クォリティ―
すみません、チンチンが描かれていないのですが。
ディテールまでしっかりとお願いします。
0709nobodyさん
2007/02/20(火) 02:55:38ID:G1OnfDcXfgetsを使って一行一行読んで抽出する仕組みで、特定の文字列(この場合はend)が来たらその文字列は抽出せずに
処理を終了したいと考えています。
while (!feof($fp)) {
$line = fgets($fp);
$flag = 0;
if (preg_match("/^<h3>/",$line)){
echo $line;
while ($flag == 0) {
$line = fgets($fp);
echo $line;
if (preg_match("/^end/",$line))
{
$flag = 1;
break;
}
}
}
if ($flag == 1){
break;
}
}
これだとendと言う文字を含む行も抽出してしまいます。何かいい方法は無いでしょうか?
0710nobodyさん
2007/02/20(火) 03:01:49ID:???■ このスレッドは過去ログ倉庫に格納されています