我试图获得一个登录页面,以与PHP和Mysql的工作。我已经梳理了我的代码,但不知道哪里出错了。
首先,我有一个"login.php“页面。下面(我相信)是该页面上的重要代码:
<form id="login" action="redirect.php" method="post"> <!--This is the form for logging in.-->
<fieldset id="inputs">
<input type="hidden" name="ac" value="log"> <!--This value is a "random" value to post so that an if statement will be entered in select.php-->
<input id="username" name="username" type="text" placeholder="Username" autofocus required>
<input id="password" name="password" type="password" placeholder="Password" required>
</fieldset>
<fieldset id="actions">
<input type="submit" id="submit" value="Log in">
</fieldset>
从那里你会看到,当按下submit时,它会转到"redirect.php“,它有以下代码:
<?php
include 'config.php';
$username = $_POST['username'];
$password = $_POST['password'];
function SignIn()
{
session_start(); //starting the session for user profile page
if(!empty($username)) //check to see if the username is empty or not from login.php
{
$query = mysqli_query($con, "SELECT * FROM employees where username = ".$username." AND password = ".$password) or die(mysql_error());
$row = mysqli_fetch_array($query) or die(mysql_error());
if(!empty($row['username']) AND !empty($row['password']))
{
$_SESSION['username'] = $row['password'];
echo "SUCCESSFULLY LOGGED IN!";
}
else
{
echo "YOU ENTERED WRONG ID OR PASSWORD...";
}
}
}
if(isset($_POST['submit']))
{
SignIn();
}
?>
您会注意到其中包含了config.php页面...下面是代码(修改了我的dbusername和dbpassword:
<?php
/* Database credentials. */
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'myusername');
define('DB_PASSWORD', 'mypassword');
define('DB_NAME', 'ropepart_techportal');
/* Attempt to connect to MySQL database */
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Check connection
if($con === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>
当我在我的网页上浏览所有这些内容时,我在redirect.php上看到一个空白的白色页面。无论我在login.php页面中输入什么用户名/密码组合,都会出现这种情况。用户是否实际存在于数据库中。我希望在页面顶部至少能看到一句话:"SUCCESSFULLY!“或“您输入了错误的ID或密码。”你知道我哪里错了吗?
发布于 2018-09-03 02:41:51
您没有在post正文中发送submit
的值。
尝试添加:
<input type="submit" name="submit" id="submit" value="Log in">
因为您已经检查了isset($_POST['submit'])
,因为您没有发送计算结果为false,并且SignIn()
从未被调用
发布于 2018-09-03 02:48:49
我同意我们这里的朋友的观点,您为输入设置了id,但您需要在请求过程中发送set name,但我强烈建议您在代码中更改两项内容
将此属性添加到input submit -> name="submit"
而不是这个
if(isset($_POST['submit']))
{
SignIn();
}
使用这个
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
SignIn();
}
并且不要在代码开始时执行此操作
$username = $_POST['username'];
$password = $_POST['password'];
因为当你试图访问未定义的数组时,php可能会输出一个错误,出于某些安全原因,不建议这样做,所以在设置变量之前,请检查它,如下所示:
if (isset($_POST['username']) {
$username = $_POST['username'];
}
https://stackoverflow.com/questions/52140018
复制相似问题