【PHP】下らねぇ質問はID出して書き込みやがれ 76
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/13(木) 04:15:32ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0067nobodyさん
2008/11/15(土) 07:24:50ID:???HTMLのformタグを使ってデータの受け渡しを行います。
action属性で指定してるファイルにデータを渡します。
ここではoutput.phpというファイルを指定してます。 method
属性ではデータを送る際の送信方法を指定します。post
とはURLとは別にデータを送る方法です。
↑ここの部分が間違ってる。
<form action="input.php"
↑ここ。inputでなくてoutputだから。
でもなぜかそのすぐ上の元のソースでは
ちゃんとoutputってなってるところがなぞ。
0068nobodyさん
2008/11/15(土) 08:59:21ID:oW2TcjIKじゃあ、input.htmlと、output.phpの2つのファイルをドコのフォルダに置きましたか?
なんつーか、この辺がよくわかんないんですよね。
つまり、PHPの影響が及ぶエリアと、及ばないエリアがあると思うんです。
>>67
それは僕も思いました。
0071nobodyさん
2008/11/15(土) 10:02:28ID:???0072nobodyさん
2008/11/15(土) 12:17:12ID:???初心者が陥りやすい問題だよね。
htmlのファイルはクリックしたらダメなのよ。
あくまでブラウザ操作が基本。
ブラウザにhttp://localhost/root/input.htmlと入れるのが正解
(ちなみにrootはアパッチのconfファイルで設定した所ね)
ファイルをダブルクリックで開くとwindowsのディレクトリが表示されてしまう
(C:/root/input.html)
こうなると次にPHPファイルを開いてもアパッチでなくwindowsがテキストとして開いちゃうんだよね。
0073nobodyさん
2008/11/15(土) 12:39:59ID:2pgE9K6yパイプを使って得た文字列に改行がありません。
コマンドプロンプトで表示させると
ラーメン 名詞,*,ラーメン
うまい 形容詞,*,うまい
と表示されるのに
パイプで取得すると
ラーメン 名詞,*,ラーメンうまい 形容詞,*,うまい
と改行無しになってしまいます。パイプで改行を得るにはどうすればよろしいですか?
0075nobodyさん
2008/11/15(土) 12:55:15ID:???http://pc11.2ch.net/test/read.cgi/pcnews/1226550324/
0076nobodyさん
2008/11/15(土) 17:15:47ID:???0077nobodyさん
2008/11/15(土) 17:32:56ID:???0078nobodyさん
2008/11/15(土) 17:33:18ID:nBA7qJcqfor($i=0, $j=strlen($char); $i < $j; $i++)
$binary .= substr(printf("%08b", ord(substr($char,$i,1))) ,0,-1);
echo strlen($binary);
といった感じのソースで、$charをバイナリにしてその後いろいろと処理をしたいと思っているのですが、
strlenで0しか返ってきません。
なぜなのでしょうか?
0079nobodyさん
2008/11/15(土) 17:40:18ID:iYDkBqcl$var=(int)$var;
って横にデータ型の名前入れたカッコってこれどういう意味?
0080nobodyさん
2008/11/15(土) 17:43:58ID:???008263
2008/11/15(土) 18:03:29ID:oW2TcjIK> ブラウザにhttp://localhost/root/input.htmlと入れるのが正解
> (ちなみにrootはアパッチのconfファイルで設定した所ね)
これで解決しました、どうもありがとうございました。
あと、もう1つ教えて欲しいのですが、
僕はrootをphpフォルダに設定しています。
で、そのフォルダの中にrep2(2チャンビュアー)を入れてます。
で、http://localhost/php/rep2/とブラウザに入れると、rep2が立ち上がります。
この場合、ブラウザはrep2フォルダのどのファイルを最初に読みに行くのでしょうか?
0083nobodyさん
2008/11/15(土) 18:35:21ID:???そんなものはapacheの設定次第だが、普通はindex.htm index.html index.phpくらいだな
008463
2008/11/15(土) 18:40:26ID:oW2TcjIKありがとうございます。実際、index.phpというファイルがありました。
0085nobodyさん
2008/11/15(土) 18:53:10ID:???0086nobodyさん
2008/11/15(土) 18:55:55ID:???一般的には、
(1)index.html
(2)index.htm
(3)index.php
などの順番で、上から順に探していく。
そして、そのファイルがあったら、表示する。
0087nobodyさん
2008/11/15(土) 18:56:59ID:???つまり、「ありそうな名前のファイル」で、手当たり次第に
アクセスをかけて、ファイルがあったら勝手にキャッシュされてしまう。
0088nobodyさん
2008/11/15(土) 19:17:45ID:2pgE9K6yカウンターが1増える時と2増える時があることに始めて気がつきました。
1時間位考えて、やっと+2の発生条件が分かったんだけど原因が分かりません。
発生するのは
http://localhost/hoge.htm/aaa
のようにファイル以下に何か文字列を付けた場合です。
http://localhost/hoge.htm や http://localhost/hoge.htm?text=aaaの場合は発生しません。
もちろんカウンターのスクリプトには+1としか書いてないので
なぜ+2になるのか分からないのですYO!
で、推測なんですがhttp://localhost/hoge.htm/aaaのようにアクセスした場合
アパッチが2度読み込んでいるのではないかと思いました。
試しに
$kaisuu=file("test.log");//空のログファイルを開く
if($kaisuu[0] == ""){
$kaisuu = 1;
} else {
$kaisuu += 1;
}
//この後$kaisuuをtest.logに書き込む
と書いて$kaisuuをプリントしたら2が表示されてしまいます。
ちなみにファイル構成は下記の通りです。
アクセスする主のファイル hoge.htm
そしてその主ファイルの中でカウンターがあるファイルhoge.incをインクルードしています。
解決策がある人いませんか?
0089nobodyさん
2008/11/15(土) 19:19:01ID:???009063
2008/11/15(土) 19:23:33ID:oW2TcjIKrequire_once './conf/conf.inc.php';
require_once P2_LIB_DIR . '/filectl.class.php';
という記述があります。
上は、ルートの/conf/conf.inc.phpをrequireする
で、理解出来るのですが、
下が理解出来ません。
実際、C:\php\rep2\libフォルダにfilectl.class.phpというファイルはあります。
この、「P2_LIB_DIR .」の記述にはどういう意味があるのでしょうか?
0091nobodyさん
2008/11/15(土) 19:24:01ID:???0092nobodyさん
2008/11/15(土) 19:31:36ID:???最初にrequireしているconf.inc.phpの中をよく見ればいいよ
phpの初心者本くらいは手元においておいた方がいいと思うぞ
009363
2008/11/15(土) 19:33:01ID:oW2TcjIKってことは、ファイルfilectl.class.phpをP2_LIB_DIRに置き換える、ということですか?
その辺のことはマニュアルのどこに書いてあるのでしょうか?
↓には書いてありません。
http://php.benscom.com/manual/ja/function.require-once.php
0094nobodyさん
2008/11/15(土) 19:35:24ID:???0095nobodyさん
2008/11/15(土) 19:37:25ID:???初めて知った。
クラックツールとか脆弱性監査ツール紛いの挙動だなw
0096nobodyさん
2008/11/15(土) 19:40:39ID:???conf.inc.phpをP2_LIB_DIRで検索。
そこで使われてる関数をマニュアルで調べる。
009763
2008/11/15(土) 19:46:34ID:oW2TcjIKはい、やってみました。 そうすると、
require_once P2_LIB_DIR . DIRECTORY_SEPARATOR . 'p2util.class.php';
というのが出て来ました。
これはどういう意味なのでしょうか?
0098nobodyさん
2008/11/15(土) 19:47:20ID:???009963
2008/11/15(土) 19:49:12ID:oW2TcjIK↑をみると、require_once 関数の変数(?)は1つしかない。
なのに、↓は変数(?)が3つもある。
これが意味不明なのです。
require_once P2_LIB_DIR . DIRECTORY_SEPARATOR . 'p2util.class.php';
010063
2008/11/15(土) 19:51:57ID:oW2TcjIK0101nobodyさん
2008/11/15(土) 19:52:27ID:???0102nobodyさん
2008/11/15(土) 19:54:43ID:???他にもあるだろ。もっと検索しろ。
もういい、自分で勉強する気がないようだから解答。
どっかで
define('P2_LIB_DIR', 'C\hogehoge');
みたいに宣言されてる。defineをマニュアルで引け。
. は文字列の連結演算子だ。演算子の項を読んで来い。
P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'なら確かに3つの文字列だが、
P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'を「つなげたもの」はひとつの文字列だ。
0103nobodyさん
2008/11/15(土) 19:56:20ID:???もう一度言う
最初にrequireしているconf.inc.phpの中をよく見ればいいよ
よく見て中になんて書いてあるか自分で調べて、それでも分からなければ
そこを引用して質問してくれ
あまりにも周りの書き込みをちゃんと読み解けていない
0104nobodyさん
2008/11/15(土) 19:59:31ID:???ほんとに腐った根性してる
010563
2008/11/15(土) 20:03:23ID:oW2TcjIK> P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'を「つなげたもの」はひとつの文字列だ。
なるほど、色々、宣言したものをつなげてるわけだ。 なんとなく理解出来ました。
0107nobodyさん
2008/11/15(土) 20:23:30ID:???買った本は肥やしにもなっていないことが容易に想像される
010863
2008/11/15(土) 20:26:06ID:oW2TcjIK↑では、require_once()となっています。
しかし、↓には()がありません。
ということは、「あらゆる関数で()を省略していい」というルールなのでしょうか?
あるいは、「require_once()関数のみ()を省略していい」というルールなのでしょうか?
require_once './conf/conf.inc.php';
0109nobodyさん
2008/11/15(土) 23:39:35ID:???0110nobodyさん
2008/11/16(日) 00:07:50ID:???0111nobodyさん
2008/11/16(日) 00:10:31ID:???0112nobodyさん
2008/11/16(日) 00:14:17ID:???011363
2008/11/16(日) 00:35:00ID:???ありがとうございます。
話は変わり、
<html>
<body>
<?php
$sWeek = date("l");
$sDisp = "今日は英語で言うと" . $sWeek . "よ!";
print $sDisp;
?>
</body>
</html>
を
day.phpで保存すると、表示されるのですが、day.htmlでは表示されません。
これを、day.htmlで表示させるにはどんなソースにすればいいのでしょうか?
0114nobodyさん
2008/11/16(日) 00:53:44ID:???AddType application/x-httpd-php .html
に設定変更してapacheを再起動してみそ
0115nobodyさん
2008/11/16(日) 00:55:29ID:???011763
2008/11/16(日) 05:55:48ID:TeIkZlvH011863
2008/11/16(日) 06:06:46ID:TeIkZlvHA:
ディレクトリの区切り文字は、Windowsで「\」ですが、Linuxなどでは「/」が使用されています。
つまり、
"dirname" . DIRECTORY_SEPARATOR . "filename";
と書いた場合、
Windows環境では、dirname\filenameとなり、
Linux環境では、dirname/filenameとなるのです。
で、いいですか?
011963
2008/11/16(日) 06:43:03ID:TeIkZlvHQ:__FILE__とは何ですか?
A:
http://php.benscom.com/manual/ja/language.constants.predefined.php
ここに、
__FILE__ ファイルのフルパスとファイル名。インクルードされるファイルの 中で使用された場合、インクルードされるファイルの名前が返されます。 PHP 4.0.2 以降では __FILE__ は常に絶対パスで、シンボリックリンクは解決されます。
と書いてあります。
つまり、dirname(__FILE__)はインクルードされてるファイルの置かれているフォルダ名を返します。
で、いいですか?
0120nobodyさん
2008/11/16(日) 07:00:02ID:???気持ち悪いからマニュアルは
http://jp.php.net/manual/ja/
http://jp2.php.net/manual/ja/
のどっちかを参照してくんない?
012163
2008/11/16(日) 07:09:41ID:TeIkZlvH$sWeek=date("l");
$sDisp="今日は英語で言うと".$sWeek."よ!";
print $sDisp;
?></body></html>
この場合、
print $sDisp;
でも、
print$sDisp;
でも、
エラーにならずに表示されますねw
012263
2008/11/16(日) 07:14:46ID:TeIkZlvHググったら↑のページがヒットしたのです。
>>120
じゃあ、↑のページに相当するページは、↓ではどこになるのか教えて下さい。
あと、そのページに、あなたが、どうやって行き着いたか?も教えて下さい。
http://jp.php.net/manual/ja/
0123nobodyさん
2008/11/16(日) 07:25:26ID:???同じマニュアルだろ
ただ上は非公式のミラーサイト
だから本家で参照しろと>>120は言いたいんだろ
ドメインが違うだけだからあとは基本的に同じだ
http://jp.php.net/manual/ja/language.constants.predefined.php
マニュアルの使い方は使ってるうちにそのうち覚える
最初のうちは気にしないことだ
疑問を持つのはいいことだが
いちいち出てくる疑問に大していちいち人に聞いてたら
いつまでたっても先に進まないよ
とりあえず細かいことを気にせず前へ進め
012463
2008/11/16(日) 07:30:21ID:TeIkZlvHhttp://jp.php.net/manual/ja/
おお、どうもです。
つーか、あなたがどうやって、↑から↓にたどり着いたか?
を教えて欲しいのですが。
http://jp.php.net/manual/ja/language.constants.predefined.php
0125nobodyさん
2008/11/16(日) 07:43:30ID:???012663
2008/11/16(日) 08:32:44ID:TeIkZlvHhttp://jp.php.net/manual/ja/
つーか、『__FILE__』に疑問を持った人が、
どうすれば、↑から↓にたどり着けるのか?
という質問なのです。
http://jp.php.net/manual/ja/language.constants.predefined.php
012763
2008/11/16(日) 09:01:56ID:TeIkZlvHで、このauthorize()がわからんのです。
$_login->authorize(); // ユーザ認証
0128nobodyさん
2008/11/16(日) 10:04:55ID:???やってれば__FILE__が定数だなってことは自然とわかってくるわけで
長くやってるやつにそんな理由を聞いても返答に困るだけ
このスレをROMってるだけで相当力つくから独学でやるならROMってるといいよ
そのうちなんとなくわかってくるから
0129nobodyさん
2008/11/16(日) 10:21:49ID:???0130nobodyさん
2008/11/16(日) 11:19:20ID:???カウンターが+2になる原因が分かりましたので一応報告しておきます。
http://localhost/hoge.htm/aaaではなく
http://localhost/hoge.htm/////////////aaaのように滅茶苦茶深く入れてみると
IEの一番下の枠に複数のURLが高速で表示され、たった一回のアクセスでカウンターが1000位増えました。
そのURLが出た箇所が原因だった様です。
<noscrpt>
<iframe src=hogehoge.html>
</noscrpt>
と記載していたのですがどうやら自分がアクセスした層とhogehoge.htmlの層が違う場合は
リフレッシュして何度も読み込んでる様です。
よってhttp://localhost/hoge.htm/aaaの時は
<iframe src=../hogehoge.html>
となるように修正し解決しました。
0131nobodyさん
2008/11/16(日) 11:53:15ID:qwIcjEj2・全部よむ
・検索する
どちらでもたどり着けます。検索する方がすぐ見つけられるけど、
一度全部読んでみるといいね!
検索の仕方がわからないんなら、教えてあげるからまた質問してね。
>>127
わからないことを、みんながわかるように書いてね。
0132nobodyさん
2008/11/16(日) 12:06:52ID:???>>89
>>131
>>98
どんな世界でも使用法も読まないで分からないと質問するのは最も嫌われる行為。
君の怠惰のせいでどれだけ他人に迷惑かけた?
特にこのスレでは>>1にも書いてある。>>1も読まないのね。
0134nobodyさん
2008/11/16(日) 12:14:36ID:???0135nobodyさん
2008/11/16(日) 16:32:17ID:???PHPが実行されるようにアパッチを改造するのって
セキュリティ的に、少し危険な行為なんじゃないの?
0136nobodyさん
2008/11/16(日) 16:33:21ID:???0137nobodyさん
2008/11/16(日) 16:35:53ID:???アホなコードを書けばすぐPHPが実行されてしまう考え方が、
と思ったけど、そんな状態なら拡張子がphpだろうがhtmlだろうが、関係ない気もする。
013863
2008/11/16(日) 18:30:34ID:TeIkZlvH> 検索の仕方がわからないんなら、教えてあげるからまた質問してね。
おお、有り難うございます。
では、フォルダの中に、サブフォルダもある。
その中に沢山の.phpファイルがある。
その多数のファイルの中から、authorizeの文字列を探したい。
この場合、どうすればいいのでしょうか?
014063
2008/11/16(日) 18:43:46ID:TeIkZlvHそうですか、有り難うございます。
0141nobodyさん
2008/11/16(日) 20:50:14ID:???php ver: PHP Version 5.2.6
cronで定期的にasahi.comから天声人語だけ抜き取って自分にメールを送るのと、
バックアップとしてその日の日付の名前でテキストファイルに保存するphpを作ったんですけど
cronが実行すると
cron daemonからメールで
PHP Warning: flock() expects parameter 1 to be resource, boolean given ...
PHP Warning: fputs(): supplied argument is not a valid stream resource in ...
PHP Warning: flock() expects parameter 1 to be resource, boolean given in ...
PHP Warning: fclose(): supplied argument is not a valid stream resource in ...
と返ってき、テキストファイルももちろん作成されておらず、どうも
function write($filename, $input)
{
$input=serialize($input);
$fp=fopen($filename,"w");
flock($fp, LOCK_EX);
fputs($fp, $input);
flock($fp, LOCK_UN);
fclose($fp);
}
というファンクションのfopenの戻り値がfalseでかえってきてるみたいなんですけど
自分でブラウザでそのphpを実行すると問題ないんです、ちゃんとファイルもその日の日付のタイトルで内容も保存されます
どうしたらcronで定期的にやってくれるように問題可決できるんでしょうか?教えてください。
0143nobodyさん
2008/11/16(日) 21:04:25ID:???いいんじゃあ
0144141
2008/11/16(日) 21:31:12ID:wBVwAFbgすみませんでした sageチェックはずしわすれてました。
>>143
cronでの実行ラインは/usr/bin/php ファイルパスで、
端末で実行するとメールと同じ内容のエラーメッセージがでてきますね・・・
で、ファイルも作成されずです。
コマンドラインじゃエラーになってブラウザだと通るって、なんでですかね?
0145nobodyさん
2008/11/16(日) 21:43:23ID:???0146nobodyさん
2008/11/16(日) 22:17:07ID:???ここの、「PHP エディタのリスト」ってリンクをクリックすると
エラーになるな。単純ミスか?
こんなことだから
PHPプログラマーは低脳だってバカにされるんだ
014763
2008/11/16(日) 22:24:57ID:TeIkZlvH> cronで定期的にasahi.comから天声人語だけ抜き取って自分にメールを送るのと、
> バックアップとしてその日の日付の名前でテキストファイルに保存するphpを作ったんですけど
それ、面白そうですね。
規模でいうと何行ぐらいのphpなんですか?
0148nobodyさん
2008/11/16(日) 22:44:08ID:???>>144
コマンドラインで実行するとエラーが出るのはたまに経験あるな。
大抵、環境変数とかPHP側の設定とかが原因だった気がするが。
0149141
2008/11/16(日) 23:05:52ID:wBVwAFbg50行ちょい
苦戦したといえば
自分は携帯にメールしてるため、
携帯で見れるための文字コード変換がややこしかった
>>148
やっぱり、PHP側の設定ですか
いや、今の箱の前に使用してたfedora7の箱だったら正常に作動してたから
phpのコーディングミスではないと確信だったので
0150nobodyさん
2008/11/16(日) 23:05:59ID:???ソース書くのが楽しくてPHPやってんのに。
0151nobodyさん
2008/11/16(日) 23:12:55ID:???015263
2008/11/16(日) 23:27:27ID:TeIkZlvH> 50行ちょい
どうもです。少ないですね。 よかったらソースを晒して下さい。
0153nobodyさん
2008/11/16(日) 23:43:59ID:???015463
2008/11/16(日) 23:57:20ID:TeIkZlvH0155nobodyさん
2008/11/17(月) 00:12:42ID:uO1yzOV4015663
2008/11/17(月) 00:15:17ID:DKgH+i/40157nobodyさん
2008/11/17(月) 00:18:36ID:???ここのPHPマニュアルわかりやすい
0158nobodyさん
2008/11/17(月) 00:25:34ID:???0161nobodyさん
2008/11/17(月) 03:59:05ID:???貪欲に知識を吸収しようとする姿勢がカッコイイと思ってる。
アップルに感化されやすいタイプ。
マインドマップとか描いちゃうタイプ。
でも致命的にバランス感覚に欠けている。
身の周りの中では達観してるほうだと自分では思ってるが
そのままなら1,2年もすれば煙たがられるようになる。
なんかしらんけどムカつくわ ハゲ!!
0162nobodyさん
2008/11/17(月) 04:07:56ID:uO1yzOV4書き込みしている途中で
書き込み処理が完了していない状態で
誰かが同時に読み込みすると、中途半端な
書き込み途中のデーターを読み込んでしまって、
それで壊れるの?
016363
2008/11/17(月) 04:19:43ID:VEc9l7C00164nobodyさん
2008/11/17(月) 05:31:37ID:???0165141
2008/11/18(火) 01:56:19ID:V5bkwf3L$filepath="dat/tensei_".date("Ymd").".dat";
if(!file_exists($filepath))
{
$handle = fopen("http://www.asahi.com/paper/column.html","r");
if($handle)
{
while(!feof($handle))
{
$buffer=fgetss($handle);
$buffer = mb_convert_encoding($buffer, "SJIS", mb_detect_encoding($buffer));
}
fclose($handle);
}
$content=$buffer[68];
write($filepath, $content);
}
else
$content=load($filepath);
あとは$contentをmail関数かなんかでメールしたってください
0166141
2008/11/18(火) 01:58:29ID:V5bkwf3Lfunction load($filename)
{
$fp=fopen($filename,"r");
flock($fp, LOCK_SH);
$array=fread($fp, filesize($filename));
flock($fp, LOCK_UN);
fclose($fp);
$array=unserialize($array);
return $array;
}
■ このスレッドは過去ログ倉庫に格納されています