フリーPHPスクリプト配布サイト。
トップ > 設置サポート
こんにちわ、たなかと申します。
Reserve Systemを設置・利用させて頂こうと思っております。
SSL利用時に管理用パスワードが上手く認証されず、パスワードエラーで「パスワードが違います。」というメッセージが表示されます。
(非SSL時はパスワード認証されます。)
お客様の利用申し込みのパスワードはSSL利用時も問題なく認証されます。
エラー時のアドレスは
https://ss2.xrea.com/yoyaku.605h.com/reserve/index.php?mode=admin&work=status
となっています。
サーバの仕様の問題なのかもしれませんが、何か心当たりが御座いましたら御教授お願いします。
サーバはxreaを使用しています。
http://www.xrea.com/
サーバ名:s286.xrea.com
Apache 1.3.37
PHP 4.4.6
MySQL 4.0.27
xreaのSSLについてのFAQ
http://sb.xrea.com/showthread.php?threadid=6646
こんにちはー。
> SSL利用時に管理用パスワードが上手く認証されず、パスワードエラーで「パスワードが違います。」というメッセージが表示されます。
ご指摘ありがとうございます。
調べてみましたが、SSL利用時にURL(パス)が変化するサーバーの場合、この現象になるようです。(セキュリティ対策に、ログイン状態を保持できるディレクトリを限定しているため。)
対策ですが、reserve/index.php の210行目あたりにある
$info = parse_url(HTTP_PATH);
この部分を以下のように変更してみてください。
if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] != 'off') {
$info = parse_url(HTTPS_PATH);
} else {
$info = parse_url(HTTP_PATH);
}
恐らくこれでログインできるようになると思います。
大丈夫でしたら、配布プログラムもすべて修正しておきますね。
ではー。
お忙しいところ、お返事ありがとうございます。
ご指摘の部分を変更してみたのですが、同じ現象になってしまいました。
変更後
/* セッション開始 */
function session()
{
if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] != 'off') {
$info = parse_url(HTTPS_PATH);
} else {
$info = parse_url(HTTP_PATH);
}
session_set_cookie_params(SESSION_LIFETIME, $info['path']);
session_start();
return;
}
結果報告まで。
こちらも引き続き調査します!
うむむ、駄目ですか。今のところ他に原因が思いつかないのですが…。
ログイン状態の保持にはセッションを使用するのですが、SSL使用時にセッションが利用できるかどうか、以下のプログラムでチェックしてみてください。
まず、以下の内容を記述した test.php を作成し、reserve ディレクトリ内にアップロードします。(文字コードは何でも大丈夫です。)
<?php
session_set_cookie_params(0, '/yoyaku.605h.com/reserve/');
session_start();
if (isset($_SESSION["count"])) {
$_SESSION["count"]++;
} else {
$_SESSION["count"] = 1;
}
echo 'count:' . $_SESSION["count"];
?>
その後、https://ss2.xrea.com/yoyaku.605h.com/reserve/test.php にアクセスしてみてください。
上のプログラムはページの表示回数をセッションでカウントするプログラムですが、ページを表示するたびに数値がカウントされていけば成功です。
なお、test.php にアクセスする直前には、一旦すべてのブラウザを閉じてからお試しください。(ブラウザを閉じるまで、前回のセッションを保持するように作ってあるので。)
カウントされた場合、PHP Reserve 側に何らかの問題がある可能性があります。
カウントされない場合、session_set_cookie_params の行を削除して再度試してみてください。それでカウントされれば、xreaではSSL使用時、セッションが有効になるディレクトリを限定できない…ということになりそうです。
その場合、PHP Reserve の index.php 内にある session_set_cookie_params の行を削除すればログインできるはずです。(あまり好ましくない記述なのですが。)
session_set_cookie_params を削除してもカウントされない場合、xrea ではSSL使用時にセッションを利用できない…ということになります。流石にそれは無いと思いますが…。
Googleで調べてみても、それらしい情報は見つけられなかったので、もしかしたら原因は全然違うところにあるのかもしれません。
怖くなければ、メールでFTPのログイン情報を送っていただければ、実際にxrea上で色々とセッションのテストをしてみます。
ではー。
test.phpをアップロードしてみました。
こちらのブラウザでは無事カウントアップされます。
ちなみに、PHP Reserve の index.php 内にある session_set_cookie_params の行を削除するとパスワード認証されます。
$info['path']が意図するものに設定されていないのでしょうか。。。
やっぱりxrea上でテストして頂いた方がいいような気がします。。。(力不足でごめんなさい)
後ほどメール致します!
自己解決しました!
Xrea.com さんのサーバでは、環境変数 HTTPS の on, off を取得でないようです。
というわけで、index.phpの
function session()の部分を
/*変更前*********************************/
if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] != 'off') {
$info = parse_url(HTTPS_PATH);
} else {
$info = parse_url(HTTP_PATH);
}
/*変更後*********************************/
if (isset($_SERVER['HTTP_VIA']) and $_SERVER['HTTP_VIA'] != 'off') {
$info = parse_url(HTTPS_PATH);
} else {
$info = parse_url(HTTP_PATH);
}
とすると、アクセスできるようになりました。
が、これでセキュリティ上問題ないのかちょっと気になります。
汎用的なコーディングではないかもしれないし。。。
参考にしたurlも記述しておきますね。
☆SSL暗号通信による Movable Type について
http://www.osbsd.net/2004/07/ssl_movable_typ_5341.html
☆SSL通信への対応(≡ Drupal Japan ≡)
http://drupal.jp/node/331
お知らせありがとうございます~。XREAは、特殊な仕様のサーバーだったのですね。
今後の参考にさせていただきます。
ではー。
お久しぶりです、たなかです。
お礼を言い忘れていたので^^;再び参上しました。
いろいろ対応して頂いてありがとうございます。
来年もいい年になりますように☆