PHP应用程序的登录表单

时间:2018-05-21 20:35:11

标签: php sql database login azure-sql-database

我正在开发一个使用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; 
      } 
     ?> 

2 个答案:

答案 0 :(得分:0)

在HTML中,您不必将表单方法设置为POST(这对于处理敏感数据非常重要)。因为没有定义方法,所以默认为GET,这意味着您的PHP代码永远不会超过第一个条件;它希望收到POST请求,但不是传递的内容。

如果您将以下内容添加到表单标记中,它应该可以正常工作(或至少打印一些内容):

<form action="verify.php" method="post">

答案 1 :(得分:0)

请启用Diagnostics Logging,以帮助您在Web服务器级别和应用程序级别错误中获得更详细的错误。您还可以远程使用Visual Studio debug mode来创建跟踪并获取详细的错误消息。