一、php 将数据库内容显示在页面上
这个过程能大致明白网页上的内容是怎么来的
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>导航制作</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/public.css">
</head>
<body>
<!-- 导航 -->
<nav class="pageNav">
<ul class="list">
<li><a href="index.php" target="_blank"><span>首页</span></a></li>
<li><a href="news.php" target="_blank"><span>公司产品</span></a></li>
<li><a href="#" target="_blank"><span>公司介绍</span></a></li>
<li><a href="#" target="_blank"><span>联系我们</span></a></li>
<li><a href="#" target="_blank"><span>招聘人才</span></a></li>
</ul>
</nav>
<!-- 导航 end -->
</body>
</html>
<?php
//php操作mysql数据库将数据取出来并展示在这个页面上
//第一步先链接mysql数据库
//如果没有这个php标识符,浏览器会把他默认当成html来解析
$conn = mysqli_connect('localhost', 'root', 'root');
//这里可以有多个mysql数据库的连接请求
if(!$conn){
die("链接数据库失败:".mysqli_connect_error());
}
//需要选择连接哪个具体的数据库
mysqli_select_db($conn,"test");
//对这个数据库进行操作,执行sql语句
//比如这里是要读取数据库的内容,将其取出并展示在页面,所以查询数据库的内容
$sql="select * from content";
$result=mysqli_query($conn,$sql);
//mysqli_query()函数是MySQL数据库中最重要、最常用的查询函数之一。它将SQL查询语句作为参数传入,从而返回一个包含查询结果的结果集。
while($row=mysqli_fetch_array($result)){
echo $row['id'];
echo $row['news'];
echo $row['username'];
}
?>
mysqli_select_db函数简介
mysqli_query()函数功能及使用方法用法介绍
PHP mysqli_query函数使用教程
配置文件
按照上面的代码,每次访问都需要进行数据库连接,我们可以把它弄成配置文件。将数据库连接代码重新保存到新的config.php文件
这里就可以使用 include 进行包含文件了
这里可以引申两个点,一个是数据库配置文件。如果配置文件泄露则可能导致许多敏感信息泄露,配置文件泄露可以是来源于源码泄露。二是 include包含文件漏洞
只想让php页面显示部分数据库的内容 - 接收参数
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>导航制作</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/public.css">
</head>
<body>
<!-- 导航 -->
<nav class="pageNav">
<ul class="list">
<li><a href="index.php" target="_blank"><span>首页</span></a></li>
<li><a href="news.php" target="_blank"><span>公司产品</span></a></li>
<li><a href="#" target="_blank"><span>公司介绍</span></a></li>
<li><a href="#" target="_blank"><span>联系我们</span></a></li>
<li><a href="#" target="_blank"><span>招聘人才</span></a></li>
</ul>
</nav>
<!-- 导航 end -->
</body>
</html>
<?php
//php操作mysql数据库将数据取出来并展示在这个页面上
//第一步先链接mysql数据库
//如果没有这个php标识符,浏览器会把他默认当成html来解析
//$conn = mysqli_connect('localhost', 'root', 'root');
//这里可以有多个mysql数据库的连接请求
//if(!$conn){
// die("链接数据库失败:".mysqli_connect_error());
//}
//需要选择连接哪个具体的数据库
//mysqli_select_db($conn,"test");
//对这个数据库进行操作,执行sql语句
//比如这里是要读取数据库的内容,将其取出并展示在页面,所以查询数据库的内容
include("../blog/config.php");
$i=$_GET['id'];//GET 请求接受id参数值并赋给变量i
$sql="select * from content where id=$i";
$result=mysqli_query($conn,$sql);
//mysqli_query()函数是MySQL数据库中最重要、最常用的查询函数之一。它将SQL查询语句作为参数传入,从而返回一个包含查询结果的结果集。
while($row=mysqli_fetch_array($result)){
echo $row['id'];
echo $row['news'];
echo $row['username'];
}
?>
访问 http://localhost/blog/news.php?id=1 ,页面仅显示 id 为1的内容 , 其执行的sql语句如下
重点来了。 这里传入的参数是 id =1, 在sql语句中执行的是 select * from content where id=$i
, 那么加入我们传入的参数被人修改为 id=1 union select 1,2,3, 那么执行的sql语句就是 select * from content where id=1 union select 1,2,3
, 这个就是最基本的sql注入