已解决:在多次重写mysql和成员代码后,最后一个在启用MysqLind(本机驱动程序)时有效.
我有一个完美的登录脚本,但我希望它将我登录的用户的全名发布到我的页面.
我希望它使用在登录时提供给会话的用户名在任何给定页面上的div中获取和发布,名字和姓氏.
登录脚本:
<?PHP
session_start();
require_once 'classes/membership.PHP';
$membership = new Membership();
// If the user clicks "Log Out".
if(isset($_GET['status']) && $_GET['status'] == 'loggedout') {
$membership->log_User_Out();
}
// Did the user enter a password/username and click submit?
if($_POST && !empty($_POST['username']) && !empty($_POST['pwd'])) {
$response = $membership->validate_User($_POST['username'], $_POST['pwd']);
}
?>
检查membership.PHP中的凭据:
<?PHP
require 'MysqL.PHP';
class Membership {
function validate_user($un, $pwd) {
$MysqL = New MysqL();
$ensure_credentials = $MysqL->verify_Username_and_Pass($un, md5($pwd));
list($ensureCredentials, $data) = $MysqL->verify_Username_and_Pass($un, md5($pwd));
if($ensure_credentials) {
$_SESSION['status'] = 'authorized';
$_SESSION['fname'] = $data['fname'];
$_SESSION['lname'] = $data['lname'];
header("location: medlem.PHP");
} else return "Please enter correct username and password";
print_r($row);
exit;
}
function log_User_Out() {
if(isset($_SESSION['status'])) {
unset($_SESSION['status']);
if(isset($_COOKIE[session_name()]))
setcookie(session_name(), '', time() - 1000);
session_destroy();
}
}
function confirm_Member() {
session_start();
if($_SESSION['status'] !='authorized') header("location: login.PHP");
}
}
<?PHP
require_once 'includes/constants.PHP';
class MysqL {
private $conn;
function __construct() {
$this->conn = new MysqLi(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or
die('There was a problem connecting to the database.');
}
function verify_Username_and_Pass($un, $pwd) {
$query = "SELECT *
FROM users
WHERE username = ? AND password = ?
LIMIT 1";
if($stmt = $this->conn->prepare($query)) {
$stmt->bind_param('ss', $un, $pwd);
$stmt->execute();
// UPDATE : I added correct usage of the stmt here.
$result = $stmt->get_result();
if($row = $result->fetch_array()) {
$stmt->free_result();
$stmt->close();
// returning an array the first item is the validation the second is the data.
return array(true, $row);
}
}
// if there is no just return empty data, and false for validation.
return array(false, array());
}
为了重用性,我在constants.PHP中定义了常量:
<?PHP
// Define constants here
define('DB_SERVER', 'localhost');
define('DB_USER', 'myusername');
define('DB_PASSWORD', 'mypassword');
define('DB_NAME', 'membership');
当会话只知道登录用户的用户名时,如何从MysqL数据库中轻松获取它来检索名字(fname)和姓氏(lname).
如上所述,名字和姓氏的行名称是fname和lname.
我想用浮动的CSS格式div id’ed topr尽可能简单地显示它,如下所示:
<?PHP
session_start();
if(isset($_SESSION['status'])){
echo "<div id='topr'>Welcome, " . $_SESSION['fname'] . "!</div>";
} ?>
我主要关注首先显示名字.当我做对了,我肯定会把它显示为姓氏.
只想了解更多相关信息.由于我的网络搜索没有提出任何我可以设法在我的代码中实现而不会弄乱的东西.
解决方法:
function verify_Username_and_Pass($un, $pwd) {
$query = "SELECT *
FROM users
WHERE username = ? AND password = ?
LIMIT 1";
if($stmt = $this->conn->prepare($query)) {
$stmt->bind_param('ss', $un, $pwd);
$stmt->execute();
// UPDATE : I added correct usage of the stmt here.
$result = $stmt->get_result();
if($row = $result->fetch_array()) {
$stmt->free_result();
$stmt->close();
// returning an array the first item is the validation the second is the data.
return array(true, $row);
}
}
// if there is no just return empty data, and false for validation.
return array(false, array());
}
因此,在您调用verify_Username_and_Pass的MemberShip类中,只需将数组数据输入变量即可.并使用它发送到会话变量.
因此,您将有资格在任何您想要的地方使用会话.
list($ensureCredentials, $data) = $MysqL->verify_Username_and_Pass($un, md5($pwd));
if($ensure_credentials) {
$_SESSION['status'] = 'authorized';
$_SESSION['first_name'] = $data['first_name'];
$_SESSION['last_name'] = $data['last_name'];
header("location: medlem.PHP");
} else return "Please enter correct username and password";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。