user.php(class)、login.php、index.phpがあります。index.phpでフォームを送信すると、フォームアクションはlogin.phpに移動し、このファイルはユーザークラスを使用して、ログインしようとするユーザーが存在するかどうかを確認します。trueの場合、index.fileに再度リダイレクトします。しかし、ユーザーがログインするときに、ユーザーのfull_nameをindex.phpに書き込みたいと思います。しかし、クラスからfull_nameを取得することはできません。
注:コードのrequire_once部分には、database.php、session.php、functions.phpなどの必要なファイルが含まれています。したがって、それらについての誤りはなく、関数にエラーもありません。私が欲しいのは、ユーザーログイン時にfull_nameをindex.phpに書き込む方法です。
これがuser.phpです:
require_once $_SERVER['DOCUMENT_ROOT'].'/includes/database.php';
class User{
protected static $table_name="users";
protected static $db_fields = array('id', 'email', 'password', 'first_name',
'last_name');
public $id;
public $email;
public $password;
public $first_name;
public $last_name;
public function full_name() {
if(isset($this->first_name) && isset($this->last_name)) {
return $this->first_name . " " . $this->last_name;
} else {
return "";
}
}
public static function verify($user, $email="", $password="") {
global $database;
$sql = "SELECT * FROM users ";
$sql .= "WHERE email = '{$email}' ";
$sql .= "AND password = '{$password}' ";
$sql .= "LIMIT 1";
$result_array = self::find_by_sql($sql);
if (!empty($result_array)) {
$user->first_name = $result_array['first_name'];
$user->last_name = $result_array['last_name'];
return array_shift($result_array);
} else {
return false;
}
}
$user = new User();
//User class continue but i inserted necessary parts. All functions in the class works.
これがlogin.phpです:
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/includes/initialize.php'; ?>
<?
if($session->is_logged_in()) {
redirect_to("index.php");
}
if (isset($_POST['submit'])) {
$email = trim($_POST['email']);
$password = trim($_POST['password']);
$found_user = User::verify($user,$email, $password);
if ($found_user) {
$session->login($found_user);
redirect_to("index.php");
} else {
$message = "There is error about username/password";
echo $message;
}
} else {
$email = "";
$password = "";
}
?>
これがindex.phpです:
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/includes/initialize.php'; ?>
<?php
if($session->is_logged_in()) {
echo $user->full_name();
} else {
echo "No name";
}
?>