简体   繁体   English

如何在PHP中使用基本身份验证连接SQL查询

[英]How to connect SQL query with basic Authentication in PHP

I want to connect my basic authorization with my MySQL database. 我想将基本授权与MySQL数据库连接。 Actually, I am developing a login REST API in PHP. 实际上,我正在用PHP开发登录REST API。 Currently, I have hard coded my username and password in the PHP Authorization script but I want to connect to MySQL and validate the username and password with my database with basic authorization. 目前,我已经在PHP授权脚本中对用户名和密码进行了硬编码,但是我想连接到MySQL,并使用基本授权通过数据库验证用户名和密码。

Here's my code: 这是我的代码:

<?php 
// User name and password for authentication 

$username = 'admin'; 
$password = 'password'; 

if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || 
   ($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)) { 
    // The user name/password are incorrect so send the authentication headers 
    header('HTTP/1.1 401 Unauthorized'); 
    header('WWW-Authenticate: Basic realm="Guitar Wars"'); 
    exit('<h2>Guitar Wars</h2>Sorry, you must enter a valid user name and 
          password to access this page.'); 
} 
?> 

And I would like to embed a query like this: 我想嵌入这样的查询:

$query = mysql_query("SELECT username FROM login WHERE username='$username' and password='$password'");

Warning mysql_query, mysql_fetch_array,mysql_connect etc.. extensions were deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. 警告mysql_query,mysql_fetch_array,mysql_connect等。在PHP 5.5.0中不推荐使用扩展名,在PHP 7.0.0中将其删除。 Instead, the MySQLi or PDO_MySQL extension should be used. 相反,应使用MySQLi或PDO_MySQL扩展。

Mysqli prepared statement Mysqli准备的语句

1) First connect the database and query the database with user given username and password finally based on row count you can know user is valid or not . 1)首先连接数据库,并使用用户名和密码给用户查询数据库,最后根据行数知道用户是否有效。

        //db connection

        $servername = "localhost";  //host name

        $username = "username"; //username

        $password = "password"; //password

        $mysql_database = "dbname"; //database name

    //mysqli prepared statement 

        $conn = mysqli_connect($servername, $username, $password) or die("Connection failed: " . mysqli_connect_error());

       mysqli_select_db($conn,$mysql_database) or die("Opps some thing went wrong");

        $stmt = $conn->prepare("SELECT * FROM $tbl_name WHERE username=? and password=? ");

        $stmt->bind_param('ss',$myusername,$mypassword);

        The argument may be one of four types:

        //i - integer
        ///d - double
        //s - string
        //b - BLOB
        //change it by respectively 

        $stmt->execute();
        $get_result =$stmt->get_result();

        $row_count= $get_result->num_rows;

        if($row_count>0)
        {
           echo "valid user ";
        }
        else
        {
          echo "not valid user";

        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM