我正在尝试从同一表单为用户和管理员创建登录,根据他们是管理员还是用户将他们重定向到特定页面。
我在数据库中为管理员创建了一个列,并声明 admin = 1。在输入管理员和用户的详细信息时,我似乎收到此错误。
Fatal error: Call to a member function query() on a non-object in ...root\CheckLogin.php on line 31
感谢任何帮助,谢谢!
<?php
session_start();
if(!isset($_SESSION['username'])){
// not logged in
}
?>
<?php
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
// Query
global $dbh
$result= $dbh->query("SELECT * FROM members WHERE username='$myusername' AND password='$mypassword';");
// Mysql_num_row is counting table row
$count = $result->rowCount();
// Determine if user is "user" or "admin"
$usertype = $dbh->query("SELECT admin FROM members WHERE username='$myusername';");
$row = mysql_fetch_row($usertype);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file
session_start();
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
$_SESSION['admin'] = $row;
// Redirect to appropriate page depending on user rights. Indicator 0 for user, 1 for admin.
if ($_SESSION['admin'] == 1){
header("location:Admin.php");
}
else {
header("location:SuccessLogin.php");
}
$dbh = null;
}
else {
echo "";
}
?>
<html>
<body>
<head>
<title>Login</title>
<link rel="stylesheet" href="style.css" />
<link rel='stylesheet' type='text/css'>
</head>
<div class="lg-container">
<center><i>Wrong Username or Password</i></center>
</body>
</html>
最佳答案
您应该将 mysql_connect("$host", "$username", "$password")or die("cannot connect");
分配给 $dbh
,例如如下:
$dbh = mysql_connect("$host", "$username", "$password")or die("cannot connect");
将连接变量传递给 myslq_select_db
。
mysql_select_db("$db_name", $dbh)or die("cannot select DB");
关于php - 尝试为管理员/用户 PHP 创建登录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810870/