2013-05-12 55 views
0

我查看http://www.phpportalen.net/wiki/index.php?page=Enkel+inloggning+med+MySql+och+sessioner如何做一个简单的登录。简单的登录连接到MySQL - 什么是错的?

但是,当我尝试登录现在它说,用户名或密码是错误的。所以我猜在我的控制文件中有些东西是不正确的,在这里我要检查数据库的用户名和密码。

在检查中,我看着他们都在同一页面,所以即时猜测我需要改变超过我thougt。

这是loginside代码:

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
     <link href="stylesheet.css" media="screen" rel="stylesheet" type="text/css" /> 
    </head> 
    <body> 
     <?php 
     if(!isset($_SESSION["sess_user"])){ 
      if(isset($_GET['badlogin'])){ 
       echo "Fel användarnamn eller lösenord, försök igen!"; 
      } 
     ?> 
      <form method="post" action="check.php"> 
      <p>User</p> 
      <input name="user" type="text" /> 
      <p>Password</p> 
      <input name="password" type="text" /> 
      <input name="logIn" type="submit" value="Log in" /> 
      </form> 
     <?php 
     } 
     else{ 
      header("Location: admin.php"); 
     } 
     ?> 
    </body> 
</html> 

这是我controlside代码:

<?php 
session_start(); 
?> 
<?php 
function db_escape($post){ 
    if(is_string($post)){ 
     if(get_magic_quotes_gpc()){ 
      $post = stripslashes($post); 
     } 
     return mysqli_real_escape_string($post); 
    } 
    foreach($post as $key => $val){ 
     $post[$key] = db_escape($val); 
    } 
    return $post; 
} 
if(isset($_POST["logIn"])){ 
    // Connect to db 
    $dbConn = mysqli_connect("localhost","sabe0011","lösen","sabe0011"); 
    $dbConn->set_charset("utf8"); 

    // Check connection 
    if(mysqli_connect_errno($dbConn)){ 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $_POST = db_escape($_POST); 
    $checkUserSQL = mysqli_query($dbConn, "SELECT * FROM Users WHERE User ='{$_POST['user']}' AND Password ='{$_POST['password']}'"); 

    if(mysqli_num_rows($checkUserSQL) == 0){ 
     header("Location: login.php?badlogin="); 
     exit; 
    } 

    $_SESSION['sess_id'] = mysqli_store_result($checkUsersSQL, 0); 
    $_SESSION['sess_user'] = $_POST['user']; 
    header("Location: admin.php"); 
    exit; 
} 
?> 

回答

1

你在你的查询参数应该被转义,如:

$checkUserSQL = mysqli_query($dbConn, "SELECT * FROM Users WHERE User =" . $_POST['user'] . " AND Password = " . $_POST['password']); 

但是在安全方面,您必须在the prepared query here处看到。

+0

我现在试过,但它仍然没有工作= /你有其他什么吗? – user2373312 2013-05-12 17:09:35

+0

你应该尝试你的查询SELECT * FROM Users WHERE User =“youruser”AND Password =“yourpassword”'直接在你的数据库中 – antoox 2013-05-12 17:21:06

+0

我试过了,使用正确的用户和密码即时消息..不幸的是,似乎并不容易解决 – user2373312 2013-05-12 17:30:53