めっきり寒い毎日ですが,
きみ, それPHP 4やで
すっかり感傷にふけったところで,
今回は,
診断するのはログイン処理を行うlib/
とcontroller/
の2ファイルです。では,
controller/
<?php
require_once('lib/BasicController.php');
require_once('lib/CheckExecuter.php');
require_once('lib/Login.php');
require_once('model/UserModel.php');
define_once('LOGIN_ID', 'login_id');
define_once('PASSWORD', 'password');
/**
* <b>LoginController</b>
* ログインコントローラ
*
* @author hoge
* @version $Id: LoginController.php,v 1.1.1.1 2004/10/01 08:46:04 hoge Exp $
*/
class LoginController extends BasicController {
var $NEXT_PAGE = 'top.php';
/**
* コンストラクタ
*
* @param $values 値連想配列(フォームからの入力の際は,$_POST)
*/
function LoginController() {
$this->init();
// セッションクリア
unset($_SESSION[SESSION_USER]);
if (Http::isPost()) {
$this->values = $_POST;
} else {
$this->values = null;
}
}
/**
* メイン処理
*/
function execute() {
if (Http::isPost()) {
// 値チェック
$checker = new CheckExecuter($this);
$checker->check();
$this->errorMessages = $checker->getErrorMessages();
// 正常なら処理を行う
if (!$this->isError()) {
// セッションクリア
$_SESSION = array();
// ログイン処理
$userModel = new UserModel();
$userModel->setLoginId($this->values[LOGIN_ID]);
$userModel->setPassword($this->values[PASSWORD]);
if (Login::auth($userModel)) {
unset($_SESSION[SESSION_USER]);
$_SESSION[SESSION_USER] = $userModel;
// 次ページへ
$this->transferPage($this->NEXT_PAGE);
} else {
$this->addErrorMessage('error_not_login');
return;
}
}
}
}
/**
* ログインIDチェック
*/
function checkLoginId() {
if (isset($this->values[LOGIN_ID])
&& $this->values[LOGIN_ID]) {
return null;
}
else {
return "check_login_id";
}
}
/**
* ログインIDチェック
*/
function checkLoginId() {
if (isset($this->values[LOGIN_ID])
&& $this->values[LOGIN_ID]) {
return null;
}
else {
return "check_login_id";
}
}
/**
* パスワードチェック
* 半角英数8桁以内
*/
function checkPassword() {
if (isset($this->values[PASSWORD])
&& $this->values[PASSWORD]
&& ereg('^[a-zA-Z0-9]+$', $this->values[PASSWORD])
&& strlen($this->values[PASSWORD]) <= 8) {
return null;
}
else {
return "check_password";
}
}
}
?>
lib/
<?php
require_once('lib/Log.php');
require_once('lib/Database.php');
/**
* <b>Login</b>
* ログインクラス
* ログイン管理を行う
*
* @author hoge
* @version $Id: Login.php,v 1.1.1.1 2004/10/01 08:46:04 hoge Exp $
*/
class Login {
/**
* コンストラクタ
*/
function Login() {
}
/**
* 認証
*
* @param &$userModel ユーザ情報Model
* IdCardNoとPasswordをセットしておく
* @return 認証OKならtrue
* エラーならfalse
*/
function auth(&$userModel) {
if (get_class($userModel) != 'usermodel') {
return false;
}
$handleName = addslashes($userModel->getHandleName());
$password = addslashes($userModel->getPassword());
$where = sprintf('handle_name=\'%s\' and password =\'%s\'', $handleName, $password);
$db =& Database::getInstance();
if (($record = $db->getOneRecord('*', 'v_user', $where))) {
// ユーザ情報をセット
$userModel->setId($record['id']);
$userModel->setIdCardNo($record['id_card_no']);
$userModel->setEmail($record['email']);
$userModel->setFirstName($record['first_name']);
$userModel->setLastName($record['last_name']);
$userModel->setFirstNameKana($record['first_kana']);
$userModel->setLastNameKana($record['last_kana']);
$userModel->setPrefecture($record['prefecture']);
$userModel->setAddress($record['address']);
$userModel->setSubAddress($record['sub_address']);
$userModel->setZip($record['zip']);
$userModel->setTel($record['tel']);
$userModel->setBirthdayYear($record['birthday_year']);
$userModel->setBirthdayMonth($record['birthday_month']);
$userModel->setBirthdayDay($record['birthday_day']);
$userModel->setLangCode($record['lang_code']);
return true;
} else {
return false;
}
}
}
?>