- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在构建一个登录函数,由于某种原因,我的 $_SESSION 变量没有获得任何值,如果有,我尝试回显
它们,但它们不会显示。
这是我试图设置它们的地方:
function login()
{
$db=new Database();
session_start();
if(isset($_POST['login'])){
$username=$_POST['username'];
$password=md5($_POST['password']);
$query=("SELECT * FROM user
WHERE username = '$username'
AND password = '$password'");
$row=$db->select($query);
if(mysqli_num_rows($row)==1)
{
$_SESSION['is_logged_in'] = true;
$_SESSION['id'] = $row['id'];
$_SESSION['username'] = $row['username'];
$_SESSION['name'] = $row['name'];
header('Location: index.php');
}
}
}
在我的 index.php
中,我只有 session_start();
和 echo $_SESSION['username'];
可能导致这些错误的原因是什么?
我用错了吗?我是否使用了错误的 $query
变量?
非常感谢任何帮助
编辑:这是我的 config.php
:
<?php
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_NAME','PHPWizard');
?>
这是我的Database.php
:
<?php
class Database{
public $host = DB_HOST;
public $username = DB_USER;
public $password = DB_PASS;
public $db_name = DB_NAME;
public $link;
public $error;
/*
* Class Constructor
*/
public function __construct(){
//Call Connect Function
$this->connect();
}
/*
* Connector
*/
private function connect(){
$this->link = new mysqli($this->host, $this->username, $this->password, $this->db_name);
if(!$this->link){
$this->error = "Connection Failed: ".$this->link->connect_error;
return false;
}
}
/*
* Select
*/
public function select($query){
$result = $this->link->query($query) or die($this->link->error.__LINE__);
if($result->num_rows > 0){
return $result;
} else {
return false;
}
}
/*
* Insert
*/
public function insert($query){
$insert_row = $this->link->query($query) or die($this->link->error.__LINE__);
//Validate Insert
if($insert_row){
header("Location: index.php?msg=".urlencode('Record Added'));
exit();
} else {
die('Error : ('. $this->link->errno .') '. $this->link->error);
}
}
/*
* Update
*/
public function update($query){
$update_row = $this->link->query($query) or die($this->link->error.__LINE__);
//Validate Insert
if($update_row){
header("Location: index.php?msg=".urlencode('Record Updated'));
exit();
} else {
die('Error : ('. $this->link->errno .') '. $this->link->error);
}
}
/*
* Delete
*/
public function delete($query){
$delete_row = $this->link->query($query) or die($this->link->error.__LINE__);
//Validate Insert
if($delete_row){
header("Location: index.php?msg=".urlencode('Record Deleted'));
exit();
} else {
die('Error : ('. $this->link->errno .') '. $this->link->error);
}
}
}
我的连接会不会是变量没有获得任何值的原因?
最佳答案
在将 $row 用作数组之前,您必须获取数据:
这个:
$row = $db->select($query);
$_SESSION['id'] = $row['id'];
应该是:
$result = $db->select($query);
if ($result) {
$row = $result->fetch_assoc();
$_SESSION['id'] = $row['id'];
}
关于php - $_SESSION 变量不会取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34011005/
这个问题在这里已经有了答案: final keyword in method parameters [duplicate] (9 个回答) 关闭 8 年前。 在此示例中,声明 Object fina
我的目标:是通过我的函数更新字段获取选定值并使用函数输出值运行它。 问题:当我从列表中选择值时,它不会触发函数,也不会更新字段。 感谢您的帮助。 HTML 12 14 16 18 20 22 24
我有一本具有这种形式的字典: myDict = {'foo': bar, 'foobar baz': qux} 现在,我想拆分字典键中的空格,使其成为下一个键并获取值(重复)。 myDictRev1
vector a; vector b; int temp_holder; cout > temp_holder) a.push_back(temp_holder); cout > temp_h
Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿。当然,我
我正在使用 jquery ui 日期选择器来获取 fromDate 和 toDate 以下是from日期的代码 $("#from_date").datepicker({
我是一名优秀的程序员,十分优秀!