我目前正在研究一个论坛软件.
我有一个名为User的类,在该类中我有一个名为GetUserGroup的方法来确定用户所在的组.
我正在运行查询并以与我所有其他查询相同的方式关联,我不确定我做错了什么,我查看了查询语法错误但只是看不到任何问题.
可捕获的致命错误:类的对象无法在第22行的C:\ xampp\htdocs\forums\index.php中转换为字符串
这是整个页面:
<?php
include_once('connect.php');
session_start();
if (isset($_SESSION['username'])) {
$username = $_SESSION['username'];
}
class User {
public $usergroup;
public $user;
function __construct() {
if (isset($_SESSION['username'])) {
$this->user = $_SESSION['username'];
}
}
public function GetUserGroup() {
$find_group = "SELECT group FROM users WHERE username='$this->user'";
$run_find_group = mysql_query($find_group);
$find_group_assoc = mysql_fetch_assoc($run_find_group);
$this->usergroup = $find_group_assoc['group'];
}
}
class Forum {
function __construct() {
}
public function DisplayForums() {
$find = "SELECT id,name,description FROM forums";
$run_find = mysql_query($find);
while ($is = mysql_fetch_assoc($run_find)) {
$forum_id = $is['id'];
$forum_name = $is['name'];
$forum_description = $is['description'];
echo "<div style='background:#FF6699;width:1000px;'>";
echo "Forum: <a href='topics.php?t='$forum_id'>".$forum_name."</a><br/>".$forum_description."<br/><hr>";
echo "</div>";
}
}
}
$forum = new Forum();
if (isset($_SESSION['username'])) {
$_SESSION['username'] = new User();
$_SESSION['username']->GetUserGroup();
}
?>
<html>
<head>
<title>Home</title>
</head>
<body>
<?php
if (isset($_SESSION['username'])) {
echo "Welcome, " . $username . "!";
if ($_SESSION['username']->usergroup==admin) {
echo "<span align='right'><a href='/admin/index.php'>Admin CP</a></span>";
}
$forum->DisplayForums();
} else {
$forum->DisplayForums();
echo "
<form action='login.php' method='post'>
<table>
<tr>
<td>Username: </td>
<td><input type='text' name='username' /></td>
</tr>
<tr>
<td>Password: </td>
<td><input type='text' name='password' /></td>
</tr>
<tr>
<td><input type='submit' name='login_submit' value='Login' /></td>
</tr>
</table>
</form>";
}
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你的问题在这里:
$_SESSION['username'] = new User();
Run Code Online (Sandbox Code Playgroud)
你正在为一个User对象分配一个$_SESSION['username'].因此,当$_SESSION['username']->GetUserGroup()被调用时$this->user是User对象.
您需要设置$_SESSION['username']用户名,而不是对象.或者创建一个从对象中获取用户名的方法.你应该添加一个getUsername方法或东西User.
public function GetUserGroup() {
$user = $this->user->getUsername();
$find_group = "SELECT group FROM users WHERE username='$user'";
$run_find_group = mysql_query($find_group);
$find_group_assoc = mysql_fetch_assoc($run_find_group);
$this->usergroup = $find_group_assoc['group'];
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用PHP的__toString方法.
function __toString(){
return $this->getUsername();
}
Run Code Online (Sandbox Code Playgroud)
如果你使用__toString,那么:
$find_group = "SELECT group FROM users WHERE username='$this->user'";
Run Code Online (Sandbox Code Playgroud)
将工作.
| 归档时间: |
|
| 查看次数: |
11907 次 |
| 最近记录: |