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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/02/12(月) 20:33:59ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
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:???
>>607->>610
すみません。説明が悪くて。

>>610
>../secret.txt
試してみました。で、これは大丈夫でした。404エラーになりました。

ディレクトリまで指定して、ファイル名だけをGETのパラメータにしているので、
大丈夫だと思っていますが、イタズラが結構多いので心配しています。
0612nobodyさん2007/02/19(月) 02:52:04ID:???
心配だったらファイル名正規表現でチェキするとか、
あらかじめファイル名のリスト用意しておくとか
0613nobodyさん2007/02/19(月) 02:53:05ID:???
>>611
いや、パスで指定してるんだから404は関係ない。
URLエンコードしたのでこれで試してみて。
test.php?fileName=%2e%2e%2fsecret%2etxt
0614nobodyさん2007/02/19(月) 02:54:24ID:???
常套手段で普通にアウトなんだけどな。
0615nobodyさん2007/02/19(月) 03:09:46ID:???
>>613
> いや、パスで指定してるんだから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:???
$_GET["fileName"]
を正規表現でチェックしろってことだろ?
".."を含んでる場合はあぶないよな?
あと、ブラックよりホワイトチェックのがよい
0617nobodyさん2007/02/19(月) 03:25:42ID:???
fsockopen()でソケット接続後にbodyだけを抽出したいんですが、
何か良い方法ないでしょうか??

$fp = fsockopen($host, 80, $errno, $errstr, 30);
while(!feof($fp)){ $line .= fgets($fp); }
fclose($fp);


0618nobodyさん2007/02/19(月) 03:26:12ID:???
知識が偏ってる希ガスw
0619nobodyさん2007/02/19(月) 03:35:59ID:???
>>616
> $_GET["fileName"]
> を正規表現でチェックしろってことだろ?
あ、確かに。このパラメータ限定で.も入らないようにチェックします。

> あと、ブラックよりホワイトチェックのがよい
すみません、これで最後ですが、この「ホワイトチェック」ってどういう意味でしょうか?
googleで「ホワイトチェック」でも「ホワイトチェック php」でも「ホワイトチェック プログラム」でも、
検索してみたのですが、ホワイトチェック「柄」のページばかり引っ掛かってしまってみつかりませんでした…
0620nobodyさん2007/02/19(月) 03:42:46ID:???
>>619
http://www.pursue.ne.jp/jouhousyo/sysad/kaihatu/test/test02.html
0621nobodyさん2007/02/19(月) 03:50:08ID:???
>>619
ホワイトリスト
0622nobodyさん2007/02/19(月) 03:55:19ID:???
>>620
普通にそのページは違くね?

<?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'] || array();
↓
$fileName = $_GET['fileName'] || '';
0624nobodyさん2007/02/19(月) 04:12:48ID:???
>>620-623
なるほど、確かにその方が安全な実装ですね。
「ホワイトリスト」も初めて聞いた。
色々勉強になりました!ありがとぉ!
0625nobodyさん2007/02/19(月) 04:13:17ID:???
realpath()とdirname()使えば「特定ディレクトリ以下を許可」もできるね
0626nobodyさん2007/02/19(月) 05:29:54ID:???
もう1つ質問
$_GET["filename"]
このGETの値が自分のURLからきたかどうかチェックするにはどうしたらいい?
0627nobodyさん2007/02/19(月) 05:35:18ID:???
>>626
sessionを保持しているかでチェックするのが吉。努々リファラでやること勿れ
06286172007/02/19(月) 07:28:18ID:???
すみません、自己解決しました
0629nobodyさん2007/02/19(月) 08:46:59ID:???
>>624
その前に、もう一度ディレクトリ構成を考え直した方が良いのでは?
0630虚弱PHP2007/02/19(月) 10:08:08ID:???
>>626
基本的にCSRF対策と同じになるから、
CSRFで検索してみるといいと思うよ。
セッション&ワンタイムトークン使えばいい。
0631nobodyさん2007/02/19(月) 11:24:08ID:???
number_formatで小数点表示出来ますが、
小数点が発生する場合は、切り上げではなく切り捨てに
する場合、どういう設定にしたらいいのでしょうか?(6.6でも6にする)
0632nobodyさん2007/02/19(月) 11:33:04ID:???
floor
0633nobodyさん2007/02/19(月) 11:40:12ID:???
>>632
ありがとうございました。
06345882007/02/19(月) 12:17:06ID:???
>>593
あ、すいません。
凡ミスでした。
ただ、やはりうまくいきません

