2016-10-04 2 views
1
<?php 

session_start(); 
include("connection.php"); 

if (mysqli_connect_error()) { 
    die("Could not connect to database"); 
if ($_POST['submit'] == "Login") { 
    $query = "SELECT * FROM EmployeeTable WHERE name='" 
      . mysqli_real_escape_string($link, $_POST['name']) 
      . "'AND password='" 
      . md5(md5($_POST['name']) . $_POST['password']) 
      . "'LIMIT 1"; 
    $result = mysqli_query($link, $query); 
    $row = mysqli_fetch_array($result); 
    if ($row) { 
     $_SESSION['id'] = $row['id']; 
     header("Location: http://www.ccm.net/forum/"); 
    } else { 
     $error = "We could not find a user with that email and password. Please try again."; 
    } 
}  
?> 

У меня есть вышеуказанные коды только для входа user.I есть таблица с именем пользователя и паролем already.I не хотите, чтобы создать кнопку Регистрация, только кнопка входа в систему в качестве пароля будет их «id». Я могу подключиться к db.верифицировать только учетные данные входа из БД

Пожалуйста, помогите мне, так как после входа в систему я попал на пустую страницу.

+0

'md5 (md5 ($ _ POST ['name']). $ _ POST ['password'])' Whats что? –

+0

Вы широко открыты для [SQL Injections] (http://php.net/manual/en/security.database.sql-injection.php) и должны действительно использовать [Подготовленные утверждения] (http://php.net/ manual/en/mysqli.quickstart.prepared-statements.php) вместо конкатенации ваших запросов. 'mysqli_real_escape_string()' не так безопасен, как можно было бы надеяться, плюс вы даже не избежите всех входов. –

ответ

1

Прежде всего: вы уязвимы для инъекций sql, используя этот код. Пожалуйста, используйте параметризованные запросы, чтобы не забывать избегать значений, которые вы используете в своих запросах.

$mysqli = new Mysqli($host, $username, $password, $database); 
$mysqli->prepare('SELECT * FROM EmployeeTable WHERE name = ? AND password = ? LIMIT 1'); 
$mysqli->bind_param('ss', $name, $password); 
$mysqli->execute(); 
$result = $mysqli->fetch_array(); 

Вы также не должны использовать md5 для хеширования паролей. Используйте встроенные функции password_*.

password_hash может использоваться для хеширования паролей, как так:

$hash = password_hash($password, PASSWORD_DEFAULT); 

Это относится также то, что называется salt укрепить хэш от словарных атак.

Если вы хотите, чтобы проверить пароли использование может использовать password_verify для проверки пароля с сохраненным хэш следующим образом:

$is_correct = password_verify($password, $hash); 

Используя эти методы, вы вряд ли ничего испортить.

Прямой ответ на ваш вопрос может быть либо: if ($_POST['submit'] == "Login"), либо if($row). Я бы использовал count(), чтобы проверить количество найденных результатов: if(count($row) > 0).

+0

Вам не хватает '?' После 'password =' –

+0

@MagnusEriksson thanks – Thomas

+0

И вам нужно обернуть свой запрос в кавычки ... –

0

В догадка, не видя остальную часть HTML, это, вероятно, не удовлетворяющего заявление, если $ _POST [ «представить»]:

if ($_POST['submit'] == "Login") { 

и просто заканчивает сценарий, поскольку нет никакой возможности еще. Возможно, проверьте, что ваша форма POST, Имя кнопки фактически «отправлено», и ее значение «Вход»

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