PHP如何检查是否有效

时间:2014-02-02 23:06:32

标签: php session pdo login-script

我的代码有问题。或者更确切地说,不知道如何实现我想拥有的东西。 我想要;同样在此代码中,检查用户名是否在活动列中有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,这样我就可以保护我页面中的某些链接或文本。但首先要做的是第一件事。

2 个答案:

答案 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();
}

?>

但是现在如果我也想做一个管理专栏并尝试在这里实现,我该怎么做?我知道在其他地方也可能需要添加更多代码。没什么漂亮或先进的。这只是一个简单的登录。任何我应该指导我的建议,私人/公共课程(我试过这个,但我在代码中丢失了)