Как использовать форму для проверки правильности имени пользователя и пароля на той же странице, а затем, если они верны, перенаправить на страницу профиля? - PullRequest
0 голосов
/ 10 мая 2018

Это код, который у меня есть на странице входа в систему:

<!DOCTYPE html>
<!-- saved from url=(0051)https://getbootstrap.com/docs/4.1/examples/sign-in/ -->
<html lang="en" class="gr__getbootstrap_com"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="https://getbootstrap.com/favicon.ico">

    <title>Log in - neilslist</title>

    <!-- Bootstrap core CSS -->
    <link href="./logins_files/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="./logins_files/signin.css" rel="stylesheet">
  <link media="screen" type="text/css" rel="stylesheet" href="blob:https://getbootstrap.com/f85c0379-33a3-4de4-9a60-26a6e35982ef"><link media="screen" type="text/css" rel="stylesheet" href="blob:https://getbootstrap.com/e8647a56-67e2-452a-81c9-0cb2a26aa086"><link media="screen" type="text/css" rel="stylesheet" href="blob:https://getbootstrap.com/ce35ac4e-5242-41b6-acf8-0e3167d80b62"></head>
  <body class="text-center" data-gr-c-s-loaded="true">

    <?php
        include 'database.php';
           $pdo = Database::connect();
           $sql = "SELECT * FROM accounts WHERE username = '$username' AND password = '$password'";
           foreach ($pdo->query($sql) as $row) {

               $username = $row['username'];
               $password = $row['password'];

          }
          Database::disconnect();
    ?>

  <div id="22fdb251-ebe6-4f61-a4a9-ceb55e94a02b" data-gg-chat-anchor="true" style="z-index: 2147483647; position: relative; display: block; height: 0px; min-height: 0px; width: 0px; min-width: 0px; margin: 0px; padding: 0px; border: 0px;"><div data-reactroot=""></div></div>
    <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="checklogin.php">
<td><img class="mb-4" src="assets/actuallogo.png" alt="" width="327" height="93">
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">

<tr>
<td colspan="3"><strong>Member Login</strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="username" type="text" id="username"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="password" type="password" id="password"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<br>
<br>
<br>
<br>
<br>
  <div id="signup">
<center> <p> Dont have an account? <br> Sign Up <a href="createAccount.php">Here</a> </p></center>
</div>
</body></html>

Что я хочу сделать, так это когда пользователь вводит имя пользователя и пароль в поля формы, информация отправляется в базу данных для проверки правильности имени пользователя и пароля, не переходя на страницу обработчика. После завершения проверки, если имя пользователя и пароль верны, пользователь автоматически перенаправляется на страницу своего профиля, но если он неверен, пользователь просто получит сообщение об ошибке на той же странице, что имя пользователя или пароль неверны. У меня уже есть страница обработчика, настроенная для того, чтобы сообщить пользователю, что введенная информация верна или неверна, и называется checklogin.php:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<?php
ob_start();
$host="host"; // Host name 
$username="username"; // Mysql username 
$password="password"; // Mysql password 
$db_name="dbname"; // Database name 
$tbl_name="tblname"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password") or die(mysql_error());
mysql_select_db("$db_name") or die(mysql_error());

// Define $username and $password 
$username=$_POST['username']; 
$password=$_POST['password'];


// To protect MySQL injection (more detail about MySQL injection)
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $username and $password, table row must be 1 row
if ($count==1) {
    echo "Correct Username or Password!";
} else {
    echo "Incorrect Username or Password!";
}

ob_end_flush();
?>
</head>

<body>

</body>
</html>

Я хотел бы объединить эти две страницы в одну, чтобы пользователь получил весь опыт на одной странице, аналогично тому, как работают другие веб-сайты, которые аутентифицируют пользователя, а также изменить то, что делает форма, как я упоминал выше. Я не понимаю, как использовать оператор if для выполнения всего, что я упомянул, и как интегрировать мой код checklogin.php в код моей страницы входа. Спасибо, Neil

...