2013-05-12 1 views
0

Я посмотрел на http://www.phpportalen.net/wiki/index.php?page=Enkel+inloggning+med+MySql+och+sessioner, как сделать простой вход.Простой логин, подключенный к MySQL - что не так?

Но когда я пытаюсь войти в систему, он говорит, что имя пользователя или пароль неверны. Поэтому я предполагаю, что что-то не так в моем контрольном документе, где я проверяю usernamne и пароль для базы данных.

В экзамене я посмотрел, что все они есть на одной странице, поэтому я думаю, что мне нужно изменить больше, чем я.

Это код в 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

+0

Вы должны попробовать свой запрос 'SELECT * FROM Users WHERE User =" youruser "AND Password =" yourpassword "' непосредственно в вашей базе данных – antoox

+0

Я пробовал это, и я использовал нужного пользователя и пароль .. к сожалению, это не так просто resolved – user2373312

Смежные вопросы