php - 调用 memeber 函数.. 在字符串上,我如何克服这个错误
问题描述
创建一个登录页面,如果用户已经登录,他们将被重定向到主页,但是在执行时我得到错误代码:
调用字符串上的成员函数 isloggiedin()
我在这里做错了什么?
<?php
include "H:\p3t\phpappfolder\public_php\FYP\includes\api\config\database.php";
if(User::is_loggedin()!="")
{
$user->redirect('home.php');
}
if(isset($_POST['btn-login'])) // line 11 where new error exists
{
$user = $_POST['username'];
$password = $_POST['password'];
if(User::login($user,$password))
{
$user->redirect('home.php');
}
else
{
$error = "Wrong Details !";
}
}
?>
以下代码也可能有帮助,因为它是我的 class.user.php 文件:
<?php
class USER
{
private $db;
function __construct($DB_con)
{
$this->db = $DB_con;
}
public function login($user,$password)
{
try
{
$stmt = $this->db->prepare("SELECT * FROM user WHERE user_name=:username OR user_email=:password LIMIT 1");
$stmt->execute(array(':username'=>$user, $password));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() > 0)
{
if(password_verify($password, $userRow['user_pass']))
{
$_SESSION['user_session'] = $userRow['user_id'];
return true;
}
else
{
return false;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function is_loggedin()
{
if(isset($_SESSION['user_session']))
{
return true;
}
}
public function redirect($url)
{
header("Location: $url");
}
public function logout()
{
session_destroy();
unset($_SESSION['user_session']);
return true;
}
}
?>
如您所见,我有“isloggedin”功能,所以我不明白为什么会出现错误
在遵循答案中的建议后,我收到了错误消息:
解析错误:语法错误,H:\p3t\phpappfolder\public_php\FYP\includes\api\login.php 中的意外 'if' (T_IF) 第 11 行
解决方案
$user
是字符串参数,不是User
对象,所以不能使用$user->is_loggedin()
.
该is_loggedin()
方法不使用任何类属性,因此它可以是静态方法。
public static function is_loggedin()
{
return isset($_SESSION['user_session']);
}
然后你可以使用
if (User::is_loggedin())
此外,你不应该设置$user
和$password
之前
if (isset($_POST['btn-login']))
推荐阅读
- scala - 多态函数
- python - 根据另一个 DataFrame 创建包含具有值的 dicts 的 DataFrame
- c# - 正则表达式匹配由 1 个空格或 1 个连字符分隔的单词
- gson - 将 JSONobject 值获取到动态生成的 JSONobject 中的变量
- python-3.x - 使用单个 for 循环同时迭代集合和列表,它是如何工作的?
- html - 如何使用标签和过滤器将 index.html 的页脚显示到所有 html 页面?
- python - 仅更新给定的值并忽略 dynamodb 中的其他值
- laravel - Laravel 7 Route Group 在一些相关路线上返回 404
- powershell - 从 Azure DevOps 获取所有项目下的所有用户
- javascript - 谁能解释一下下面的代码?