周末爆出来好多瓜,都无心学习了,想想躺在床上,度过2天周末,那是一件多么愉快的事儿,只可惜,现实它不许可啊,我现在的想法便是快速结束PHP的入门学习,然后过渡到web前端学习,末了开拓一个娱乐靶场,类似冲顶大会那样,10道题,答对给褒奖~
如何只花1元搭建个人博客网站
作者 ailx10
一、连接数据库 hack首先在mysql中,创建一个空的数据库 hack剩下的操作交给PHP
ailx10
10w+ 次咨询
知乎网络安全精良回答者
网络安全硕士
去咨询
通过PDO工具可以轻松的实现数据库的连接~第一个参数:指天命据库主机和数据库名字第二个参数:指定上岸用户名第三个参数:指定上岸密码
<?phptry { $db = new PDO(34;mysql:hosr=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~";}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}
二、PHP创建表
假设我们要开一个培训班,我们创建一个黑客学习项目表,里面有5个字段~
id 主键 整数subject 科目 字符串price 价格 小数is_ffm 会员免费 整数add_time 上架韶光 日期最好设置一下主键自增~这样更加方便插入数据~代码写的有点挫<?phptry { $db = new PDO("mysql:host=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~"; try { $q = $db->exec("create table study( id INTEGER PRIMARY KEY, subject VARCHAR (255), price DECIMAL (4,2), is_ffm INT, add_time DATE )"); print "创建表 study 成功~"; }catch (PDOException $e){ print "创建表失落败,由于:" . $e->getMessage(); }}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}
三、把数据存入数据库
我们开始添加黑客学习科目
【网络安全】TCP-IP协议攻击
作者 ailx10
web安全入门,9块9,会员免费内网安全入门,9块9,收费课程ctf 6项全能入门,19块9,会员免费<?phptry { $db = new PDO("mysql:host=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~\n"; $insert_data_0 = "insert into study(id,subject,price,is_ffm,add_time) values (0,'web安全入门',9.90,1,now())"; $insert_data_1 = "insert into study(id,subject,price,is_ffm,add_time) values (1,'内网安全入门',9.90,0,now())"; $insert_data_2 = "insert into study(id,subject,price,is_ffm,add_time) values (2,'ctf 6项全能入门',19.90,1,now())"; $res = $db->exec($insert_data_0); $res &= $db->exec($insert_data_1); $res &= $db->exec($insert_data_2); if(false === $res) { print "数据插入失落败\n"; }else{ print "数据插入成功\n"; } $que = $db->query('select from study'); while($row = $que->fetch()){ print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]\n"; }}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}
四、安全的向MySQL数据库中插入数据通过?问号站位
$insert_data_0 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),9.90,1,now())");
通过字符串进行补位
$res = $insert_data_0->execute(array('web安全入门666'));
这样用户输入的数据,就不会对原始的SQL语句构造产生影响,担保无法进行SQL注入~要不然,黑客直接SQL注入,把全体数据库给灭掉~听懂的给个掌声~
【Web安全】SQL注入攻击戒备
作者 ailx10
<?phptry { $db = new PDO("mysql:host=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~<br>"; $insert_data_0 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),9.90,1,now())"); $insert_data_1 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),9.90,0,now())"); $insert_data_2 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),19.90,1,now())"); $res = $insert_data_0->execute(array('web安全入门666')); $res &= $insert_data_1->execute(array("内网安全入门666")); $res &= $insert_data_1->execute(array("CTF入门666666")); if(false === $res) { print "数据插入失落败<br>"; }else{ print "数据插入成功<br>"; } $que = $db->query('select from study'); while($row = $que->fetch()){ print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; }}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}?>
五、从数据库中读取数据
在上面一节中,我们已经提前体验了查询
$db->query('select from study');
通过fetch()方法返回查询中的下一行
$row=$que->fetch()
如果行不多的话,也可以通过fetchAll()方法,一把撸~
$que = $db->query('select from study'); $rows = $que->fetchAll(); foreach ($rows as $row) { print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; }
WEB安全攻防入门
作者 ailx10
$que = $db->prepare('select from study where subject like ?'); $que->execute(array("web安全%")); $rows = $que->fetchALl(); foreach ($rows as $row) { print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; }
如果不想使通配符生效可以通过quote方法和strtr方法这样做便是精确匹配了~
$sub = $db->quote("web安全%"); $sub = strtr($sub,array("_"=>"\_","%"=>"\%")); $que = $db->query("select from study where subject like $sub"); while ($row = $que->fetch()) { print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; } print "没有数据了";
本篇完,感激大家~