我更改了登录页面以使用PDO。经过研究,我似乎找不到如何传递登录页面中未定义的变量的解决方案。我可以传递用户名并显示它没有任何问题,但无论我尝试什么,memberid和firstname都不会通过。
我试图传递id和firstname - 显示第一个名字。 id用于定义谁登录,因为数据将使用该用户的现有信息填充数据库。
有两个数据库,一个有注册信息 - id,firstname,lastname,password .....
第二个数据库将填充检查信息,并将与注册数据库<再次这样它就知道谁参加了考试。
以下代码我试图传递登陆页面减去html所需的变量。
的login.php
require_once('inc/config.php');
//check if already logged in move to home page
if( $user->is_logged_in() ){ header('Location: members.php'); }
//process login form if submitted
if(isset($_POST['submit'])){
$memberID = $_POST['memberID'];
$firstname= $_POST['firstname'];
$email = $_POST['email'];
$password = $_POST['password'];
if($user->login($email,$password)){
$_SESSION['email'] = $email;
$_SESSION['memberID'] = $memberID;
$_SESSION['firstname'] = $firstname;
header('Location: members.php');
exit;
} else {
$error[] = 'Wrong email or password.';
}
}
?>
USER.php 这是我添加了memberid和firstname但没有传递的地方。
<?php
include('password.php');
class User extends Password{
private $_db;
function __construct($db){
parent::__construct();
$this->_db = $db;
}
private function get_user_hash($username){
try {
$stmt = $this->_db->prepare('SELECT memberID, firstname, password FROM members WHERE username = :username AND active="Yes WHERE memberID = :memberID AND firstname = :firstname LIMIT 1" ');
$stmt->execute(array('memberID' => $memberID));
$stmt->execute(array('firstname' => $firstname));
$stmt->execute(array('username' => $username));
$row = $stmt->fetch();
return $row['password'];
} catch(PDOException $e) {
echo '<p class="bg-danger">'.$e->getMessage().'</p>';
}
}
public function login($username,$password){
$hashed = $this->get_user_hash($username);
if($this->password_verify($password,$hashed) == 1){
$_SESSION['loggedin'] = true;
return true;
}
}
public function logout(){
session_destroy();
}
public function is_logged_in(){
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){
return true;
}
}
}
?>
登陆页面以下是我在目标网页顶部的内容。
<?php
session_start();
$_SESSION['memberID'] = $memberID['memberID'];
$_SESSION['firstname'] = $firstname['firstname'];
?>
这在html中
<?php echo $_SESSION['memberID']; ?>
<?php echo $_SESSION['firstname']; ?>
如果有人可以提供帮助那就太棒了。请理解我认为PDO更适合登录,这就是我转换到PDO的原因。我不是天才,我在这里寻求帮助。
更新
经过更多测试,它不知道会员是什么,它是未定义的。有人能告诉我如何从user.php中的db定义和获取它吗?这将解决问题。我无法弄清楚如何使用已经存在的代码来完成它。