保护PHP文件中的数据库密码?

时间:2014-06-02 12:34:22

标签: php mysql database passwords

我有一个从我的数据库中检索一些重要数据的php文件,现在如果有人通过URL访问php文件,它会直接显示我不想发生的数据。 是否可以创建一个密码输入框,它会提示数据库密码并将其值分配给 $ password 变量(请参阅下面的代码) ,那么只有当用户输入正确的密码时,才会将文件与数据库进行交互?

更新示例代码:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Persons");

while($row = mysqli_fetch_array($result)) {
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br>";
}

mysqli_close($con);
?>`

当通过浏览器访问此php文件时,它会显示:

彼得帕克
格伦福布斯

我不希望别人直接看到输出!我希望他们先输入密码,以便php文件与数据库交互并显示输出!

希望你这次有人来找我!

6 个答案:

答案 0 :(得分:2)

如果我是你(如果我能正确理解你的问题),我会使用htaccess文件。基本上,您将在要保护的目录中创建两个文件。首先,您将命名 .htaccess 。这就是文件名中所需要的全部内容。在编辑程序中打开文件(例如:Notepad ++)并插入以下代码:

    AuthType Basic  
    AuthName "restricted area"  
    AuthUserFile "the/path/to/the/directory/you/are/in/.htpasswd" 
    require valid-user

您看到的 .htpasswd 是您要创建的第二个文件的文件名。创建该文件(名称为 .htpasswd ),然后将其打开以进行编辑。在该文件中,输入要输入目录的人员的用户名。

    JohnDoe

接着是冒号。

    JohnDoe:

现在,转到http://www.htaccesstools.com/htpasswd-generator/这样的网站,然后在提供的字段中输入您想要的用户名(只需输入&#34; test&#34;)和密码。提交信息。

执行此操作后,将弹出格式化的信息行。复制冒号后的字母,并将它们粘贴到.htpasswd文件中的冒号后面。保存你的工作。

    JohnDoe:$apr1$eBsB98Mg$93ckYxSmT5BBfPqOS5a/6.

现在您已经完成了所有这些工作,当有人访问您网站上的目录时,系统会提示他们提供用户名和密码。如果他们知道,它会让他们进入,然后显示PHP文件中的内容(您需要确保文件名为 index.php

我希望有所帮助!

答案 1 :(得分:1)

有很多方法......

<?php
if($_GET['token'] != 'a1a2a3a4a5') {
    die('Wrong request!');
}
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Persons");

while($row = mysqli_fetch_array($result)) {
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br>";
}

mysqli_close($con);
?>

然后从以下网址访问您的网页:

http://www.example.com/readdata.php?token=a1a2a3a4a5

答案 2 :(得分:0)

Apache(或任何其他服务器)将根据它看到的文件扩展名执行文件,并告知它如何处理。如果没有具体说明,它将仅显示为文本。

如果您的服务器正在运行PHP文件,您可以包含您喜欢的任何文件名 - 包括扩展名,PHP将假设它只是PHP。如果您试图变得棘手,并将其称为.php5.include,并且您没有将服务器设置为以PHP格式运行这些文件类型,则会将其输出到用户只是发短信。

在服务器上正确设置文件类型或通过默认扩展名全部调用它们。

根据您提供的代码:

<?php
$host = "localhost";
$db_name = "NAME_OF_THE_DATABASE";
$username = "root";
$password = "PASSWORD_OF_THE_DATABASE";
?>

输入此确切网址的用户将看到总数为NOTHING。这是因为当文件作为PHP执行时,它只是分配变量值 - 它不会显示它们。

如果文件没有作为PHP可执行文件关联,您的服务器将按原样将内容发送给用户 - 显示您编写的所有代码。

答案 3 :(得分:0)

从你的问题我理解的是你不希望任何机构看到密码,所以我认为 你可以加密你的PHP代码,仍然在服务器上运行它

使用以下工具

你绝对可以隐藏/编码/加密php源代码,而“其他人”可以在他们的机器上安装它。您可以使用以下工具来实现相同的目标。

答案 4 :(得分:0)

您不应该在屏幕上看到代码,除非您的文件添加.php,检查扩展名。 我建议你在新的php文件中分离数据库细节,并将其移到上一级目录

HTML CODE:

<form action="{your url}">
  Please enter you password:<input name="password" type="password" />
  <input type="submit" value="Submit" />
</form>

PHP code:

$password=$_GET['password'];
if($password=="1234"){

echo 'correct password';

//and add your code here

}

答案 5 :(得分:-1)

  

我知道他们看到密码,我只是不想看到文件的内容&gt;从MySQL数据库中检索!!! (上面的代码只是一个例子)

您想查看.htaccess然后: http://httpd.apache.org/docs/2.2/howto/htaccess.html