需要帮助PHP登录

时间:2015-11-30 20:10:16

标签: php

我一直试图为我的项目创建一个登录信息,但我不知道自己做错了什么。

这是我用来检查按钮是否被按下的内容:

if(isset($_POST['login'])){
//Get Vars
$username = $_POST['username'];
$password = md5($_POST['password']);
if(login($username, $password)){
  echo 'You have been logged in';
} else {
  echo 'Wrong username and password';
}
}

这是我的登录功能:

function login($username, $password){

$db = new Database();

$query=("SELECT * FROM user
        WHERE username = $username
        AND password = $password");

//Bind Values
$row = $db->select($query);
-----------------------------------------
$count = mysqli_num_rows($row);

//Check Rows
if($count == 1){
   setUserData($row);
  return true;
} else {
  return false;
}
-------------------------------------
I BELIEVE THIS IS THE PART OF THE ERROR
}

这是我的setUserData函数:

function setUserData($row){
$_SESSION['is_logged_in'] = true;
$_SESSION['user_id'] = $row['id'];
$_SESSION['username'] = $row['id'];
$_SESSION['name'] = $row['name'];
}

我不知道是否需要为此开始会话,如果需要,我在哪里放置代码。

另外我如何在代码中初始化它来检查,比方说,如果$ count有效,因为当我只输入echo $count时,它只是说Unidentified variable : count

3 个答案:

答案 0 :(得分:3)

出于教育目的,我将列出一个重新引用以重写您的代码:

  1. 使用filter_input
  2. 清理$ _POST
  3. 将传递存储为md5哈希,这是一个安全漏洞
  4. 请参阅session_startsession_regenerate_id
  5. 更喜欢使用PDO来对付直接的mysql本机函数

答案 1 :(得分:2)

我发现了我的错误,它是造成问题的形式,我忘了放入public class Shelf { private Book[] v; public Shelf() { v = new Book[3]; } public void append (Book x) throws myException { if(x != null && v != null) { Book[] vAppend = new Book[v.length+1]; for(int i=0; i<v.length; i++) { vAppend[i] = new Book(v[i]); } vAppend[v.length] = new Book(x); v = vAppend; } throw new myException("Null"); } method="POST"

傻傻的我。谢谢大家的帮助。

答案 2 :(得分:0)

我猜你的查询应该是:

$query=("SELECT * FROM user
    WHERE username = '$username'
    AND password = '$password'");
相关问题