preg_match('/(.*)_.*\.php/', $File, $match){
の行について↓のエラーがでてしまいます
Parse error: parse error, unexpected '{'

>>594
全てのechoが実行されてしまうのは>>588の書き方です。
紛らわしくて吸いません
0635nobodyさん2007/02/19(月) 12:31:05ID:???
preg_matchの返値はboolじゃないの
0636nobodyさん2007/02/19(月) 12:36:53ID:???
>>634
そのエラーメッセージを穴の空くほど見つめてみろ。答えが書いてある。
親切なエラーメッセが出てるのに、なぜ自分でそれを見て考えずに質問丸投げするのだお前は。

>>635
アホ。配列だよ。
0637nobodyさん2007/02/19(月) 12:50:03ID:???
>>636
配列ww
06386162007/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:???
1番目だな。 $a==2だったらとかを加えるときに加えやすい。
俺だったら

result = "不正解";
if($a==1){
  result = "正解";
}
echo result;

だな。途中にどんな条件が加わってもOKだからメンテしやすい。
0641nobodyさん2007/02/19(月) 13:26:50ID:kbGuwf2q
ありがとうございます。メンテしやすさを考えて書いて見ます。
0642nobodyさん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だろ

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:???
PHP4にてクラスに初めて挑戦してるんですが、
メンバ変数の宣言(var $var;)を行わなくても
特に問題なくスクリプトは動作します。

宣言することにはどういった意味があるんでしょうか。
0646虚弱PHP2007/02/19(月) 14:15:02ID:???
>>645
メンバ変数じゃなくて、ローカル変数になってない??
0647nobodyさん2007/02/19(月) 14:15:46ID:???
       ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>636!!
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
0648nobodyさん2007/02/19(月) 14:17:08ID:???
グループで開発するときに変に中身を弄られたくないものに使うって感じ。
一人でも引き継いだりするときあるならちゃんとやっとくのがマナー
0649nobodyさん2007/02/19(月) 14:29:12ID:???
>>635=>>637=>>647=PHPの公式マニュアルすら読めない基地害

>>634の事例におけるpreg_matchの返値がboolだと言い張る超チンカスくんwww
最近こういう基地害が増えて困るね。
0650nobodyさん2007/02/19(月) 14:30:48ID:???
>>649
もちけつ。バカはスルーが基本。
0651nobodyさん2007/02/19(月) 14:41:53ID:???
>>649
下スレだからまぁ許してあげなよ
まぁできればマニュアルと過去ログくらいは見てもらえたら嬉しいけどね

誰か下スレwikiとか作ってくれないかなw
0652nobodyさん2007/02/19(月) 14:43:04ID:???
お前、必死だなw
0653nobodyさん2007/02/19(月) 14:43:50ID:???
作った奴は広告で稼ぐだろうw
0654nobodyさん2007/02/19(月) 15:19:26ID:QDcNnbeD
ttp://2php.jp/php/install_php_windows.html
ここを参考に apache 2.0.59, php4.4.4 をインストールしたんですが
phpinfo.php を表示しようとするとソースコードがブラウザにそのまま表示されます。
上のサイトに出ている事だけしかやってないわけですが、
どこら辺が問題かわかりますか?

OSはWindowsXP
0655nobodyさん2007/02/19(月) 15:25:44ID:???
>>654
ここを見てからきなさい
http://pc10.2ch.net/test/read.cgi/php/1167984858/
0656nobodyさん2007/02/19(月) 15:25:44ID:???
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
を追加してない。もしくは追加はしたがApacheの再起動をしてない。
0657nobodyさん2007/02/19(月) 15:38:35ID:???
>>656
ありがとうございました。
phps が php になってましたorz
0658nobodyさん2007/02/19(月) 17:02:13ID:???
echoとprintって違うんだね。はじめてしった
0659nobodyさん2007/02/19(月) 17:05:47ID:???
>>659
おなじ
ばかだろ(プゲラ
0660nobodyさん2007/02/19(月) 17:10:22ID:???
>>659
0661nobodyさん2007/02/19(月) 17:11:20ID:???
おなじじゃないだろ。だいじょうぶか?
0662nobodyさん2007/02/19(月) 17:18:43ID:???
1: 【PHP】Lvうpしたいので宿題ください (191)
というスレがsageられてるのにあがっているのは仕様ですが?
0663nobodyさん2007/02/19(月) 17:21:48ID:???
>>662
マジレスすると全角な。
0664nobodyさん2007/02/19(月) 17:22:36ID:???
>>662
そういう仕様だから「しよう」がない。
ガハハハァァァ.........!
0665nobodyさん2007/02/19(月) 17:36:43ID:???
セッションのすばらしい書き方を教えてください。
0666nobodyさん2007/02/19(月) 18:02:09ID:???
>>659 >>661 >>662
自演すんなハゲ
0667nobodyさん2007/02/19(月) 18:51:13ID:???
>>666
そんなの気づいてるってみんな
0668nobodyさん2007/02/19(月) 18:55:22ID:???
>>665
マニュアル通り、仕様通りに書く。
0669nobodyさん2007/02/19(月) 18:59:49ID:???
>>668
もっと具体的にお願いします
06706652007/02/19(月) 19:22:01ID:???
すみません、自己解決しました
06716652007/02/19(月) 19:34:41ID:???
phpって習得が簡単なだけにある程度まで使える奴になったら
>>639みたいな単純な部分でどれだけ工夫できるかが勝負だよな
0672nobodyさん2007/02/19(月) 19:35:31ID:???
>>669
マニュアルに超具体的に書いてあるだろ。
0673nobodyさん2007/02/19(月) 19:58:09ID:aXeEKgI5
PHPでアフィリエイトプログラムを構築したいのですが
構築の仕方が載っている本かサイトを教えてください
0674nobodyさん2007/02/19(月) 20:18:37ID:???
金払って作ってもらえ
0675nobodyさん2007/02/19(月) 20:20:30ID:???
そんなニッチな本出てないだろ。
バリュコマとかA8とか登録して設計パクったほうがはやそう。
0676nobodyさん2007/02/19(月) 20:23:34ID:aXeEKgI5
A8とか見てみたんですけどいまいちよく分かりません
どっかにサイトがないでしょうか?
0677nobodyさん2007/02/19(月) 20:34:35ID:???
>>670
エラーが出るたびにexitして処理止めるとHTMLを最後まで読まないからいやなんだよな。
でも、
エラーがあるたびにexitすると処理が読みやすいんだよな
0678nobodyさん2007/02/19(月) 20:57:40ID:???
>>676
パクるかそれが難しければアフィリエイトの本(アフィで儲ける用の本でも)
買ってきて仕組みを理解して設計すればいい。
設計しちゃえばPHPで作ろうが何で作ろうが同じでしょ。
0679nobodyさん2007/02/19(月) 21:00:53ID:???
>>676
すでにあるアフィリサービスを自分で使ってみて、
それでもクローンを作れないレベルなら、どちらにしろ実力不足。
お前には100年早いから諦めろ。

で、そんなのが載った本があるわけないだろ。
お前みたいな他力本願のチンカスに、たかだが2000円かそこらの本でノウハウ教えるわけがない。
システム制作を請け負えばそれで100万円単位でお金もらえるんだから。
0680nobodyさん2007/02/19(月) 21:01:25ID:???
PHP使い慣れてくると他の言語がめんどくさくなってくる・・・・

いきなりPHP言語勉強するとあれだよな
0681nobodyさん2007/02/19(月) 21:06:56ID:???
>>676
素人が、アフィのような金に関わるシステムを作るのは止めとけ。
業務システムを何件か構築した経験がないと辛いぞ。
それらしいものが出来ても、後々大変なトラブルになりかねない。
06826762007/02/19(月) 21:08:52ID:aXeEKgI5
>>681
それでも、構築したいので
>>681さんが始めて構築して躓いたところがあれば教えてください。
0683nobodyさん2007/02/19(月) 21:10:11ID:???
基礎ができないのにいきなり応用はこれいかに
0684nobodyさん2007/02/19(月) 21:28:37ID:???
俺が友達にプログラム組めること言ったら友達に
「出会い系サイト作って金と女でウハウハしようぜ」と言ってきた
今時出会い系サイトでそんな夢見れないことを言い出せなかったから承諾した

死にたい
0685nobodyさん2007/02/19(月) 21:29:44ID:???
PHPとの連携のためにJavaScript覚えてるんだけど、若いころからやっときゃよかった。
06866762007/02/19(月) 21:39:44ID:aXeEKgI5
>>683
アフィリエイト的な事は組み込むけど
>>681のような事態にならないために
システム自体はなるべく簡易化して
トラブルの発生率を下げようかと思います。
0687nobodyさん2007/02/19(月) 21:47:12ID:???
トラブルが発生したときも2ちゃんで質問するんだろな、どーせw
06886762007/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
>>688
トラブルってのはな、テストではわからなかった問題が発覚するからこそトラブルなんだよ。
06925882007/02/19(月) 22:05:45ID:???
>>636
できました^^

穴があくほどみつめてもわからなかったけど、手当たり次第にやったらなんとか。

<?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:???
>>688
お前のレベルがどの程度あるのか分からないから説明のしようがない。
今までの書き込みから推測するレベルだと。

無理だからやめとけ。
0694nobodyさん2007/02/19(月) 22:38:50ID:???
>>688
取りあえず分からないところをハッキリさせてから又来てください。
0695nobodyさん2007/02/19(月) 23:18:22ID:kbGuwf2q
どこかのページでみたんですけどホワイトリストってなんですか?
0696nobodyさん2007/02/19(月) 23:40:02ID:???
アクセスを許可するためのリスト。
デフォルトでアクセス禁止、リストに載ってるものだけ許可する。

対してブラックリストはアクセスを禁止するリスト。
デフォルトで誰でもアクセス許可、リストに載ってるものだけ禁止する。
0697nobodyさん2007/02/19(月) 23:40:57ID:???
Allow=ホワイト
Deny=ブラック

でおk?
0698nobodyさん2007/02/19(月) 23:48:49ID:???
Eclipse + XAMPP で WordPress の開発環境を作ろうって
思ってるんですけど
ttp://hiromasa.zone.ne.jp/documents/xampp_eclipse04.html
ここでひっかかります。

403になります
上のやり方で本当にできるんでしょうか?
0699nobodyさん2007/02/19(月) 23:56:14ID:???
わかりやすい説明です。
ありがとうございました。
ソース元がわかりました。
日本のPHP本家のPDFを拝見しましたことを記しておきます。
0700nobodyさん2007/02/20(火) 00:01:42ID:???
>>698
ここでってどこでだよ氏ね
0701nobodyさん2007/02/20(火) 00:09:49ID:???
イィィヤッッッッホオォォォー

    *     +    巛 ヽ
               〒 !   +
         +    。  |  |
      *     +   / /   +
          ∧_∧ / /
         (´∀` / / +
         ,-     f
         / ュヘ    | *
        〈_} )   |
           /    ! +
          ./  ,ヘ  | 
    ガタン ||| j  / |  | |||
   ―――――――――――――
それがWebProg板クォリティ―
0702nobodyさん2007/02/20(火) 00:14:19ID:???
>>700
反応ありがとうございます。

httpd.confのところです
0703nobodyさん2007/02/20(火) 00:16:05ID:???
>>700
バーチャルホストの設定でないの

>>689
ttp://www.atmarkit.co.jp/flinux/rensai/apache08/apache08a.html
0704nobodyさん2007/02/20(火) 00:16:38ID:???
[まちがい]
>>689

[せいかい]
>>698
0705nobodyさん2007/02/20(火) 00:41:55ID:???
>>702
バーチャルホストの設定が間違ってると思われます
0706nobodyさん2007/02/20(火) 00:46:27ID:???
>>701
> イィィヤッッッッホオォォォー
>
>     *     +    巛 ヽ
>                〒 !   +
>          +    。  |  |
>       *     +   / /   +
>           ∧_∧ / /
>          (´∀` / / +
>          ,-     f
>          / ュヘ    | *
>         〈_} )   |
>            /    ! +
>           ./  ,ヘ  | 
>     ガタン ||| j  / |  | |||
>    ―――――――――――――
> それがWebProg板クォリティ―

すみません、チンチンが描かれていないのですが。
ディテールまでしっかりとお願いします。
0707nobodyさん2007/02/20(火) 01:12:57ID:???
>>703,705
ありがとうございました。

0708nobodyさん2007/02/20(火) 02:03:41ID:???
>>698
バーチャルホストの設定が間違えてるよきっと
0709nobodyさん2007/02/20(火) 02:55:38ID:G1OnfDcX
preg_matchを使って文章を抽出する仕組みを作っています。
fgetsを使って一行一行読んで抽出する仕組みで、特定の文字列(この場合は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:???
preg_match('/^end$/', rtrim($line))
■ このスレッドは過去ログ倉庫に格納されています