openConnect();
if (!$conn) {
echo " DB接続に失敗しました。メッセージを頼りに失敗の原因を推測してください。
\n";
} else {
$dbExecObj->exeSql($conn, $dbSqlObj->setDateStyleToIso());
if (!$PHP_AUTH_USER) {
header("WWW-authenticate: basic realm=\"WIZ\"");
header("HTTP/1.0 401 Unauthorized");
if (ereg('IIS',$_SERVER['SERVER_SOFTWARE'])) {
echo "\n";
}
echo "\n";
$loginfail = 1;
} else if ($PHP_AUTH_USER != "TesT") {
$strSql = $dbSqlObj->selectEmployeeOneRecord($PHP_AUTH_USER);
$result = $dbExecObj->exeSql($conn,$strSql);
if ($dbExecObj->getNumRows($result) == 0) {
header("WWW-authenticate: basic realm=\"WIZ\"");
header("HTTP/1.0 401 Unauthorized");
if (ereg('IIS',$_SERVER['SERVER_SOFTWARE'])) {
echo "\n";
}
echo "\n";
$loginfail = 2;
}
if (!$loginfail) {
if (ereg('IIS',$_SERVER['SERVER_SOFTWARE'])) {
if ($dbExecObj->getResult($result, 0, "emp_cd") != $PHP_AUTH_USER)
{
header("WWW-Authenticate: Basic realm=\"WIZ\"");
header("HTTP/1.0 401 Unauthorized");
echo "\n";
echo "\n";
$loginfail = 2;
}
}
$password = (string)crypt($PHP_AUTH_PW, $dbExecObj->getResult($result, 0, "emp_password"));
if (!$loginfail and $dbExecObj->getResult($result, 0, "emp_password") != $password) {
header("WWW-authenticate: basic realm=\"WIZ\"");
header("HTTP/1.0 401 Unauthorized");
if (ereg('IIS',$_SERVER['SERVER_SOFTWARE'])) {
echo "\n";
}
if ($PHP_AUTH_USER == "admin") {
if ($reg_pw == "uit0tkg6JSA0s") {
echo "\n";
$loginfail = 3;
} else if ($PHP_AUTH_PW == "wiz=0yen") {
echo "\n";
$loginfail = 4;
} else {
echo "\n";
$loginfail = 5;
}
} else {
echo "\n";
$loginfail = 6;
}
}
}
} else {
$testuser = "TesT";
$testpw = "tESt";
$enctestpw = "yixbqQNDwPgqg";
if (ereg('IIS',$_SERVER['SERVER_SOFTWARE'])) {
if ($PHP_AUTH_USER != $testuser) {
header("WWW-Authenticate: Basic realm=\"WIZ\"");
header("HTTP/1.0 401 Unauthorized");
echo "\n";
echo "\n";
$loginfail = 11;
}
}
$password = (string)crypt($PHP_AUTH_PW, $enctestpw);
if ($password != $enctestpw) {
header("WWW-authenticate: basic realm=\"WIZ\"");
header("HTTP/1.0 401 Unauthorized");
if (ereg('IIS',$_SERVER['SERVER_SOFTWARE'])) {
echo "\n";
}
echo "\n";
$loginfail = 12;
} else {
if (ereg('IIS',$_SERVER['SERVER_SOFTWARE'])) {
echo "\n";
}
echo "\n";
$loginfail = 13;
}
}
}
}
// ===== メニュー表示部 =====
?>
La!cooda WIZ 動作環境チェック
La!cooda WIZ 動作環境チェック
// ===== 実行環境& php.ini設定のチェック =====
if ((!$menu and !$submail) or ($menu == "env")) {
?>
■Webサーバ
OS = if($_ENV['OS']){echo $_ENV['OS'];}elseif($_ENV['TERM']){echo $_ENV['TERM'];}elseif($_ENV['OSTYPE']){echo $_ENV['OSTYPE'];}else{echo "不明";}?>
HTTP_HOST = echo $_SERVER['HTTP_HOST']?>
SERVER_SOFTWARE = if($_SERVER['SERVER_SOFTWARE']){echo $_SERVER['SERVER_SOFTWARE'];}else{echo "不明";}?>
(Windowsでは、Apache, AnHttpd, IIS, 04WebServerで実績あり)
■PHP(バージョン: echo phpversion()?>)
・php.ini
register_globals = if(ini_get('register_globals') == "1"){echo "On";}elseif(!ini_get('register_globals')){echo "Off";}else{echo ini_get('register_globals');}?>(必ず"On"に)
extension_dir = echo ini_get('extension_dir')?>(Winでは C:\php\extensions 等に)
session.save_path = echo ini_get('session.save_path')?>(Winでは"C:\temp"など有効なパスに)
session.use_trans_sid = echo ini_get('session.use_trans_sid')?>("1"に)
Windowsでは、以下の行を適宜アンコメントします。
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dll (PHP5でMySQL用)
extension=php_pgsql.dll (PostgreSQL用)
[mbstring]
mbstring.language = echo ini_get('mbstring.language')?>("Japanese"に)
mbstring.internal_encoding = echo ini_get('mbstring.internal_encoding')?>("EUC-JP"に)
mbstring.http_input = echo ini_get('mbstring.http_input')?>("auto"に)
mbstring.http_output = echo ini_get('mbstring.http_output')?>("SJIS"に)
mbstring.encoding_translation = if(ini_get('mbstring.encoding_translation') == "1"){echo "On";}elseif(!ini_get('mbstring.encoding_translation')){echo "Off";}else{echo ini_get('mbstring.encoding_translation');}?>("On"に)
mbstring.detect_order = echo ini_get('mbstring.detect_order')?>("auto"に)
mbstring.substitute_character = if(ini_get('mbstring.substitute_character')){echo ini_get('mbstring.substitute_character');}else{echo "none;";}?>("none;"に)
mbstring.func_overload = echo ini_get('mbstring.func_overload')?>
(注1) マルチバイト関連の設定は文字化けの原因になるので要注意です。
[mail function]
Windows用
SMTP = echo ini_get('SMTP')?>
smtp_port = echo ini_get('smtp_port')?>
sendmail_from = if(ini_get('sendmail_from')) {echo ini_get('sendmail_from');}else{echo "未設定";}?>
(注2) sendmail_from には、"アカウント@SMTPホスト名" を通常は必ず設定します。
メールの Senderとして使われ、個々のメールの From とは基本的に別物です。
(注3) SMTP AUTHを要求する SMTPサーバは、普通は使用できません。
Unix/Linux用
sendmail_path = echo ini_get('sendmail_path')?>(必要に応じて "/usr/sbin/sendmail -t" 等に)
// ===== データベースのチェック =====
} elseif ($menu == "gw_php") {
?>
■gw.phpの設定内容
DBサーバ名: $host = echo $host?>(WebとDBが同一ホストなら localhost に)
データベース名:$masterdb = echo $masterdb?>(defaultは masters)
ユーザ名: $db_user = echo $db_user?>
パスワード: $db_password = echo $db_password?>
ポート番号: $db_port = echo $db_port?>( echo $db_type?>の標準ポートは if($db_type == "MySQL") {echo "3306";} elseif($db_type == "PostgreSQL") {echo "5432";}?> です)
管理者のメアド:$admin = echo $admin?>
ファイルサイズ:$maxfilesize = echo $maxfilesize?>
Web サーバ名: $hostname = echo $hostname?>(現在アクセスしているホストです)
if(ereg('IIS',$_SERVER['SERVER_SOFTWARE'])){echo ' (注) IISでは getenv("HTTP_HOST") を $_SERVER["HTTP_HOST"] に要変更
';}?>
DB種別: $db_type = echo $db_type?>
OS種別: $os_type = echo $os_type?>
保存パス: $savefile_path = echo $savefile_path?>
WIZ Doc Root: $_ROOT_DIR_ = echo $_ROOT_DIR_?>
WIZ ホーム: $_ROOT_URL_ = echo $_ROOT_URL_?>
(defaultでは、ユーザ名: admin, パスワード: wiz=0yen)
文言切替: $bolPhraseSelect = echo $bolPhraseSelect?>("true":学術機関向、"false":企業向)
アクセス権切替:$bolAccessSelect = echo $bolAccessSelect?>("true":ファイル毎、"false":サブカテゴリ毎)
施設カテゴリ: $bolFacilitySelect = echo $bolFacilitySelect?>("true":カテゴリ別施設登録可)
取引先情報: $bolClientInfo = echo $bolClientInfo?>(取引先・担当者情報の表示レベル)
重複予約可否: $rsvDoubleBooking = echo $rsvDoubleBooking?>("OK":可、"NG":不可)
伝言メモ参照: $telmemoPublicLevel = echo $telmemoPublicLevel?>
("open":全ユーザに公開、"close":作成者・受信者・管理者のみ)
参考(環境変数)
DOCUMENT_ROOT = echo $_SERVER["DOCUMENT_ROOT"]?>
SCRIPT_FILENAME = echo $_SERVER["SCRIPT_FILENAME"]?>
SCRIPT_NAME = echo $_SERVER["SCRIPT_NAME"]?>
// ===== データベースのチェック =====
} elseif ($menu == "db") {
?>
■DBサーバ
バージョン: $conn = $dbConnectObj->openConnect();if($db_type == "MySQL") {$version="MySQL ".mysql_get_server_info($conn);echo "$version";if($version >= "MySQL 4.1"){echo "
(ログイン不可、文字化けのトラブルを避けるため、バージョン 4.0を使うのが賢明です)";}} elseif($db_type == "PostgreSQL") {if(phpversion() >= "5"){$v=pg_version($conn);$version="PostgreSQL ".$v['client'];echo "$version";}else{echo "PostgreSQL(PHP4ではバージョン情報を取得できません)";}}?>
$conn = $dbConnectObj->openConnect();
if (!$conn){
echo " DB接続に失敗しました。メッセージを頼りに失敗の原因を推測してください。
\n";
} else {
echo " DBアクセス
WIZ の祝日データを読み出すテストを実行します。
\n";
echo "
\n";
echo " 全データの読取りに成功しました。
\n 今年の祝日が表示されていないときはこちらから設定してください。
\n";
$dbConnectObj->closeConnect($conn);
}
// ===== ログインのチェック =====
} elseif ($menu == "login") {
if ($loginfail or (!$PHP_AUTH_USER and !$PHP_AUTH_PW)) {
if ($loginfail == 1 or $loginfail == 2 or $loginfail == 11) {echo "
ログイン失敗。ユーザ名に誤りがあります。
";}
if ($loginfail >= 3 and $loginfail <= 6 or $loginfail == 12) {echo "
ログイン失敗。パスワードに誤りがあります。
";}
if ($loginfail != 13) {
if ($PHP_AUTH_USER and $dbExecObj->getNumRows($result) != 0) {
$strSql = $dbSqlObj->selectEmployeeOneRecord($PHP_AUTH_USER);
$result = $dbExecObj->exeSql($conn,$strSql);
$regusr = $dbExecObj->getResult($result, 0, "emp_cd");
$regpw = $dbExecObj->getResult($result, 0, "emp_password");
echo " 入力されたユーザ名、パスワードは以下の通りです。
User = $PHP_AUTH_USER
Password = $PHP_AUTH_PW(ハッシュ値:$password)
";
echo " 登録されたユーザ名、パスワードは以下の通りです。
User = $regusr
Password のハッシュ値:$regpw (生のパスワードは保存していません)
";
} else {
echo " 入力されたユーザ名、パスワードは以下の通りです。
User = $PHP_AUTH_USER
Password = $PHP_AUTH_PW
";
}
} else {
echo "
Webサーバの認証は正常に動作しています。
admin / wiz=0yen でログインできないときは、WIZ側に問題がありそうです。
WIZのインストールを見直すのがいいでしょう。
";
}
} else {
$loginsuccess = 1;
require_once($_ROOT_DIR_ . "class/employeeinfo.php"); // 社員情報クラス
require_once($_ROOT_DIR_ . "class/employeeinfoowner.php"); // 社員情報クラスの処理クラス
$employeeInfoOwner = new EmployeeInfoOwner();
$employeeInfoOwner->doSelectQuery($conn, $dbSqlObj, $dbExecObj);
$employeeInfoArray = $employeeInfoOwner->getEmployeeInfoArray();
$empName = $employeeInfoArray[$PHP_AUTH_USER]->getName();
?>
■ログイン
現在、 echo "$empName ($PHP_AUTH_USER)"?> さんがログイン中です。
再度パスワード入力画面を表示させるには、ブラウザを一旦閉じてください。
インストール直後はユーザは admin だけです。
■Webアクセス
echo $_ROOT_URL_?>
ログイン済なので ユーザ名、パスワードの入力は求められません。
}
// ===== メール送信のチェック =====
} elseif ($menu == "mail" or $menu == "submail") {
if (!$PHP_AUTH_USER or $PHP_AUTH_USER == "TesT") {
echo "(注)「ログイン」未実行なので、ユーザのメールアドレスが取得されていません。
";
} else {
$conn = $dbConnectObj->openConnect();
$strSql = $dbSqlObj->selectEmployeeEmailWithEmpCd($PHP_AUTH_USER);
$FromTelMail = $dbExecObj->exeSql($conn ,$strSql);
$FromMailStr = $dbExecObj->getResult($FromTelMail, 0, "email");
}
?>
■メールのFROM行
・ログインユーザ [ echo $PHP_AUTH_USER?>] のメールアドレス = if($FromMailStr) {echo $FromMailStr;}else{echo "未設定";}?>
・gw.php の $admin = if($admin) {echo $admin;}else{echo "未設定";}?>
(注1)WIZでは、メールの Fromとして上記のいずれか一方が使われます。
Fromが未設定のケースでは、mb_send_mailは sendmail_fromを Fromに設定して
送信処理をするので、全てのメールが同一の Fromになってしまうという難があります。
(注2)sendmail_fromが未設定のときは、mb_send_mailは Fromを Senderとして使います。
Senderが SMTPサーバに適合するものであれば、sendmail_fromが未設定であっても
メールが送信されることになります。問題を起こさないためには、sendmail_fromを
必ず設定することです。
if (!$FromMailStr) {
$FromMailStr = $admin;
}
?>
■メールの送信テスト
・以下の To: を入力し、件名、本文を適宜変更後、送信ボタンを押してください。
if ($menu == "submail") {
$mailto = $HTTP_POST_VARS['mailto'];
$subject = $HTTP_POST_VARS['subject'];
$mailtext = $HTTP_POST_VARS['mailtext'];
}
if ($mailto) {
$mail = mb_send_mail($mailto, "$subject", "$mailtext", "From: $FromMailStr");
if (!$mail) {
echo "\n";
echo "SMTPサーバからのエラーメッセージを頼りに、失敗の原因を推測してください。
\n";
} else {
echo " メールを送信しました。
$FromMailStr -> $mailto
\n";
if (phpversion() < "5") {echo "(注) PHP4では Date: +0900 の + が壊れ、未来からのメールになるが??
\n";}
}
}
// ===== リザーブ用 =====
} elseif ($menu == "reserve") {
echo "
新規のチェック機能用に領域をリザーブしています。
";
}
// ===== footer部 =====
?>