我按照教程使用php创建了一个简单的登录系统。我安装了wampserver
并从phpmyadmin面板创建了数据库。它不起作用,我相信这是服务器的问题。当我创建数据库时,出现在那里的服务器为mysql wampserver
,在教程中为localhost
。我将config.inc.php
中的服务器名称更改为localhost
,但仍然无效。当我单击登录按钮时,它将返回到wampserver的索引页面。我会分享我的代码,也许有人可以找到这个bug,因为我无法弄清楚我做错了什么。
dbConnect.php
<?php
$dbCon = mysqli_connect("localhost", "root", "", "tests");
?>
user.php的
<?php
session_start();
if (isset($_SESSION['id'])) {
// Put stored session variables into local PHP variable
$uid = $_SESSION['id'];
$usname = $_SESSION['username'];
$result = "Test variables: <br /> Username: ".$usname. "<br /> Id: ".$uid;
} else {
$result = "You are not logged in yet";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $usname ;?> - Test Site</title>
</head>
<body>
<?php
echo $result;
?>
</body>
</html>
first.php
<?php
session_start();
if (isset($_POST['username'])) {
// Include the databas connection script
include_once("dbConnect.php");
$usname = strip_tags($_POST['username']);
$paswd = strip_tags($_POST['password']);
//$usname = mysqli_real_escape_string($dbCon, $usname);
//$paswd = mysqli_real_escape_string($dbCon, $paswd);
$sql = "SELECT id, username, password FROM members WHERE username = '$usname' AND activated = '1' LIMIT 1";
$query = mysqli_query($dbCon, $sql);
$row = mysqli_fetch_row($query);
$uid = $row[0];
$dbUsname = $row[1];
$dbPassword = $row[2];
// Check if the username and the password they entered was correct
if ($usname == $dbUsname && $paswd == $dbPassword) {
// Set session
$_SESSION['username'] = $usname;
$_SESSION['id'] = $uid;
// Now direct to users feed
header("Location: user.php");
} else {
echo "<h2>Oops that username or password combination was incorrect.
<br /> Please try again.</h2>";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic login system</title>
</head>
<body>
<div id="wrapper">
<h1>Simple PHP Login</h1>
<form id="form" action="index.php" method="post" enctype="multipart/form-data">
Username: <input type="text" name="username" /> <br />
Password: <input type="password" name="password" /> <br />
<input type="submit" value="Login" name="Submit" />
</form>
</body>
</html>
答案 0 :(得分:0)
RhapX试图解释的是,您的表单操作告诉表单在何处发布数据。目前,你有
<form id="form" action="index.php" method="post" enctype="multipart/form-data">
这意味着一旦用户点击提交,它就会将它们发送到index.php,并将随之发送$ _POST数据。但是你说first.php是实际完成所有工作的文件,所以你需要将用户和$ _POST数据发送到first.php。将其更改为:
<form id="form" action="first.php" method="post">
(将动作更改为first.php,只是删除了enctype - 它可能是正确的,但它完全没必要,而且我已经看到它会导致某些问题。)