我正在开发一个使用HTML和PHP创建的应用程序,我正在尝试使用联系表单来处理它,但是会出现HTTP错误。
我使用的是Azure SQL数据库,我尝试了以下但它似乎无法工作。我创建了一个html表单来读取用户名和密码,然后我有一个单独的文件,我打算用用户名和密码读取,并测试它们是否与我数据库中users表中的值匹配。如果没有,表格将清除,他们将输入新的凭证。谁能在这里发现问题?我的代码是:
login_page.html:
<html>
<head>
<title>Login</title>
</head>
<body>
<br>
<br>
<center><div class="container">
<a href=""><img src="L.jpg" alt="DCU" style="width:200px;height:200px;"></a>
<br>
<a href=""><img src="LN.jpg" alt="DCU" style="width:400px;height:90px;"></a>
<br>
<br>
<form action="verify.php">
<div class="row">
<div class="col-25">
<label for="User Name">Username</label>
</div>
<div class="col-75">
<input type="text" name="Username" placeholder="Username">
</div>
</div>
<br>
<div class="row">
<div class="col-25">
<label for="Password">Password</label>
</div>
<div class="col-75">
<input type="password" name="Password" placeholder="Password">
</div>
</div>
<br>
<div class="row">
<input type="submit" value="Login">
</div>
</form>
</div></center>
</body>
</html>
verify.php
<?php
if(isset($_POST['submit'])){
$serverName = "xxxx";
$options = array( "UID" => "xxx", "PWD" => "xxxx",
"Database" => "xxxx");
$conn = sqlsrv_connect($serverName, $options);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
$usr = $_POST['username'];
$pas = = $_POST['password'];
$sql = sqlsrv_query("SELECT username FROM dbo.users
WHERE username='$usr' AND
password='$pas'
LIMIT 1");
if(sqlsrv_num_rows($sql) == 1){
$row = sqlsrv_fetch_array($sql);
session_start();
$_SESSION['username'] = $row['username']= TRUE;
header("Location: index.html");
exit;
}else{
header("Location: login_page.html");
exit;
}
}else{ //If the form button wasn't submitted go to the index
page, or login page
header("Location: login_page.html");
exit;
}
?>
答案 0 :(得分:0)
在HTML中,您不必将表单方法设置为POST
(这对于处理敏感数据非常重要)。因为没有定义方法,所以默认为GET
,这意味着您的PHP代码永远不会超过第一个条件;它希望收到POST
请求,但不是传递的内容。
如果您将以下内容添加到表单标记中,它应该可以正常工作(或至少打印一些内容):
<form action="verify.php" method="post">
答案 1 :(得分:0)
请启用Diagnostics Logging,以帮助您在Web服务器级别和应用程序级别错误中获得更详细的错误。您还可以远程使用Visual Studio debug mode来创建跟踪并获取详细的错误消息。