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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/10/25(水) 08:45:46ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

【前スレ】
 【PHP】下らねぇ質問はここに書き込みやがれ 30
 http://pc8.2ch.net/test/read.cgi/php/1159979905/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0745nobodyさん2006/11/03(金) 10:36:07ID:???
>>743
dir()って関数名は予約されてるのでユーザが定義できない。
ttp://www.php.net/manual/ja/index.functions.php <関数一覧にdir()が存在してる
07467432006/11/03(金) 10:44:49ID:???
なるほど、そういうことだったんですね。
ありがとうございます。

私事でありますが・・
「素人だけどバグみつけちまったぜ」
「おれって天才?」

って喜んでました。修行不足ですね・・・失礼いたしました。
il||li_| ̄|○ il||li
0747nobodyさん2006/11/03(金) 10:45:15ID:uip4CKwg
header関数でrefererのセットってできないのかね?
0748nobodyさん2006/11/03(金) 10:49:45ID:???
できるでしょ。どんな意味があるか知らないけど。
0749nobodyさん2006/11/03(金) 10:52:38ID:???
header : 鯖 -> 倉
referer : 倉 -> 鯖
0750nobodyさん2006/11/03(金) 11:00:13ID:uip4CKwg
>>748
header("Referer: http://example.com";);
header("Location: 環境変数一覧が出るようなサイト");
これで駄目なんだよね。試しに出力の順序変えても駄目だった。

>>749
ごめん、くわしくplz
0751nobodyさん2006/11/03(金) 11:02:18ID:???
PHP 5.2.0が正式リリースされました。
07527472006/11/03(金) 11:04:31ID:uip4CKwg
>>749
あ、わかった。

てことはやっぱやろうとしてることは出来ないのか。ちぇ。
0753nobodyさん2006/11/03(金) 11:09:27ID:???
>>746
私が見つけれるような単純なバグ(の様な物は)既に誰かが発見し修正している筈である。
よって、これは私のミスでありバグではない。

とまぁ、こんな事思いながらやってるなぁ・・

>>751
スレの上で出てたけど、これでPHP5.xがApache2.3.xで使えるように?

(その話題が気になったからググってみたけど、Apache2.0.x→Apache2.2.xはAPIが変更されてるとか何とか)
0754nobodyさん2006/11/03(金) 11:14:40ID:???
http://ml.php.gr.jp/pipermail/php-users/2006-January/028719.html

5.1.7でphp.iniが見付けられないのはバグだそうです。
修正されているか解りませんが、5.2.0を入れる事をお勧めします。
0755nobodyさん2006/11/03(金) 11:43:03ID:???
先月5.2いれたけど、たいして気にすることでもないかな。
0756nobodyさん2006/11/03(金) 11:43:05ID:???
5.1.7?
0757nobodyさん2006/11/03(金) 11:46:43ID:???
5.1.2でした。
0758nobodyさん2006/11/03(金) 12:01:13ID:???
>>754
自己解決しているみたいなんだが・・・
0759nobodyさん2006/11/03(金) 12:05:48ID:???
php6は試した人いないの?
0760nobodyさん2006/11/03(金) 12:29:29ID:8kaP0u+9
こういうディレクトリ構造があります。
[c:\]-[public_html]--index.php
   |
   |-[local]--bbs.log
Cドライブ直下にドキュメントルートpublic_htmlを置きindex.phpを作成しました。
index.phpからドキュメントルート外のbbs.logをfopenで開きたいのですが

