我敢肯定这是显而易见的,但是我是PHP的初学者。我只是想从对象中提取一些数据,将其存储在数组中,然后将该数组分配给$_SESSION[]
。数据是用户名和用户ID。
但是,目前无法正常工作。
其余代码工作正常。有值$user->id;
和$user->user;
。我似乎无法将它们粘成$s_id
和$s_user
。
User.php也可以正常工作,我只是将其包括在内以供参考。
login.php:
<?php // login.php
require_once("user.php");
error_reporting(E_ALL ^ E_NOTICE);
ini_set('display_errors','On');
session_start();
$_SESSION['userid'] = ''; // Force a logout
$r_userid = $_REQUEST['userid'];
$r_passwd = $_REQUEST['passwd'];
$result = array();
$result['success'] = false;
if (isset($r_userid) && ($r_userid != '') && isset($r_passwd) && ($r_passwd != '')) {
$user = User::findOnIdPassword($r_userid, $r_passwd);
if ($user) {
$s_id = $user->id;
$s_user = $user->user;
$_SESSION['userid'] = array($s_id, $s_user);
$result['message'] = "Successful Login";
$result['success'] = true;
} else {
$result['message'] = "Login Failed, please try again";
}
} else {
$result['message'] = "Missing User id and password";
}
print(json_encode($result));
?>
user.php:
<?php // user.php
require_once "sql.php";
Class User {
private $id;
private $user;
private $email;
private $password;
public function __construct($id, $user, $password, $email) {
$this->id = $id;
$this->user = $user;
$this->password = $password;
$this->email = $email;
}
public function insert() {
$query = "insert into Users (username, password, email) values"
. "('$this->user', '$this->password', '$this->email');";
$result = Sql::query($query);
return $result;
}
public function getId() {
return $this->id;
}
public function getEmail() {
return $this->email;
}
public static function findOnIdPassword($user, $passwd) {
$query = "select * from Users where username = '$user' and password = '$passwd';";
if ($result = Sql::query($query)) {
if (mysqli_num_rows($result) != 1) {
$result = null;
} else {
$row = mysqli_fetch_assoc($result);
$id = $row['id'];
$user = $row['username'];
$password = $row['password'];
$email = $row['email'];
$result = new User($id, $user, $password, $email);
}
}
return $result;
}
// findOnEmail(email)
// update(newEmail, newPassword)
// findAll for admin
}
?>
谢谢!
您要访问的属性是私有的。但是对于$ id,有一种方法可以用来提取数据:
$s_id = $user->getId();
对于用户,您可以在用户类内的user.php中创建一个额外的get方法:
public function getUser(){
return $this->user;
}
然后在login.php中使用它:
$s_user = $user->getUser();
但是特别是对于您的代码,我看不到通过User对象提取用户名的原因。我看到$ r_userid用作User :: findOnIdPassword($ user,$ passwd)方法的$ user参数的实际值,该方法在SQL“ WHERE username ='$ user'”子句中应用。然后再次从数据库中提取$ user作为用户名字段。因此,如果SQL查询成功,则$ r_userid和$ s_user中的值将相等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句