2015-04-15 4 views
-2

Я создал логин, чтобы пользователь мог войти на сайт, я использую php и phphmyadmin для создания логина, я использовал тот же код для другого проекта, который я делаю, он работал нормально, но теперь это не сработает и не похоже на строку 15, что я делаю неправильно.не уверен, почему мой логин не будет работать

Вот мой код

<?php 
    session_start(); 
?> 

<header id="page_header"> 

<?php 

    include "connect.php"; 

    if (isset($_POST['username']) and isset($_POST['password'])){ 

$username = $_POST['username']; 

$password = $_POST['password']; 

$query = "SELECT * FROM users WHERE username='$username' and password='$password'"; 

$result = mysqli_query($con, $query) or die(mysqli_error()); 

$count = mysqli_num_rows($result); 

if ($count == 1){ 

$_SESSION['username'] = $username; 

}else { 

echo "Invalid Login Credentials."; 

} 


} 

?> 




<div id = "menu"> 
      <nav> 
      <ul> 
      <li><img src="../img/buzz_party.png"></li> 
       <li><a href="index.php">Home</a></li> &nbsp; &nbsp; &nbsp; 
       <li><a href="aboutus.php">About Us</a></li> &nbsp; &nbsp; &nbsp; 
       <li><a href="advertising.php">Supplies</a></li> &nbsp; &nbsp; &nbsp; 
       <li><a href="items.php">Party Supplies</a></li> &nbsp; &nbsp; &nbsp; 
       <li><a href="contact.php">Contact Us</a></li> &nbsp; &nbsp; &nbsp; 

      </nav> 

     </div> 

        <div id = "login_details"> 

      <?php  

     if (isset($_SESSION['username'])){ 

$username = $_SESSION['username']; 

echo "Hello " . $username . " "; 


} 

echo "<a href='logout.php'>Logout</a>"; 

?> 

    </div> 

    <div id="login"> 

<form action="index.php" method="post"> 

      <label for="username" class="uname" data-icon="u" >Username:</label> 
      <input id="username" name="username" required="required" type="text" size="10" placeholder="Username"/> 


      <label for="password" class="youpasswd" data-icon="p">Password:</label> 
      <input id="password" name="password" required="required" type="password" size="10" placeholder="Password" /> 

      <input type="submit" value="Login" /> 

     </form> 

     </div> 

</header> 
+0

Любые ошибки/уведомления? –

+0

[15-апр-2015 17:06:22 Европа/Берлин] PHP Предупреждение: mysqli_error() ожидает точно 1 параметр, 0 задан в/Applications/MAMP/htdocs/group 19/php/header.php в строке 15 – Rebekah

+0

нет что это означает – Rebekah

ответ

1

Вы должны иметь параметры соединения переходили в mysqli_error(), например так:

$result = mysqli_query($con, $query) or die(mysqli_error($con)); 

Кроме того, вы не санировать иностранные данные от $ _POST , Вы уязвимы для SQL-инъекций.

+2

Возможно, дайте несколько советов о том, как защитить от SQLi, например [этот ответ] (http://stackoverflow.com/a/29654448/3000179) –

5

mysqli_error() требует, чтобы соединение передается в качестве параметра

mysqli_error($con)

Процедурный стиль

string mysqli_error (mysqli $link) 

Что касается паролей

Я заметил, что вы можете хранить пароли в виде обычного текста.

  • Это не рекомендуется и является небезопасным методом.

Используйте один из следующих действий:

Другие ссылки:


Sidenote: Ваш нынешний код открыт для SQL injection. Используйте mysqli with prepared statements, или PDO with prepared statements, они намного безопаснее.


Edit:

"? Бы кто-нибудь есть идеи, как сделать форму Войти исчезают после того, как пользователь вошел в систему"

Bonus Ответ:

Вы можете перенаправить на другую страницу с header().

Однако у вас уже есть выход с использованием <header id="page_header">, поэтому вам нужно будет разместить его под вашими нынешними кодами PHP. В противном случае он выдает предупреждение о уже отправленных заголовках. Использование ob_start(); иногда работает, но не всегда.

Где вы в настоящее время имеют:

if ($count == 1){ 

$_SESSION['username'] = $username; 

} 

Добавить заголовок и выход:

if ($count == 1){ 

$_SESSION['username'] = $username; 

    header("Location: http://www.example.com"); 
    exit; 

} 

Или, вы можете просто использовать exit;, если вы не хотите, чтобы перенаправить.

+3

ИМХО, Это должен быть принятый ответ. –

+2

@ ʰᵈˑ Вы выигрываете, теряете, * что можете сделать *. Спасибо хоть. По крайней мере, это будет доступно для будущих посетителей на этот вопрос. Дополнительная в архиве Stack, * cheers * –

+0

так запуталась прямо сейчас – Rebekah

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