【PHP】下らねぇ質問はここに書き込みやがれ 32
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2006/11/06(月) 22:07:16ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0898889
2006/11/20(月) 23:20:34ID:efSEaAzMそ、そうだったんですか。。。
じゃあ、PHP自体もcygwinを使ってWindows用のではないPHPを入れなければ
いけないんですね?
0900889
2006/11/20(月) 23:33:46ID:efSEaAzM整っていなかったようですね。
0901nobodyさん
2006/11/20(月) 23:56:43ID:???PHPをCronで実行する方法が判らなくて困っています。
どなたかご教授下さい。Fedora5です。
0903nobodyさん
2006/11/21(火) 00:02:57ID:???0904nobodyさん
2006/11/21(火) 00:20:54ID:???#!/usr/local/bin/php
<?php
:
?>
みたいなスタイルで書いたスクリプト。
1行目でCLI(コマンドラインインターフェース)版としてインストールしたPHPのフルパスを書く。
0905nobodyさん
2006/11/21(火) 00:39:44ID:???/usr/local/bin/php スクリプトファイルのフルパス
って指定をするのもアリ。
これならスクリプトファイルのパーミッションを実行可にしなくてもOK
0906nobodyさん
2006/11/21(火) 00:43:56ID:+Nuu4hvhふと気付いたら鯖(Xserver)のスペックが以下の通りでした。
PHPバージョン 4.3.9 ( セキュリティパッチ適用済 )
MySQLバージョン 4.0.26
これって、自宅鯖や他の鯖を使わずにあくまでも今使ってるXserverでDBを利用するなら、
インストールし直してPHP4.3.9・MySQL4.0.26の環境でDBを作成しないと駄目なのでしょうか?(´・ω・`)
0907nobodyさん
2006/11/21(火) 00:59:00ID:???駄目ってことはないけど、どこが違うのか常に意識しとく必要はある。
初心者ならインストールし直して揃えといた方が無難。
0908nobodyさん
2006/11/21(火) 01:07:51ID:???何度もすみません;
#whereis phpとやったら
php: /usr/bin/php /etc/php.ini~ /etc/php.ini /etc/php.d /usr/lib/php
となったのでcrontabに
0,10,20,30,40,50 * * * * /usr/bin/php [対応スクリプトへのフルパス]
とやったものの10分経過しても更新されずでした・・・
service crond restartもやったのですが駄目でした('A`)
0909nobodyさん
2006/11/21(火) 01:16:42ID:???0910nobodyさん
2006/11/21(火) 01:18:54ID:+Nuu4hvh有難う御座います、インストールし直してチャレンジしてみます!
0911nobodyさん
2006/11/21(火) 01:29:05ID:???まずスクリプトが実行されたのかどうかを確認してみては?
スクリプトの先頭にファイルへのログ出力を入れてみるとか。
ちなみにコマンドラインで
/usr/bin/php [対応スクリプトへのフルパス]
を実行したらそれはちゃんと動くんだろうね?
特にカレントディレクトリには気をつけた方がいいよ。
試しにrootディレクトリ上で実行してみるといい。
0912nobodyさん
2006/11/21(火) 12:25:05ID:???$array = $this->$method();
}
こんな感じで因数内の文字列を使い、
メソッドを呼び出すと、エラーが出てしまいます。
Fatal error: Method name must be a string in
これはあきらめるしかないんでしょうか・・・
0913nobodyさん
2006/11/21(火) 13:04:27ID:???0914nobodyさん
2006/11/21(火) 13:06:16ID:???call_user_func()使えば。
あと因数でなく引数な。
0917nobodyさん
2006/11/21(火) 16:00:58ID:???0918nobodyさん
2006/11/21(火) 16:25:26ID:bLvv9/Lnfunction A() { }
function B() {
function C() { }
}
}
上記の場合、
B ( )の中からA ( ) を呼び出すには
$this->A()
ですが、
B ( )の中からC ( ) を呼び出すには
どう記述すればいいんでしょう???
0919nobodyさん
2006/11/21(火) 16:30:48ID:???B()をコールした時に普通にグローバル関数としてC()が定義されるはず
0921nobodyさん
2006/11/21(火) 17:28:27ID:???function dt ($method = 'select') {
$array = call_user_func(array($this, $method));
}
試してないから動かないかもしれないけど...
0923921
2006/11/21(火) 17:40:18ID:???シングルトンパターンで、クラス内でオブジェクトを生成するときなんかは
$class = __CLASS__;
return new $class();
みたいにすると楽チンだよな。
0924nobodyさん
2006/11/21(火) 17:46:22ID:???0925nobodyさん
2006/11/21(火) 18:02:58ID:???0926921
2006/11/21(火) 18:02:59ID:9jzN//PMとりあえず、$methodにnullぶちこんでも警告が出るだけでエラーにはならなくなる。
0928nobodyさん
2006/11/21(火) 18:41:14ID:???謎の不具合現象が発生し意図した動作をしない!どこだ、何だ!と
悩むことになるでしょう...。
0929nobodyさん
2006/11/21(火) 18:48:12ID:???プログラムを車にたとえば、
クラスはタイヤ、と表現してる本とかありますが、
それは関数も同じでは・・・?
単一関数で片付けられないようなものは
クラス、という認識を持ってるのですが間違ってますよね?
0930nobodyさん
2006/11/21(火) 18:53:51ID:???タイヤだとどちらでも良いイメージだな
0931nobodyさん
2006/11/21(火) 19:00:10ID:???0932nobodyさん
2006/11/21(火) 19:00:11ID:???0933nobodyさん
2006/11/21(火) 21:31:39ID:PV0heR9Q0934nobodyさん
2006/11/21(火) 21:33:20ID:???0935nobodyさん
2006/11/21(火) 21:43:54ID:???って書いてるんじゃないか?
0936nobodyさん
2006/11/21(火) 21:53:55ID:???0937nobodyさん
2006/11/21(火) 21:56:00ID:???jpgraphとかpearのimage_graphとかsparklineとか
0938nobodyさん
2006/11/21(火) 22:42:42ID:d5GN+nTA初期設定の段階なんですが<?php phpinfo(); ?>
がブラウザでそのまま表示されます。
どこが悪いんですか?
0939nobodyさん
2006/11/21(火) 22:44:12ID:???0940nobodyさん
2006/11/21(火) 22:54:35ID:???0942983
2006/11/21(火) 23:02:05ID:d5GN+nTAAddType application/x-httpd-php .php入ってます
0943nobodyさん
2006/11/21(火) 23:03:04ID:???0944983
2006/11/21(火) 23:06:58ID:d5GN+nTA0945nobodyさん
2006/11/21(火) 23:16:57ID:???0946nobodyさん
2006/11/21(火) 23:22:26ID:???format c:
0948nobodyさん
2006/11/21(火) 23:40:46ID:???0949nobodyさん
2006/11/22(水) 00:31:40ID:???うちはWindows使えない時だけだけど。。。
0950nobodyさん
2006/11/22(水) 00:37:30ID:???0951nobodyさん
2006/11/22(水) 02:16:11ID:3AXcb0+rセキュリティ上の不安があります。
たとえば、値が未入力であったり不正な場合
TOPページに飛ばしたいのですがどうすればよいでしょうか
0952nobodyさん
2006/11/22(水) 02:20:40ID:???header("Location: http://www.orenopage.com/top.html");
exit();
}
とか?
最近はこんなんもあるけど http://jp2.php.net/filter
0953nobodyさん
2006/11/22(水) 02:26:10ID:???0954nobodyさん
2006/11/22(水) 02:27:21ID:aJWjKYEf0956nobodyさん
2006/11/22(水) 02:34:50ID:3AXcb0+rわお ありがとうございます。未入力の場合はこれで解決しそうです。
あと、値にタグを入力された場合、表示が少しおかしくなるのですが
タグの無効化的なものはありますでしょうか
0957nobodyさん
2006/11/22(水) 02:45:46ID:???0958nobodyさん
2006/11/22(水) 05:40:34ID:???XSSとかわからないなら配布済みのスクリプト使えば
strip_tags()かhtmlspecialchars()もわからないのなら致命的だとおもうよ
0959nobodyさん
2006/11/22(水) 10:05:40ID:???WindowsXP/Apache2.0.58/PHP5.2.0 を自PCに入れ、Webアプリをぽちぽち作っているんですが
・php.ini側で"session.use_trans_sid = 0"にして、URLにもSIDを埋め込まず
・かつ、クライアント側で 全てのCookieを拒否、念のため全てのゾーンのセキュリティを'高'にしても
Cookie受け入れ拒否&URLに差し込んでもいないのに、セッションが成立してしまっています。
(ただセッション変数が引き継がれているからってセッションが成立してない、とか?あるんかなそんな事…)
これって何故なのでしょうか?
------------------以下テスト.phpソース------------------
<?
session_start();
if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0 ;}
$_SESSION['count']++;
?>
<html>
<body>
あなたは <?= $_SESSION['count'] ?> 回目の訪問です。
<a href="<?php echo $PHP_SELF ?>">カウントを増やす</a>
<?php
echo '<BR><BR>TEST<BR><BR>' . $PHPSESSID ;
?>
------------------以上テスト.phpソース------------------
.phpへのアクセスは ttp://localhost/***.php で行っています。
0960nobodyさん
2006/11/22(水) 10:09:16ID:???複数ブラウザを立ち上げて同時に前述の.phpにアクセスした時に
$PHPSESSIDは毎回違う値になってます。
%USERPROFILE%\Cookies\ 配下には(当然ながら)当該Cookieが存在しない…様に見えます。
ボスケテ。
0961nobodyさん
2006/11/22(水) 11:42:15ID:???0962nobodyさん
2006/11/22(水) 11:45:49ID:???アカウントか何かを発行しているサイトであればアカウントから割り当てるが
宜しいかと。
0963nobodyさん
2006/11/22(水) 11:46:57ID:???どうなってるのかみてみたら
ブラウザのURL入れるところに javascript:alert(document.cookie) と入れるとか
0964959
2006/11/22(水) 12:11:38ID:???ご教授ありがとうございます。
恥ずかしながら普通のクッキーとは別物の"セッションクッキー"なんてのがあるなんて知りませんでした。
確かに >>963 の scriptで見てみたら見事に $PHPSESSID=*********** が入ってました。
# これって単一のCookieファイルに保存されてるんじゃ無いですね。
また、Cookie関連設定全て拒否にしても >>959で書いた.phpにてカウンタが回っていたのは
.phpにアクセスする際に ttp://localhost/ にしていたからでした。
hostsに "(自IP) testtest.net" と記述、 ttp://testtest.net/***.php でアクセスしたらば
期待通りカウンタが常に1になる結果となりました。
お騒がせしてすみません…
セッションクッキーにSIDが入ってる即ちそれを読みとればハイジャック出来てしまうので
何かCookieにtokenでも入れて正当性を確保するロジックでも作ってきます。
>>961,962,963 、ありがとうございました。
0967nobodyさん
2006/11/22(水) 13:26:13ID:???__,,/ _, ----`ヽ :.
:. / _ ___ 、\
/ / i \ \\ :.
:. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ
,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :.
:. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
|i .i l :N_, -弋 \弌弋ナ:}:.:}
:. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な…
.| :メヽ.', `ozZ} izN。ハ::{ なんなんですか?
:. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこですか?
| :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであたし
:. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 貼られたんですか?
/ ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
:. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:.
/ / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ',
./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ',
{ /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ
ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧|
0968nobodyさん
2006/11/22(水) 13:47:29ID:???0969nobodyさん
2006/11/22(水) 14:16:54ID:???># これって単一のCookieファイルに保存されてるんじゃ無い
ん?
>.phpにアクセスする際に ttp://localhost/ にしていたから
んん??
>Cookieにtokenでも入れて正当性を確保する
んんん???
0970nobodyさん
2006/11/22(水) 15:08:02ID:???セッションクッキーは普通のクッキーだ
ワンセッション限りのクッキーはファイルには保存されない(オンメモリ)
0971nobodyさん
2006/11/22(水) 15:22:33ID:???この「ワンセッション限りの」の「セッション」(ブラウザのセッション)と
PHPの「セッション」の区別が付いてないやつは意味がわからないだろうね
0972nobodyさん
2006/11/22(水) 15:28:55ID:???0973nobodyさん
2006/11/22(水) 17:31:21ID:???> year
> 年。2 桁または 4 桁の値を指定可能で、 0-69 の間の値は 2000-2069 に、
> 70-100 は 1970-2000 にマップされます。 今日最も一般的なシステム、
> すなわち time_t が 32 ビットの符号付き整数である システムでは year
> として有効な範囲は 1901 から 2038 の間ですが、この制限は
> PHP 5.1.0 以降なくなりました。
ttp://jp.php.net/manual/ja/function.mktime.php
と書いてあるけど、
% uname -a
FreeBSD xxx.yyy.zzz 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #0: Fri Oct 6 13:59:46 JST 2006 [email protected]:/usr/src/sys/i386/compile/GENERIC i386
% php -v
PHP 5.2.0 (cli) (built: Nov 16 2006 17:47:45)
の環境で、
% php -r "echo mktime(0, 0, 0, 2, 1, 2038);"
としても値が返ってこないのですが・・・。
上記の引用部分はどういう意味ですか?
2038年1月19日までは値が返ってきます。
0974nobodyさん
2006/11/22(水) 17:33:24ID:???2005|bbbbbbbb|12345
2005|cccccccc|12345
2006|aaaaaaaa|12345
2007|aaaaaaaa|12345
みたいな感じのテキストファイルから、
2005の部分だけを取り出して表示するスクリプトを作りたいのですが、
(結果が下のようになるように)
2005|aaaaaaaa|12345
2005|bbbbbbbb|12345
2005|cccccccc|12345
fopenでこのテキストファイルを開いた後、
どういう処理を書けばいいのかわかりません。
どなたか使うべき関数とか手法などヒントいただけませんでしょうか?
0975nobodyさん
2006/11/22(水) 17:33:29ID:???そんなに怖いんなら、SSLにすべきだろう。
0976nobodyさん
2006/11/22(水) 17:43:01ID:???問題あるだろうけど、そうじゃないなら心配する必要ないわな。
>>975の言うとおり。
0977nobodyさん
2006/11/22(水) 17:58:30ID:???「値が返ってこない」ってのがどういう状態かよくわからんけど。
英語のマニュアル見ると、
the valid range for year is somewhere
between 1901 and 2038, although this limitation is overcome
as of PHP 5.1.0.
と、かいてあって、俺の読解力だと、
5.1.0以降、PHPでの制限はないんだけど、それにもかかわらず、
システム(OS?)によっては(システムの制限があって)2038年までしか
使えないんだよ、って書いてあるようにも読めますけど。
(5.1.0の前は、OSが対応しててもPHPがヘッポコで2038年までに
なっていたんでは)
ちなみにうちのLinuxだとこうなる。
$ php -r "echo mktime(0, 0, 0, 2, 1, 2038);"
-14462
$ php -v
PHP 4.3.10-16 (cli) (built: Aug 24 2005 20:25:01)
ここらへん、全然知らないんだけど、2038年以降は時間はマイナスになる、、、のでは? 違うん?
0978nobodyさん
2006/11/22(水) 18:01:34ID:???0981nobodyさん
2006/11/22(水) 18:05:51ID:???0982nobodyさん
2006/11/22(水) 19:05:54ID:Dl80shfxどなたか情報をお持ちで無いでしょうか?
0983nobodyさん
2006/11/22(水) 19:21:31ID:???値が返ってこないというのはそのままの意味で、何も表示されずにプロンプト(%)が
返ってきます。
システムに依存するのはいいんだけど、日本語マニュアルの書きっぷりでは
システムに関係なく2038年以降のタイムスタンプも取得できそうな気がしたので・・・
0984nobodyさん
2006/11/22(水) 19:29:30ID:???そもそも他の関数は返って来るの?
configureの問題もあるきがするしエラー表示しないようになっているオチでは??
0986nobodyさん
2006/11/22(水) 19:49:24ID:9Mp292iZwindowsでPHPを使用しているのですが、
ローカル環境で
<? include("../home/httpd/html/template/top.html"); ?>
の相対パスを
<? include("/home/httpd/html/template/top.html"); ?>
に変えて表示する事ってできるのでしょうか?
0987nobodyさん
2006/11/22(水) 19:50:24ID:???値が帰って来ないってフィルタアプリじゃねーんだからよ
0988nobodyさん
2006/11/22(水) 20:03:35ID:???何も表示されないのは改行コードが入ってないから
\nつけるかvar_dumpしたらfalseが返ってるはず
0990nobodyさん
2006/11/22(水) 20:36:46ID:???<?php
$directory = realpath("../home/httpd/html/template/top.html");
include($directory);
てこと?
0991nobodyさん
2006/11/22(水) 20:51:58ID:???Googleで "vodafone 絵文字コード" と検索しる。
0993nobodyさん
2006/11/23(木) 00:01:01ID:???0994nobodyさん
2006/11/23(木) 00:13:11ID:???0995994
2006/11/23(木) 00:14:22ID:???0996nobodyさん
2006/11/23(木) 00:20:00ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。