我有一个从我的数据库中检索一些重要数据的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文件与数据库交互并显示输出!
希望你这次有人来找我!
答案 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);
?>
然后从以下网址访问您的网页:
答案 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