Hello Everyone我是PHP的新手,我正在尝试在php中创建一个非常小的应用程序 我正在尝试使用php中的会话来访问用户的用户ID,因为我遵循这些步骤
我在我的应用程序中创建这些类
我的第一堂课是数据库经理,我把它放在模型文件夹
中public function executeQuery($query) {
$result = mysql_query($query);
if ($result === false) {
$this->closeConnection($this->conn);
exit;
}
// extract data from results, returning an associative array
$rows = Array();
while ($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
}
然后我创建了这两个类
首先是loginManager
class LoginManager
{
function checkLogin($arr)
{
require_once(FRONT_ROOT_PATH.'DatabaseManager.php');
$query ="Select * from tbusers where username='".$arr['username']."' and password='".$arr['password']."'";
$db= new DatabaseManager();
$result=$db->executeQuery($query);
return $result;
}
}
,第二个是LoginInit
<?php
session_start();
include(LIB_PATH."Login/LoginManager.php");
if(isset($_POST['addlogin']))
{
$obj= new LoginManager();
$userlist=$obj->checkLogin($_POST);
if(Count($userlist)>0)
{
$_SESSION['uid']=$userlist['userid'];
header('location:/ProjectDream/view/home/home.php');
}
else
{
echo "Login Failed";
}
}
}
在这个课程中我添加了会话,之后我在这个php页面上调用这些类
<?php
include('Include/config.inc.php');
include(LIB_PATH."Login/Logininit.php");
?>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Login</title>
<!-- CSS -->
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/animate.css">
<link rel="stylesheet" href="css/styles.css">
</head>
<!-- Main HTML -->
<body>
<!-- Begin Page Content -->
<div id="container">
<form action="" method="post">
<input type="hidden" name="addlogin"/>
<label for="name">Username:</label>
<input type="name" name="username">
<label for="username">Password:</label>
<p><a href="#">Forgot your password?</a>
<input type="password" name="password">
<div id="lower">
<input type="checkbox"><label class="check" for="checkbox">Keep me logged in</label>
<input type="submit" value="Login">
</div>
</form>
</div>
<!-- End Page Content -->
</body>
</html>
当用户登录时我将用户发送到home.php页面我在home.php
上写了这段代码<?php
session_start();
if(isset($_SESSION['uid']))
{
echo $_SESSION['uid'];
}
else
{
echo "No Session ";
}
?>
现在,当我运行此应用程序时,它在$ _SESSION变量中显示没有值 是否可以在PHP中调用类级别的会话。请告诉我如何在这里使用会话 感谢
答案 0 :(得分:0)
赋值的变量应位于等式的左侧。 所以 改变
$userlist['userid']=$_SESSION['uid'];
到
$_SESSION['uid']=$userlist['userid'];
答案 1 :(得分:0)
从数据库中读取值时,必须为$_SESSION['uid']
指定一些值。类似的东西:
$_SESSION['uid'] = $row['uid'];
另请注意,如果您要使用$_SESSION
变量中的数据,则必须致电session_start()
。
答案 2 :(得分:0)
尝试这样它应该有效:
$_SESSION['uid']=$userlist[0]['userid'];
在您的代码中:
while ($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
您要将$row
添加到$rows
,以便拥有$rows[0]=$row
;然后$rows[1]=$row
;
所以实际上$rows['userid']
没有设置,设置为$rows[0]['userid']