$file = file("c:/local/bbs.log","r");
と記述してもエラーがでて取得できません。
パスの書き方はc:/local/bbs.logではなくほかの書き方がございましたら
ご教授お願いいたします。
07617612006/11/03(金) 12:40:11ID:???
自己解決しました。
↑のパスの書き方で問題なく動きます。
0762nobodyさん2006/11/03(金) 12:57:15ID:???
コードは適当なんですが
function dir_list($dir) {
 $dir_list = (ディレクトリ取得);
 foreach ($dir_list as $list) {
  dir_list($list);
 }
}
こういった再帰処理を無名関数で
$dir_list = create_function ('$dir', '$dir_list = (ディレクトリ取得);
 foreach ($dir_list as $list) {
  $dir_list($list);
 }
}');
のように書きたいのですが$dir_listがundefinedというエラーが出てしまいます。
functionを作らずに無名関数のような感じで実現することは出来ませんでしょうか。
0763nobodyさん2006/11/03(金) 13:02:41ID:???
>>762
>  foreach ($dir_list as $list) {
で使ってる配列と
>   $dir_list($list);
生成関数とで同じ変数名がバッティングしてるよ。
0764nobodyさん2006/11/03(金) 13:06:01ID:???
>>762
あとさらに付け加えるなら、
$dir_list = create_function()
で作られる$dir_listはグローバル変数な。
create_function ('$dir', '$dir_list = (ディレクトリ取得);
 foreach ($dir_list as $list) {
  $dir_list($list);
 }
}');
とcreate_function内で使われてる$dir_listは関数内のローカル変数な。

そんだけわかりゃ何とかなるんでない?
基本的にはfunction定義で何とかできることはcreate_functionでも何とかできる。
0765nobodyさん2006/11/03(金) 13:10:17ID:???
実行エラーでバイナリ落ちそうなコードだな
0766nobodyさん2006/11/03(金) 13:31:45ID:8kaP0u+9
perlでできてphpでできないことって何ですか?
最近perlもやっとかないと時代についていけない気がして・・・
0767nobodyさん2006/11/03(金) 13:56:23ID:???
セッションIDでログインするにはどうしたらいいんですか?
0768nobodyさん2006/11/03(金) 14:09:24ID:???
そんなことしてどうする?
セッションID毎にパスワードを設定するのか?
0769nobodyさん2006/11/03(金) 14:11:06ID:???
>>766
そんな状態で始めたとしても、PHPもPerl使いこなせず意味がないと思われ
どっちか1つを真面目に勉強するんだ。

>>767
セッションの使い方を聞いているのか?
マニュアル読んで分からない事だけもっかい聞きに来い
0770nobodyさん2006/11/03(金) 14:18:42ID:???
>>763さん、>>764さんレスありがとうございます。
$dir_func = create_function ('$dir', '$dir_list = (ディレクトリ取得);
 global $dir_func;
 foreach ($dir_list as $list) {
  $dir_func($list);
 }
}');
こんな感じで期待通りの動作をすることが出来ました。

>>766
WEB用途でPerlに出来てPHPに出来ないこと、またはその逆ってあまり無いと思うけど
tie、thread、OOP関連(多重継承、カプセル化等)で差異を感じることはあったかな。
Perlは古臭いっすよw
0771nobodyさん2006/11/03(金) 14:29:30ID:9FoSTEPm
AとBの2つのページがあって、
Aのページで認証を通さないとBに進めないということをやりたいのですが、
特に細工しないと、BのURLを直接打ち込むとBが見えてしまいますよね?
今まではSwitchで分けてたのですが、
ソースがごちゃごちゃになるので分離したいと考えています。
どのような処理をしたら、Aからの認証のみでBに行けるようになるのでしょうか?
ヒントだけでもいただけたらありがたいです。
宜しくお願いします。
0772nobodyさん2006/11/03(金) 14:30:53ID:???
http://pc8.2ch.net/test/read.cgi/php/1064399467/643
643 名前:nobodyさん [] 投稿日:2006/11/03(金) 13:21:11 ID:QUVcMJYR
そもそも、セッションIDがばれたら何が怖いんですか?
どこをどうされてログインされるんですか?

こないだセッションIDというヤツを他人に知られたんですけど、
何をされるんですか?
0773nobodyさん2006/11/03(金) 15:04:55ID:ObEKEkGi
php.iniが認識しないのは、PHP5.1系のバグじゃなくApache2.2系のバグでした。
最新のApache2.0系を入れたら、1発で認識してくれました。どうも。
0774nobodyさん2006/11/03(金) 15:18:24ID:???
>>773
んなこたーない
0775nobodyさん2006/11/03(金) 15:35:47ID:???
>>771
セッションに認証済みフラグを立てて
Bで認証済みかどうかチェックしたらどうかしら
0776nobodyさん2006/11/03(金) 16:19:03ID:???
Bをbasic認証にして
Aでパス発行すれば?
0777nobodyさん2006/11/03(金) 16:32:21ID:???
777get, zuzaa
0778nobodyさん2006/11/03(金) 16:42:53ID:8kaP0u+9
メンテナンスのことも考えてユーザー定義関数で細かく処理をわけてますが、
あまりわけすぎると実行速度の低下や転送量が太ったりしますか?
0779nobodyさん2006/11/03(金) 16:50:24ID:???
>>778
誤差の範囲内で実行速度が僅かに低下する。

でも、メンテナンス性の方が遥かに大事。
読み易くメンテナンスしやすいように適度に分けるのは良い心がけだ。
0780nobodyさん2006/11/03(金) 17:03:01ID:???
>>773
Windows?
それならPHP5.1がApache2..2に対応してないだけでバグでもなんでもない
どうせなら最新のPHP5.2でも入れて試してみたら
0781nobodyさん2006/11/03(金) 17:24:05ID:???
>>766
最近Perl!?
JavaやRubyなら分かるが、今更Perlやってどうすんの。

と、元Perl使いが反応してみるw

PerlはPHPと違って元々はWEB無関係の汎用スクリプト言語だから
できることは確かに色々あるし性能もいいよ。
でも時代についていくために今Perlの勉強ってありえないぞ??
逆に何がしたくてPerl勉強すんのさ、と俺が問いたいw
0782nobodyさん2006/11/03(金) 17:36:49ID:???
Perlは、言語機能や速度自体は別に悪くない・・。
が、文法が継ぎ足しで汚い。
0783nobodyさん2006/11/03(金) 17:37:43ID:???
書いた本人にとっては美しいんだよ
他人が読めないだけだ
0784nobodyさん2006/11/03(金) 17:52:09ID:???
いやいや書いた本人にとってはというレベルではなくて、
オブジェクト指向部分とか、基本的に変な文法。
0785nobodyさん2006/11/03(金) 18:22:50ID:???
既存の文法と実装の延長線上でOOPを実現しようとしてるせいだよね。
実装手法の面で言えばうまい!って感じでよく考えられてるんだけど、
それはあくまでPerl側から見た話であって、OOPの側から見ると
何だかものすごく妙ちくりんな文法とお約束で成り立ってるんだよなw
0786nobodyさん2006/11/03(金) 18:26:40ID:???
Perlはそもそも文法の美しさは二の次三の次だろ。
0787nobodyさん2006/11/03(金) 18:36:27ID:???
いや、Perl使いから見るとあれはすごく美しい文法なんだよ。
ただその方向性が他の言語と違いすぎてるだけ。
0788nobodyさん2006/11/03(金) 18:50:45ID:???
PHPしか知らない俺にその変てこさを分かりやすく説明してくれ
0789nobodyさん2006/11/03(金) 18:56:46ID:???
一般的でない美しさは美しくないということにならないか?
0790nobodyさん2006/11/03(金) 19:09:16ID:???
while (<>) { chomp; print; }

美しくないか?ってあまり大した例じゃないが。
0791nobodyさん2006/11/03(金) 19:10:26ID:i9hbdjz4
美しいって何だよw
0792nobodyさん2006/11/03(金) 19:15:51ID:???
美しさは人それぞれです
0793nobodyさん2006/11/03(金) 19:24:21ID:???
美しいというより、
if (foo()) {
    foobar() if bar();
}
ってやられるときんもーってことでしょ?
0794nobodyさん2006/11/03(金) 19:31:40ID:???
>>789
行き過ぎた芸術は一般人には理解しがたいものになりがち。そういうことだよ。
大衆芸術の方が多くの人に好まれやすいが美しさには欠ける。

>>790
やっぱ
@data = map {$_->[0]} sort {$x = ($a->[$_] <=> $b->[$_] or $a->[$_] cmp $b->[$_]) and return $x foreach (1 .. $#$a); -1} map {[$_, split /,/]} @data;
この辺りじゃない?
0795nobodyさん2006/11/03(金) 19:37:41ID:???
>>794
変態的だな(褒め言葉)
0796nobodyさん2006/11/03(金) 19:42:43ID:???
>>794
慣れなのかもしれないがよく解読出来るよね・・・
0797nobodyさん2006/11/03(金) 19:59:00ID:???
>>794
確かにそこまでいくと芸術性を感じる


読みやすさは微塵も感じないが。
まさに変態的という言葉が完璧にマッチするな。
0798nobodyさん2006/11/03(金) 20:12:57ID:???
1行にする必死さを感じる
まさに無駄な努力
0799nobodyさん2006/11/03(金) 20:18:00ID:???
タモリいわく芸術と変態は紙一重らしいぞ
0800nobodyさん2006/11/03(金) 20:26:52ID:???
俺もPerlを使い続けている一番の理由は、中毒性の高い構文だからだろうなw
使い捨てのプログラムをさっさと書いてしまいたい時にはかなり重宝する
CPANの豊富なモジュール群も捨てがたい
0801nobodyさん2006/11/03(金) 20:29:23ID:ewaQ0n7K
初めてレベルの高い回答を読んだ
0802nobodyさん2006/11/03(金) 20:58:22ID:???
ルビーとかいうのやってみたんですが
それあればコピペで出来るってことですか?
0803nobodyさん2006/11/03(金) 21:20:55ID:ewaQ0n7K
>>645
色々調べたら、それだ!って感じがしました。
ところが、PEARには標準で入ってないっぽい?もしくはバージョンによる?
4.4なんですが、XMLの下にはParser.phpとRPC.phpしかないんです。
改めてgo-pear.batしたんですが、やっぱり入ってないです。
これはどうやってゲットすればいいんでしょうか?
0804nobodyさん2006/11/03(金) 21:30:55ID:???
>>803
pear install XML_Serializer
てかPEARのマニュアル嫁
http://pear.php.net/manual/ja/
0805nobodyさん2006/11/03(金) 22:58:33ID:ewaQ0n7K
>>804
うっ・・・ありがとうございます。ところが、
No release with state equal to: 'stable' found for 'XML_Serializer'
と表示されてます・・・
ううぅ・・・どうすればいいんでしょうか?
stableって安定版のことですよね?不安定版でも構わんのですが・・・
0806nobodyさん2006/11/03(金) 23:06:10ID:???
       _, ,_
     <[;゚Д゚]> ア゙ー!? PEARのマニュアルにstableじゃないものをどうインストールするか書いてあんだろ
      [_]
      < > 
0807nobodyさん2006/11/03(金) 23:14:32ID:aY7QHi86
PHPでWORD形式のファイルって出力できるんでしょうか?
0808nobodyさん2006/11/03(金) 23:43:49ID:???
>>805
pear install XML_Serializer-beta
0809nobodyさん2006/11/04(土) 00:39:40ID:RV2l/KER
>>806
うぅっ・・・すいません。書いてありました。面目ないです。

>>808
くぅーっ!ありがとうございます。お蔭様でインストールできました。Windowsの方は・・・

インストールすると、XML_Utilも必要と言われたのでインストールしました。
Windowsの方は動作も確認できたので、ヤター!!って思って、Linuxにもインストールしようと
したのですが、XML_UtilとXML_Parserが必要といわれたので、両方インストールしました。
ところが、、、XML_Parserはalready installなのでSkippingと表示されてるのに、XML_Serializer
をインストールしようとすると、XML_Parserがrequiresだと言われます。。。

最後の、最後に教えて下さい。マニュアル調べました(・・・多分見落としてないと思います)
0810803,8052006/11/04(土) 00:44:01ID:RV2l/KER
-f スイッチで強制的にインストールできるようですが、これが正解ですか?
0811nobodyさん2006/11/04(土) 01:30:49ID:AU0Zf4A1
URLからホストドメイン部分までを取得したいのですが関数とかあるのでしょうか
http://pc8.2ch.net/test/read.cgi/php/1161733546/
だと
http://pc8.2ch.net
となってほしいです

今は自分が知っている関数の範囲内で
$s = split("/", $url);
$host = $s[0].'//'.$s[2];
という風にしています。。

よろしくお願いいたします
0812nobodyさん2006/11/04(土) 01:39:11ID:???
preg_match('@http://([^/]+)@', $uri, $matches);
0813nobodyさん2006/11/04(土) 01:42:04ID:???
parse_url
0814nobodyさん2006/11/04(土) 01:58:29ID:???
HTMLから語句を検索して、その語句に対してハイライトの為の
タグを自動で挿入してくれるようなライブラリなどありますでしょうか?

もしあったら教えてください。
お願いします。
0815nobodyさん2006/11/04(土) 02:50:44ID:???
正規表現で置換
0816nobodyさん2006/11/04(土) 03:17:45ID:???
一瞬で的確なレスが返ってくるこのスレはすごいな
0817nobodyさん2006/11/04(土) 03:28:36ID:???
別にすごいことでもなんでもないし
0818803,8052006/11/04(土) 04:02:04ID:RV2l/KER
>>809
自己レスです。
XML_Parserをforceインストールしたらでけました。色々教えてくれてどうもありがとうでした!
0819nobodyさん2006/11/04(土) 04:39:51ID:???
>>817
場末のくだらないスレにしては、ということだ
0820nobodyさん2006/11/04(土) 04:58:30ID:???
別にすごいことでもなんでもないし

0821nobodyさん2006/11/04(土) 06:56:58ID:+mcy38xB
●ディレクトリ構成
[home]の下に[public_html](ドキュメントルート)の下に[www]ディレクトリ
[home]の下に[local](ドキュメントルート外)の下に[log]

wwwディレクトリにindex.phpがあり、
このファイルからlogディレクトリを指定したいのですが
間違っている指定の仕方があればご指摘ください。

1. ../../local/log
2. ../../local/log/
3. home/local/log
4. home/local/log/
5. /home/local/log
6. /home/local/log/
0822nobodyさん2006/11/04(土) 07:07:06ID:???
3〜6
0823nobodyさん2006/11/04(土) 07:15:44ID:???
多分homeは例のhomeなので5, 6も動くんじゃない
なんで/homeの下にlocalやpublic_htmlを置いてるのか知らんが
0824nobodyさん2006/11/04(土) 07:16:13ID:???
自己解決しました。
正解は1,2,5,6でした。
0825nobodyさん2006/11/04(土) 07:19:50ID:???
>>823
LinuxやBSD以外のOS
0826nobodyさん2006/11/04(土) 07:24:38ID:+mcy38xB
mkdirでディレクトリ作成するときに
「変数で指定したディレクトリ名」で処理するとWarningエラーがでるのですが
@で回避するのとディレクトリ名をチェックするのはどちらが妥当でしょうか?
0827nobodyさん2006/11/04(土) 07:44:22ID:???
>>826
別にどっちでも。
@で回避したあとの処理、ディレクトリの存在チェックしたあとの処理の方が重要。
0828nobodyさん2006/11/04(土) 08:00:06ID:???
http://www.php.net/manual/ja/function.apc-define-constants.php
>ご存知のとおり、define() は非常に遅いです。

遅いんですか?
0829nobodyさん2006/11/04(土) 09:27:45ID:???
fsockopneでファイルを送ることは可能でしょうか。
クライアントの依頼で受け皿を変更することなくファイルを送る必要がありまして、
通常の投稿フォームから投稿するのと同様にサーバ内のファイルを送らなければならなくなりました。

他のPOSTデータは普通に送れるのですがファイルはググってみたのですが的確なものがヒットしませんでした。

ご存知の方いらっしゃいましたらよろしくお願いします。
環境:共にFedoraCore4 PHP-5.1.4
0830nobodyさん2006/11/04(土) 09:35:55ID:???
クソスレ三段論法について説いてください。
それではよろしくお願いいたします。
0831nobodyさん2006/11/04(土) 09:54:23ID:???
>>829
pear使えばいいだけの話だろ?
楽チンじゃん。
0832nobodyさん2006/11/04(土) 10:03:37ID:???
E_RECOVERABLE_ERROR

こいつのクールな使い方を教えてくれ
0833nobodyさん2006/11/04(土) 10:04:36ID:+mcy38xB
die()で処理を停止してエラーはくときにソースが全部読み込まれなくて
</body></html>までソースが読まないんですけど、
die()の中に</body></html>書いておくものでしょうか?
それとも処理が停止したらhtmlの文法なんて気にすることでもないのでしょうか?
0834nobodyさん2006/11/04(土) 10:18:38ID:???
>>832

$cool = "E_RECOVERABLE_ERROR ";
if (isset($cool) == "cool") {
 echo "E_RECOVERABLE_ERROR はクールを使ってます";
}else{
 echo "クールと勘違いしてます";
}
exit;
0835nobodyさん2006/11/04(土) 10:30:11ID:???
>>831
そうできたら楽なのですが、自分でちゃんと作って提出するのが条件とのことです。
こんな感じでヘッダー叩いて見たのですがうまく上がりませんorz

POST /test/upload.php HTTP/1.0
Host: hoge.hoge
Content-Type: multipart/form-data; boundary=test
Connection: close
Content-Length: 8

--test
Content-Disposition: form-data; name="test"; filename="test.txt"
Content-Type: text/plain

testtest
--test
0836nobodyさん2006/11/04(土) 11:02:35ID:???
>>835
宿題ならここで人に聞いちゃダメだろ
0837nobodyさん2006/11/04(土) 11:04:34ID:???
>>835
おいおい同じような宿題やってるが同じクラスメイトか?
0838nobodyさん2006/11/04(土) 11:08:41ID:???
お前ら付き合っちゃえよ
0839nobodyさん2006/11/04(土) 11:10:18ID:+mcy38xB
すいません、サーバ環境と開発環境は分けてますか?

linux上のサーバでないと確認できないこともあるわけで、
開発はwinでやるのは効率がわるいでしょうか?
ぁたしはdreamweaverでデザインとphpの開発しております。
先人のご意見お聞かせください。
0840nobodyさん2006/11/04(土) 11:10:24ID:???
自分でちゃんと作るのが条件でしょ
0841nobodyさん2006/11/04(土) 11:11:43ID:???
そんな時のための仮想化じゃないか
08428352006/11/04(土) 11:12:31ID:???
宿題とか言われても俺工房だしww orz
まぁ再来年辺りこういう宿題やってるかもしれんけど(´・ω・)

とりあえず
「Content-Length: 8」が間違ってたようでファイルは送信できました。 と報告迄。

今度は逆にPOSTデータが受信されなくなってしまった罠。
RFC1867にこの辺について言及されてるけどPOSTデータの扱いがよく分からんかった。
0843nobodyさん2006/11/04(土) 11:23:25ID:???
何が「クライアントからの依頼」だよ馬鹿

きちんと宿題なんですぅ〜と書け
08448352006/11/04(土) 11:23:28ID:???
自己解決しました。
POSTも「--test」で区切る必要があったようです。
結局余りphpと関係ない部位の質問となってしまいました; スレ汚しスミマセン。
■ このスレッドは過去ログ倉庫に格納されています