在php中登录Mysql

时间:2013-05-07 05:39:11

标签: php mysql logging

我正在尝试在php中创建一个IRC日志机器人!很多它已经工作,但我想用用户创建的密码保护日志!

基本上这个想法是用户输入:!密码和het获取随机密码! 一旦他需要使用该密码登录的webportal,然后他就可以看到日志的

我确实有密码生成器,并且已经有一个会话

的登录脚本

登录数据库如下所示:

#| id | nick  | Password
------------------------
1| 1  | xvilo | HndOe34
2| 2  | user  | ET4vfd4
3| 3  | boooh | WQ688WY

登录脚本如下:

<?php
$pass = $_POST['pass'];

if(isset($pass) )
{

    if( empty($pass) ) {
        die ("ERROR: Please enter password!");
    }


    if( $pass == "somepassword")
    {
        // Authentication successful - Set session
        session_start();
        $_SESSION['auth'] = 1;
        $_SESSION['nick'] = $nick_from_database;
        setcookie("username", $_POST['name'], time()+(84600*30));
        header('Location: '.$_SERVER['PHP_SELF'].'');
    }
    else {
        echo "ERROR: Incorrect username or password!";
    }
}


// If no submission, display login form
else {
?>
    <html>
    <head></head>
    <body>
    <center>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <p />
    Password: <input type="password" name="pass">
    <p />
    <input type="submit" name="submit" value="Log In">
    </center>
    </body>
    </html>
<?php
}
?>

你可以看到它非常基本! 在此代码之前我已经连接到数据库了! 现在我不知道如何检查给定的密码(来自输入字段)是否与数据库中的密码之一相同! 如果是的话,那就给他:             $ _SESSION ['auth'] = 1; 所以他登录了             $ _SESSION [ '缺口'] 需要成为他的昵称(存储在同一行)

我希望你们都明白我的需要,因为我的英语不是那么好。 请在此示例中保留代码,以便我更容易理解! 安全不需要! (当这一切都以这种方式工作时,我会解决这个问题)

页面的实时网址:http://xvilo.com/logs.php

3 个答案:

答案 0 :(得分:3)

<?php
// Inialize session
session_start();
unset($_SESSION['username']);

if (isset($_POST['logout'])){
  session_start();
  session_destroy();  
}
// Check, if user is already login
if (isset($_SESSION['username'])) {
header('Location: location.php');
}

if(isset($_POST['Submit'])){
  $msg="";

  if(empty($_POST['username'])){
    $msg="Please enter your username. ";
  }

  if(empty($_POST['password'])){
    $msg .="Please enter your password. ";
  }

  if(empty($msg)){
  include('include/databaseconnection.php');
  $un = $_POST['username']; // enter username opt.

        $_SESSION['username'] = $nick_from_database;
        setcookie("username", $_POST['username']);

    $sql = "SELECT username, password FROM `table` WHERE username ='$un'";
    $sql .= "AND password='".md5($_POST['password'])."'";

    if(!$res = mysql_query($sql)){
      $msg.=mysql_error();
    }else{
      //user exists in system, set the session variables
      if (mysql_num_rows($res)==1) {

        while($row = mysql_fetch_assoc($res)){
         // the user name and password match,
          $_SESSION['username'] = $row['username']; 
          $_SESSION['password'] = $_POST['password'];
        }
      }
    else {
        $msg = "Your login details did not match";
      } 
    } 
} 

?>

答案 1 :(得分:1)

要检查密码,请使用以下查询:

SELECT COUNT(*) matches FROM login_db
WHERE nick = ? AND password = ?

使用登录表单中的用户名和哈希密码替换占位符。 如果返回matches = 1,则登录成功,如果matches = 0则失败。

此外,您的登录表单缺少用户名字段。

答案 2 :(得分:0)

Xvilo,您需要转换用户使用之前使用的相同FUNCTION发送的“somepassword”,将其保存在数据库“HndOe34”上,然后您可以比较两者。 e.g:

...
    $pass_from_user = FUNCTION_USED_BEFORE_TO_CONVERT($pass);

    if( $pass_from_user === $pass_from_db)
    {
...