我的代码有问题。或者更确切地说,不知道如何实现我想拥有的东西。 我想要;同样在此代码中,检查用户名是否在活动列中有1。如果是这样,继续登录受保护的页面,否则返回登录页面。
<?php session_start(); function validateUser(){ session_regenerate_id (); $_SESSION['valid'] = 1; $_SESSION['username'] = $username; } $username = $_POST['username']; $password = > $_POST['password']; require('config.inc.php'); $db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); $stmt = $db->prepare("SELECT password_hash FROM users WHERE username =:username"); $stmt->bindParam(':username', $username, PDO::PARAM_STR,32); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); $db=null; $dbhash = $result['password_hash']; if ($dbhash == crypt($password, $dbhash)){ validateUser(); header('Location: ../main.php'); }else{ header('Location: ../index.php?invalidcreds=1'); die(); } ?>
那你们觉得怎么样?我已经尝试了一切,但无法让它发挥作用。
此外,我想要一个管理列no / 0或yes / 1,这样我就可以保护我页面中的某些链接或文本。但首先要做的是第一件事。
答案 0 :(得分:0)
您可以在数据库中添加is_active
列,然后使用:
SELECT is_active, password_hash FROM users where username=:username
在你的php中使用:
if($result['is_active'])
{
//Send to restricted login
}
else
{
//Send to normal login
}
另外,正如我在评论中所说的那样,初始化密码变量时会出现迷路>
。这可能是您的代码无法正常工作的原因。
答案 1 :(得分:0)
好的,这是代码,它完美无缺。并且&gt;只是一个错误的抱歉。感谢Bun为您的超级简单代码。
这看起来不错吗?或者只是错误的。我有点不确定if代码还是这样的方式!?
<?php
session_start();
function validateUser(){
session_regenerate_id (); //this is a security measure
$_SESSION['valid'] = 1;
$_SESSION['username'] = $username;
}
$username = $_POST['username'];
$password = $_POST['password'];
require('config.inc.php');
$db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$stmt = $db->prepare("SELECT active, password_hash FROM users WHERE username = :username");
$stmt->bindParam(':username', $username, PDO::PARAM_STR, 32);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$db =null;
if($result['active']){
$dbhash = $result['password_hash'];
if ($dbhash == crypt($password, $dbhash))
validateUser();
header('Location: ../main.php');
}
else{
header('Location: ../index.php?invalidcreds=1');
die();
}
?>
但是现在如果我也想做一个管理专栏并尝试在这里实现,我该怎么做?我知道在其他地方也可能需要添加更多代码。没什么漂亮或先进的。这只是一个简单的登录。任何我应该指导我的建议,私人/公共课程(我试过这个,但我在代码中丢失了)