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

【php】part29【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/07/06(水) 09:57:54ID:0DucnAyH
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
 http://www.php.net/
■日本 PHP ユーザ会
 http://www.php.gr.jp/
■PHP マニュアル
 http://www.php.net/manual/ja/
■PEAR マニュアル
 http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り

前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ

0202nobodyさん2005/08/01(月) 09:28:14ID:???
あ、そうか。ソース見て学習したのね。
0203nobodyさん2005/08/01(月) 09:28:55ID:W+K0FGe8
ヤベageちゃった。スマソ。
0204nobodyさん2005/08/01(月) 09:35:26ID:???
phpは進化の早い言語だからちょっと古い本を買うと動かなかったりする
本を買うより新しい情報を得られるネットの方が良い感じ。
php入門系のサイトは沢山あるしね。
0205nobodyさん2005/08/01(月) 09:39:10ID:???
進化が早いというか仕様変更多すぎなだけでしょ。
0206nobodyさん2005/08/01(月) 10:05:46ID:mZBBp/SZ
>>204

ネットの情報っていい加減なことが多いから、
マニュアル以外、使い物になりません。
PHP は特にイタイサイトが多すぎ。
0207nobodyさん2005/08/01(月) 10:12:29ID:???
>>206
個人のサイトばかりを見るからじゃない?
0208nobodyさん2005/08/01(月) 10:13:48ID:???
つかマニュアルだけで十二文
0209nobodyさん2005/08/01(月) 10:15:16ID:???
/十二文/十二分/
0210nobodyさん2005/08/01(月) 10:28:43ID:???
>>208
そうか?
俺の本購入暦
php4+mysql本>php5登場>php5+mysqlサンプル集購入>PEAR?SMARTY?>SMARTY本購入
みたいな。特にSMARTYは理解してないと最悪ソース読めないもん。
0211nobodyさん2005/08/01(月) 10:33:07ID:???
俺も本だな。
画面をずっと見てると目がしょぼしょぼする。
0212nobodyさん2005/08/01(月) 11:13:25ID:???
Smartyだってマニュアルあるやん
0213nobodyさん2005/08/01(月) 11:26:06ID:???
プログラム自体の初心者の場合はいきなりマニュアルだけってのはきびしいよ。
俺も初めはとっかかりとして初心者向けの本なりサイトなりを参考にしたよ。
0214nobodyさん2005/08/01(月) 12:17:40ID:39k1+tgV
http://tama.s68.xrea.com/
管理人14歳
0215nobodyさん2005/08/01(月) 12:34:28ID:Zfu0t8ja
>>214
わざわざ宣伝しに来るな。
0216質問します2005/08/01(月) 13:43:08ID:avDbJoF4
「10日でおぼえるPHP入門教室」って本でPHP勉強してるんですが、
画像アップ掲示板に来て書籍付属のソースコードで試しても文字化けして
つまづいてます。
アップ先のサーバ環境はApache/2.0.54 (FreeBSD) PHP/5.0.3です。
分かる方いましたら教えて頂けないでしょうか お願いします
これがソースコードのファイルです
http://ranobe.sakuratan.com/up/updata/up48980.zip
0217nobodyさん2005/08/01(月) 14:13:54ID:ez5cOkgu
flockってこの認識で正しい?

flock処理に関して
 LOCK_EX,LOCK_SH,LOCK_UN はサポートされていれば TRUE しか返さない。
 要求が通るまで処理は中断する。
 LOCK_SH は LOCK_EX が要求された段階で新たな要求は通らなくなる。

LOCK_NBと第三引数(WouldBlock)
 要求が通らなくても FALSE で制御を戻す。
 この際、WouldBlock は FALSE だが、要求が通った段階で TRUE に変わる。

バッファリング
 lock権解放前にファイル書込を終了せねばならない。
 バッファサイズ0にする方法は1度のシステムコールで書込が終わる状況ならばパフォーマンスの低下を招かない。
 一般的にはバッファリング有で fflush する方が楽。

