2014-12-03 3 views
0

Я хочу проверить, существует ли пользователь в базе данных при нажатии «войти в систему». Если это так, echo «пользователь существует», а если нет, «пользователь не существует». Как я могу это сделать? до сих пор у меня есть:Как проверить, существует ли пользователь в базе данных SQL

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "test"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

?> 

<!DOCTYPE html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Test</title> 
</head> 

<body> 
<form method="post" action="login.php"> 
Username: <input type="text" value="" name="username" /><br /><br /> 
Password: <input type="password" value="" name="password" /><br /><br /> 
<input type="submit" name="submit" value="Log In"/> 
</form> 
</body> 
</html> 
+0

Подсказка: 'SELECT COUNT (*) ...' – zerkms

ответ

1

На мой логин/регистрации сценарий, я сделал, я использовал что-то вдоль линий этого ..

// check existing username 
$prep_stmt = "SELECT id FROM your-table-name WHERE username = ? LIMIT 1"; 
$stmt = $mysqli->prepare($prep_stmt); 

if ($stmt) { 
    $stmt->bind_param('s', $username); 
    $stmt->execute(); 
    $stmt->store_result(); 

      if ($stmt->num_rows == 1) { 
        // A user with this username already exists 
        $error_msg .= '<p class="error">A user with this username already exists</p>'; 
        $stmt->close(); 
      } 
      $stmt->close(); 
    } else { 
      $error_msg .= '<p class="error">Database error line 55</p>'; 
      $stmt->close(); 
    } 
+0

Должен добавить функцию подготовки mysqli и выполнить :) – DarkBee

+0

@DarkBee это может быть домашняя работа для OP на самом деле :-) Даже запрос уже слишком много для новичков – zerkms

+0

Справедливая точка, но все же – DarkBee

2

Попробуйте один

session_start(); 
if($_SERVER['REQUEST_METHOD'] === 'POST'){ 

    $servername = "localhost"; 
    $username = "root"; 
    $password = "root"; 
    $dbname = "test"; 

// Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $user = $conn->real_escape_string(htmlspecialchars(trim($_POST['username']))); 
    $query = "SELECT `username` FROM `users` WHERE `username` = '$user'"; 

    $result = $conn->query($query); 
    if($result->num_rows > 0) { 
     $_SESSION['allowToWelcome'] = true; 
     header('Location:welcome.php'); 
     die(); 
    } 
    else $message = 'user does not exist'; 

} 

?> 

    <!DOCTYPE html> 
    <html> 
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
      <title>Test</title> 
     </head> 

     <body> 
      <form method="post" action="login.php" enctype="multipart/form-data"> 
       <?php if(isset($message)) : ?> 
        <div class="error"><?php echo $message; ?></div> 
       <?php endif; ?> 

       Username: <input type="text" value="" name="username" /><br /><br /> 
       Password: <input type="password" value="" name="password" /><br /><br /> 
       <input type="submit" name="submit" value="Log In"/> 
      </form> 
     </body> 
    </html> 

приветственно .php вы можете проверить, как это

session_start(); 
if(!isset($_SESSION['allowToWelcome'])){ 
    header('Location:login.php'); 
    die(); 
} 
+0

Большое вам спасибо! –

+0

Я хочу взять пользователя на «страницу приветствия», если они существуют, если они этого не делают, отобразить «пользователь не существует». Как мне перейти на другую страницу? мне нужно сделать это в html, form action? –

+0

Измененный код выше. Проверьте заголовок строки («Местоположение: welcome.php»); Вы можете изменить welcome.php на любую страницу своего проекта. – Oleg

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