fopen
 flock が必要な状況で 'w','w+' は鬼門。lock権確立前にファイルサイズが0にされる。
 'r','r+'は存在が確実なファイルで使う。file_existsで確認後に使うのはNG。その一瞬で過去の情報になる恐れあり。

rewind と fseek
 SEEK_CUR,SEEK_END はlock権確立後に使わないと過去の情報になる恐れあり。
 SEEK_SET,rewind は過去の情報でも問題ないのでlock権確立前で構わない。

flock と pid
 lock権の管理にはpidが使われる。
 同一pidの他スレッドが要求したlock権との区別はされない。
0218nobodyさん2005/08/01(月) 14:19:28ID:W+K0FGe8
でも参考程度に書籍買います。

「10日でおぼえるPHP入門教室」こんなのにします。
以上。
0219nobodyさん2005/08/01(月) 14:37:34ID:???
>>216
斜め読みだけど、03-03.phpの16行目と17行目はおかしいと思われ。

> $BBSRecord = array( date( "Y/m/d H:i:s" ), $name, $body, $FilePath );
> AppendCsvToFile( BBS_DATA, array( $BBSRecord ) );

arrayし杉。17行目の2つ目の引数は$BBSRecordだけでいいんじゃないかと。
漏れは動かしてないが、動かしたらちゃんとエラーメッセージでるんじゃないの?
02202162005/08/01(月) 14:48:07ID:???
>>219レスありがとうございます
エラーメッセージなしでちゃんと動くんですが文字化けします
ブラウザの文字コードをeuc-jpとs-jisにしても両方とも
文字化けしてしまう現象です
0221nobodyさん2005/08/01(月) 17:55:11ID:???
>>217
wouldblockは違うだろ
勝手にforkして要求しつづけられたらかなわん
0222nobodyさん2005/08/01(月) 23:54:38ID:v8DZZv2U
ゲットでセッションIDを渡さないとセッション変数が使えないのですがなぜでしょう?
IE6でクッキー有効になってます。試しに他のPCからテストしても同じでした。

a.php

<?php
session_start();
echo ''.$_SESSION['test'].'<br><a href="b.php?a=aaa">test</a>';

b.php

<?php
session_start();
$_session['test'] .= $_GET['a'];
header("Location:a.php");
exit();

試したスクリプトです。?PHPSESSID=としてセッションIDをつけると期待どおりの動作をします。
どこかおかしいとこありましたらよろしくおねがいします
02232222005/08/02(火) 00:19:41ID:???
クッキーができていないことがわかりました。
php.iniのどのへんの設定をいじるといいんでしょう?
デフォルトの設定ではできないものでしょうか?
0224nobodyさん2005/08/02(火) 00:20:19ID:???
session.use_cookies
0225nobodyさん2005/08/02(火) 00:23:58ID:???
>>223
デフォルトでいけたと思うけど。。。
php.iniでsession.use_cookies=1となっていないのかな。
もしくはスクリプトで以下のように書いてみては。

ini_set('session.use_cookies', true);
session_start();
・・・
02262222005/08/02(火) 00:38:23ID:tr08P2cl
session.use_cokkies=1になってました
>>225 試してみたのですがやはり同じでした。

その他cookieができない原因になりうることはあるでしょうか?
02272222005/08/02(火) 02:00:01ID:???
setcookieでもcookieが発行できないことがわかりました。
レンタルサーバーで試したところ問題なくできてました。
サーバーの問題だと思うのですが、どこが悪いんでしょう?
自分でも調べますが、もし何か気づいた方いましたらよそ行くお願いします。
redhat7.3+apache1.3.23+php4.3です
0228nobodyさん2005/08/02(火) 02:14:04ID:???
Setcookieと言えば、有効期限を日数で指定してたせいで
ちゃんと保存されなくてめっさ悩んだ覚えが
02292222005/08/02(火) 02:20:20ID:???
/home/user/public_html以下のファイルを公開しているのですが

http://user.domain.com/a.php  NG
http://192.168.0.10/~user/a.php ローカルIPでのアクセスok
http://sv1/~user/a.php ローカルのホスト名でのアクセスok

バーチャルドメインでのアクセスだけ不具合が出てます。
バーチャルドメインだとcookie発行するのに特別な設定が必要なのでしょうか?
02302222005/08/02(火) 02:31:43ID:???
追記
http://domain.com/~user/a.php はokです。
バーチャルドメインではなくバーチャルホストでした。
バーチャルホストのアクセス時に限って起こるっているみたいです。
PHPの話じゃなくなってきましたね。。
0231nobodyさん2005/08/02(火) 02:36:18ID:???
>>217
>fopen
> flock が必要な状況で 'w','w+' は鬼門。lock権確立前にファイルサイズが0にされる。
そうなの?そうすると、厳密には、w,w+はflockで使えないってこと?
0232nobodyさん2005/08/02(火) 02:38:28ID:???
>>228
そういや俺も、IEだと保存するけど、Firefoxだと保存しないってのがある。
Firefoxだけ有効期限が効かない。ブラウザを開いている間は大丈夫なんだが、
閉じると忘れる。調べりゃ出てきそうなんだが、調べもせずに放置中。

>>229
ノートンとかのセキュリティソフト関係で弾いちゃっているとか。
ネットワーク構成がわからないのだけど、ドメインを正引きしたときのIPアドレスと
LAN内でIPアドレスが食い違っているとかなんとか...
02332202005/08/02(火) 02:57:06ID:???
他人の家のワイヤレスをお借りして試してみた(ごめんなさい)のですがやはりバーチャルホストを使ったURLだとcookieが発行されません。
javascriptでも試したのですが同じです。
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /home/user/public_html
ServerName user.domain.com
ErrorLog logs/user.domain.com-error_log
TransferLog logs/user.domain.com-access_log
</VirtualHost>
バーチャルホストの設定がいけないのですかね?
スレ違いの質問すみません。
0234nobodyさん2005/08/02(火) 03:03:02ID:???
通信しました
0235nobodyさん2005/08/02(火) 08:33:46ID:???
>>233
DNSで許されないホスト名の場合、クッキーが保存されなかったような希ガス。
うろ覚えで申し訳ないが、ホスト名に-(ハイフン)があった時ダメだったような。。。
バーチャルホスト名を変更する権限があるのであれば、一度変えてテストしてみては?
0236nobodyさん2005/08/02(火) 08:40:54ID:???
ハイフンはOKだぞ。アンダーバーがNGで。
02372352005/08/02(火) 08:57:58ID:???
>>236
フォローサンクス。だからうろ覚えだって。。。(^^;
ちょっと調べてみたら、以下の資料にアンダーバーはダメって書いてあるね。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;275033
この辺りはブラウザが行う処理なんで、使用するブラウザを変えると挙動が変わるかもしれませぬ >>233
0238nobodyさん2005/08/02(火) 10:13:07ID:???
ドメイン名に使える文字は、RFC 1034,1035で、アルファベット(52文字)+「-」 となっている。
(かなりupdateされていて最新のものはどれか分からんけど、たぶん国際化ドメイン絡みのupdateだと思うのでパス)

>>233
テキストファイルにクッキー情報を保存するタイプのブラウザを使っているなら、その中を覗いてみたら?
0239nobodyさん2005/08/02(火) 11:31:25ID:???
じゃあtp://07211919.comはダメ?
0240nobodyさん2005/08/02(火) 11:41:27ID:pJubjwcv
自分用の低機能フレームワーク作ってるんですが、
セッション必須って別に構わないのかなぁ?
0241nobodyさん2005/08/02(火) 11:43:06ID:???
あー、数字もokだね。こんな感じ。
<domain> ::= <subdomain> | " "
<subdomain> ::= <label> | <subdomain> "." <label>
<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
<let-dig-hyp> ::= <let-dig> | "-"
<let-dig> ::= <letter> | <digit>
<letter> ::= any one of the 52 alphabetic characters A through Z in
upper case and a through z in lower case
<digit> ::= any one of the ten digits 0 through 9
0242nobodyさん2005/08/02(火) 11:44:19ID:???
>>240
自分用だから、自分さえ納得していればええんでないの?
02432172005/08/02(火) 12:37:37ID:???
>>221
うーん、ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/flock.2.html見ると
flock失敗の理由を示すみたいな。
ということは↓でflockできる環境か判断できるのか?
  if (!flock($fp, LOCK_EX+LOCK_NB, &$wb) && !$wb)

(マルチスレッドISAPIとかはダメだけど)

>>231
厳密にはfopenの仕様。マニュアルに書いてあるし。
0244nobodyさん2005/08/03(水) 01:18:39ID:???
>>231
fopen(hoge,'a')で開いて、LOCK_EXして、ftruncateなりしないとダメ。
0245nobodyさん2005/08/04(木) 17:02:51ID:ttes8CpA
php4のmail関数でメールを送りたいんですが、
sendmailは別のサーバにあるものを使いたいのです。

その場合の php.ini の設定の書き方が分かりません。
どなたか教えてください。
0246nobodyさん2005/08/04(木) 17:11:04ID:???
ありません。
fsockopen等を使ってSMTPをお喋りしましょう。
pearあたりに楽をできるライブラリがあるかもしれません。
0247nobodyさん2005/08/04(木) 17:26:11ID:???
PHPが動作しているサーバーのsendmail等を設定して、すべてのメールを
別サーバーにリレーするようにした方が手っ取り早いのでは。

ところで別質問だけど、Windows版だけphp.iniのSMTPディレクティブが
使用できるのはなぜなんだろう。
Windows版だけSMTPを話す処理が組み込まれているから?
だとしても、UNIX版に組み込まれていないのはなぜだろう。
0248nobodyさん2005/08/04(木) 17:41:54ID:???
ext/standard/mail.c
#ifdef PHP_WIN32
#include "win32/sendmail.h"
#endif

win32/sendmail.c

unix版に無い理由はシラネ
0249nobodyさん2005/08/04(木) 17:49:17ID:???
>>247さん
なるほど。
別サーバへリレーする設定は、/etc/mail/sendmail.cfでできるんですか?
0250nobodyさん2005/08/04(木) 18:42:30ID:r5xxfLUD
こんな変数があります。
(実質はフォームからの入力されたデータ。)
$buf = '3*3+3';

これで、$bufを12としたいのですが、方法はありますか?
0251nobodyさん2005/08/04(木) 18:49:16ID:???
>>250
eval
0252nobodyさん2005/08/04(木) 18:54:11ID:???
>>251
ありがとうございました。
02532472005/08/04(木) 19:34:54ID:???
>>249
そのサーバーでsendmailを動かすならそのファイルでいいけど(ディレクトリ名までは知らない)
普通、CFやm4ツールでsendmail.cfを生成させるのでは?
もう何年もsendmail触っていないんで、具体的な設定までは覚えていないけど
「sendmail スマートホスト」辺りでググってみればサンプルはあるんぢゃないかな。
sendmailに拘らなければPostfixやqmailの方が楽でいいと思う。
02542472005/08/04(木) 20:09:17ID:???
>>248
ありがとう。PHP5.0.4のソースを見てみたけど確かにそうなってるね。
あと php.iniでは sendmail_path ディレクティブは UNIX のみ、ってなってるけど
Windows 版でも有効みたいだね。
sendmail_path → SMTP ディレクティブの順に評価している模様。
実際に動くかどうかは知らないけど。
どちらにしても UNIX 版で SMTP の処理をしない理由は良く判らんな。
0255nobodyさん2005/08/04(木) 20:39:55ID:???
>>254
なんか適当すぎる処理で恥ずかしいから、、ちゃんとしたMTAが
一杯あるUNIXでは使わないみたいなことをその部分のコード記述者が
ソースにコメント書いてなかったっけ?そんな記憶がある。
あと誰かまともなコード寄稿して〜とかなんとか。
0256nobodyさん2005/08/08(月) 14:15:03ID:Vwrrt9G3
MyYahooみたいないろんな情報がでるサイトを作ろうと
してるんですけど、こういうサイトってページにアクセスするたびに
各情報ごとにDBにアクセスして、毎回動的にページ作成
してるんでしょうか?
なんか激しく重くなってそうな気がするんですけど、そういうもの?
0257nobodyさん2005/08/08(月) 14:35:19ID:???
ログインだけDBアクセスで後はセッションじゃないか?


と適当に答えてみるテスト
0258nobodyさん2005/08/08(月) 14:44:25ID:???
>>257
ユーザ情報自体はクッキーでしょ?
DBアクセスかどうか知りたいのは、コンテンツの内容のほうっす
0259nobodyさん2005/08/08(月) 14:46:32ID:???
>>256
勿論DBMSも参照分散してもいるが、
ブロック毎に極力データキャッシュしてる。
0260nobodyさん2005/08/08(月) 14:47:25ID:pO4uXVC7
>>256
変更が頻繁じゃないやつはコンテンツキャッシュみたいなのだと思うけど。

例えば、ユーザーが更新しないと内容が変わらないブロックについては、
静的ファイルでも用意しとけばいいだろうし。

更新がある程度あるけど、色んなユーザーから参照されるやつも、
コンテンツキャッシュかもしんないね。

あと、クエリーキャッシュとかも使ってるかも。

全部推測だけど。
0261nobodyさん2005/08/08(月) 14:59:30ID:???
>>259-260
レスどうもです。
それぞれの情報単位で静的ファイルにして表示するときにくっつけるのが
いいのかなぁ。
で、更新頻度の高いものだけ毎回DBからデータをとってくると。
ユーザごとにページ内容がかわるのでキャッシュの方法がイマイチ
イメージできないっす('A`)
0262nobodyさん2005/08/08(月) 15:09:39ID:???
ひとまず、自分のページでどうしたいか詳しく説明して対策アドバイスでも聞いてみたら?
0263nobodyさん2005/08/08(月) 15:38:02ID:???
>>262
これから作ろうとしてるとこです。
質問の仕方がまずくてスマソ。
0264nobodyさん2005/08/08(月) 21:43:14ID:X+TQj6jz
LGPLで質問させてください。

LGPLであるPHPプログラム(ファイルを生成するもの)を、
仕事でWebサイトを構築する際に利用しようとしています。

ただ、そのプログラムを使うと、生成されるファイルに
そのプログラムの名称がコメントアウトで表示されてしまうので、
そのコメントが出ないようにプログラムを修正しました。
(生成されるファイルはWebで公開されるものです)

この場合、LGPLのライセンス上問題ありますでしょうか?
すみませんがご教授願います。
0265nobodyさん2005/08/08(月) 21:53:26ID:???
LGPLで配布っていっても著作権は本人が持ってるんだから、
著作権表示の有無は作者が決める事じゃね?

ただ、LGPLてことは著作権を放棄しないという表明でもあるわけで、
消すのは後味ワリィなぁ。つか著作権者に聞け。
0266nobodyさん2005/08/08(月) 23:18:19ID:???
>>264
悪い事は言わんから、堂々と使ってるって表明した方が良いんじゃないのか?
仕事でそういった部分でミソ付くと後々面倒だぞ?
0267nobodyさん2005/08/08(月) 23:56:07ID:???
LGPLでも、派生物の著作権表示の削除は禁止されている。
0268nobodyさん2005/08/09(火) 00:00:10ID:???
>>264
そのプログラムが海外製でLGPLの表明以外に特にライセンスについて
何も謳っていない(大元の配布物で確認)のであればOK。
そのプログラムが日本製であればLGPL表明以外に
著作権(著作人格権)絡みで制限がないか確認。
この場合、明確に許可されてない=許諾されている と思い込むのは間違い。その逆。
(許諾してない(状態)だけで、許諾しない(意思)とは限らないけど)
0269nobodyさん2005/08/09(火) 00:02:25ID:???
>>267
プログラム名称の表示のところが著作権表示だと
確かにそうなんだけどね。今回のケースはどうなんだろ。
0270nobodyさん2005/08/09(火) 00:09:02ID:???
>>269
コメントでツール名を表示するか
ジェネレータタグを出力する仕様だと
別個に著作権表示を出すことはまれではないかな。
html形式の出力部分に著作権表示を出すと
どの部分の著作権かが分からなくなるし。
商用オーサリングソフトのほとんどがそういう仕様だから。
0271nobodyさん2005/08/09(火) 00:33:56ID:???
だからね、著作権者に聞きなさいって話ですよ。
権利を持ってる人が決めることがらでしょうが。

商用でなきゃいいよとか、商売でもプロジェクトに貢献すればOKとか、
交渉して例外を認めてもらえばいいのよ。

>>267
なんか、成果物についてもなんかあった気がする。
思い出せないが、ほかのライセンスの話かも。
0272nobodyさん2005/08/09(火) 05:19:43ID:B6OGOTi7
PHP5ってmbstring有効にするならiconvを無効にしておいたほうがいいの?
0273nobodyさん2005/08/09(火) 14:49:59ID:???
>>272
有効にしといてもいいけど、普通使わないよね。
mbstringがあればiconvは。
0274nobodyさん2005/08/10(水) 16:06:04ID:???
初歩的な質問で申し訳ないんですけど、
includeとクラスのインスタンス作って使うのとどう違うんでしょうか?
0275nobodyさん2005/08/10(水) 16:15:33ID:???
>>274
カプセル化・・・
0276nobodyさん2005/08/10(水) 19:48:24ID:???
>275
ウィンダム?
02772742005/08/11(木) 03:11:20ID:???
このスレ人がいないんすね・・・
くだ質逝って来ます
0278nobodyさん2005/08/11(木) 09:16:41ID:???
>>275-277


                    .,Å、
                  .r-‐i'''''''''''i''''‐-、
                 o| o! .o  i o !o
                .|\__|`‐´`‐/|__/|
                 |_, ─''''''''''''─ ,、 /
                 ,/ノ      ヽ\、_
              <´フ ● 、 ▼  , ●.ヽ `ヽ
     ,ィ           Y,.-ニ=.`Y´`Y´ 'ニ二ミ/  >>275キングカワウソッス
     /;l  ,.イ  ,,. -''"´レ'´   .l  l      ヽ!`丶、
  ヽ ̄;;;;;;ソ/;;;;l/!   ,.-'´.|     !_」       | ヽ、 `
   l;;;;;;;;;;;;;;;;;;;;;;;l  '´    |             l   `
    l;;;;;;;;;;;;;;;;;;;;l       |               l
0279nobodyさん2005/08/15(月) 11:04:14ID:???
人大杉?
0280nobodyさん2005/08/17(水) 08:15:32ID:???
盛り上がってる?
0281nobodyさん2005/08/17(水) 11:18:47ID:???
急に人いなくなったな
0282nobodyさん2005/08/18(木) 11:41:32ID:???
すべてはスレタイのせい。何のスレだかわからん。
みんなくだ質に流れたな。
0283nobodyさん2005/08/18(木) 12:07:54ID:TEYIGC6I
ここお気に入りから削除しといた^^
0284nobodyさん2005/08/18(木) 12:17:23ID:???
どうせくだらない質問しかないから
0285nobodyさん2005/08/18(木) 12:40:26ID:???
質問スレで聞く香具師って、質問スレに常駐しているわけじゃなさそうだしな。
聞きたいときだけ、質問スレを探して開いてそう。だもんで、スレタイから
「質問」を抜かすと質問者はあまり来ない。
全般的なネタも今更だし、フレームワークやテンプレート、PEAR、OOPなどは
それぞれスレがあるんで、もうこのスレは...
0286nobodyさん2005/08/18(木) 13:03:26ID:???
スレタイ見た感じ、PHPについて語るスレと思って開いた
そしたら質問スレだったw
0287nobodyさん2005/08/18(木) 13:13:53ID:???
いとふゆりょう
0288nobodyさん2005/08/18(木) 14:22:23ID:???
>>286
PHPの質問はたいていくだらないので、
このスレではPHPについて何でも余すところなく好きなだけ語ってください。
でないとこのスレ寒すぎ。
0289nobodyさん2005/08/18(木) 22:13:21ID:???
おまいらに質問だが、guessworkってどうよ?
なんかバージョンが0.0.3からいきなり0.9.0にあがるみたいなんだが。
0290nobodyさん2005/08/19(金) 08:19:34ID:???
うーん、フレームワークはこっちのスレなんだなぁ

【PHP】フレームワークについて語るスレ【総合】
http://pc8.2ch.net/test/read.cgi/php/1123608068/
0291K2005/08/19(金) 10:56:36ID:axffmqRn
header("Location: …")を使ってのリダイレクトで、
URLの指定を相対URLにすると一部のクライアントでは
受け付けないものがあるため、絶対URLでの指定が推奨されるとの
ことなのですが、相対URLでは受け付けないクライアントには
何があるかご存知の方、教えてください。
調べた限りでは、携帯端末の一部で受け付けないらしいですが、
IEやネスケ等のPCのブラウザで受け付けないものってあるのでしょうか?
0292nobodyさん2005/08/19(金) 12:43:56ID:???
print_r($_SERVER);してみると幸せになれるかも
0293nobodyさん2005/08/19(金) 12:56:02ID:???
>>292が意味不明な点について
0294nobodyさん2005/08/19(金) 13:00:29ID:???
>>291
RFC的には絶対URIがMUSTだったような。
HTTP_HOSTがあれば入れてやるのがよろし。これはリクエストに使われたhostが入る。
HTTP/1.0とか入ってない時はSERVER_NAMEだが、鯖をきちんと設定してないと最悪localhostとか入ってくるので注意。
0295nobodyさん2005/08/19(金) 13:15:46ID:???
>>294
バーチャルホストつかってると、リクエストヘッダに適当なHOST突っ込むと
デフォルトホストにつながっちゃうんだけど、HTTP_HOSTつかうのってセキュリティ上どうなのよ
0296nobodyさん2005/08/19(金) 13:18:51ID:???
>>295
適当なhostでBad Requestにならないのは鯖側の問題だと思うが。
0297nobodyさん2005/08/19(金) 13:21:03ID:???
便乗質問で申し訳ないんだがLocationではなく
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=xxxx">の場合でも絶対URIでないとマズイの?
0298nobodyさん2005/08/19(金) 13:38:17ID:???
>>295
鯖の問題はさておき、セキュリティリスクになるかどうかはheader吐くまでのシーケンスを考えれば分かるんじゃまいか。

>>297
それくらい調べろ
0299K2005/08/19(金) 13:40:23ID:axffmqRn
レスありがとうございます。
一応、$_SERVER['HTTP_HOST'] と dirname($_SERVER['PHP_SELF'])を使って
フルパスで記述はしてるんですが、ヘッダによるリダイレクトを結構使っていて、
かつ、これらのページがSSL下のファイルのため、ローカルでのテストではhttp://と記述して
サーバーにアップする時にhttps://にいちいち直すのが手間がかかり、
いっそのこと相対URLで記述してしまおうかと思っていたのですが。。。
このサイトは携帯用ではないので、PCブラウザで問題がなければOKかな、と・・・
だけどやっぱり絶対URLで記述しておくべきですかね。。。
0300nobodyさん2005/08/19(金) 13:53:42ID:???
define('HOME','http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
header("Location:".HOME);
とか、すれば
0301nobodyさん2005/08/19(金) 14:08:17ID:???
>>299
SSLだと'on'になる変数なかったっけ?
■ このスレッドは過去ログ倉庫に格納されています