一、什么是表单?
二、如何创建一个表单
表单的一个最简单的写法:
<form action="https://www.baidu.com/s">
<input name='wd' />
<input type='submit' />
</form>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<form action="1.html" method="get">
<input type="text" />普通文本框<br />
<input type="password" />密码文本框<br />
<input type="number" />数字文本框<br />
<input type="file" />上传框<br />
<input type="radio" name="dx"value="单选"/>单选框<br />
<input type="checkbox" value="多选"/>多选<br />
<input type="button" />按钮<br />
<input type="submit" />提交<br />
<input type="image" src="https://img0.baidu.com/it/u=4162443464,2854908495&fm=253&fmt=auto&app=138&f=JPEG?w=1000&h=800"/>图片提交按钮<br />
<input type="reset" />重置<br />
<select name="月">
<option value=1>1月</option>
<option value=2>2月</option>
<option value=3>3月</option>
<option value=4>4月</option>
<option value=5>5月</option>
<option value=6>6月</option>
<option value=7>7月</option>
<option value=8>8月</option>
<option value=9>9月</option>
<option value=10>10月</option>
<option value=11>11月</option>
<option value=12>12月</option>
<option value=nf>nf月</option>
</select><br />
<textarea>留言板</textarea>
</body>
</html>
三、PHP和数据库交互
例:
//比较简单的用户登录页面
<meta charset='GBK' />
<form><center>
用户登录<br />
账号: <input type='text' name='uname' /><br />
密码: <input type='password' name='pwd'/><br />
<input type='submit' value='登录'>
</form></center>
<?php
$username = $_REQUEST['uname'];
$password = $_REQUEST['pwd'];
?>
会出现一下报错,只需要在$username,$password前加上@符即可
代码修改为:
<meta charset='GBK' />
<form><center>
用户登录<br />
账号: <input type='text' name='uname' /><br />
密码: <input type='password' name='pwd'/><br />
<input type='submit' value='登录'>
</form></center>
<?php
@$username = $_REQUEST['uname'];//修改的在这里
@$password = $_REQUEST['pwd'];//修改的在这里
?>
效果如下:
添加一个逻辑判断:
<meta charset='GBK' />
<form><center>
用户登录<br />
账号: <input type='text' name='uname' /><br />
密码: <input type='password' name='pwd'/><br />
<input type='submit' value='登录'>
</form></center>
<?php
@$username = $_REQUEST['uname'];
@$password = $_REQUEST['pwd'];
if(isset($_REQUEST['uname'])){
if($username=='admin' and $password=='123456'){
echo '登录成功';
}else{echo '账户密码错误';}}
?>
代码说明:isset()函数用来检测变量是否存在。
效果如下:
当输入1231,132132的时候,提示密码错误,如下图:
当输入admin, 123456的时候,提示登录成功,如下图:
PHP连接数据库操作:
mysqli_connect(连接地址, 账户 ,密码, 库名);
mysqli_query(连接, 要执行的SQL语句);
mysqli_fetch_array() //把对象变成数组
sql的两种写法,注意单双引号的区别:
1.$sql = "select * from admin where username='$username' and password='$password'";
2.$sql = 'select * from admin where username="'.$username.'" and password ="'.$password.'"';
<meta charset='GBK' />
<form><center>
用户登录<br />
账号: <input type='text' name='uname' /><br />
密码: <input type='password' name='pwd'/><br />
<input type='submit' value='登录'>
</form></center>
<?php
@$username = $_REQUEST['uname'];
@$password = $_REQUEST['pwd'];
if(@$_REQUEST['uname'] != '' and @$_REQUEST['pwd'] != ''){
$conn = mysqli_connect('127.0.0.1', 'root', 'root', 'test'); //数据库的连接
$sql = 'select * from admin where username="'.$username.'" and password ="'.$password.'"';
$b = mysqli_query($conn, $sql); //sql语句的执行
$c = mysqli_fetch_array($b); //将数据库里的对象变为数组
echo "你的密码是: ".$c['password']; //获取数据
}else{echo '账户密码错误';}
?>
效果如下:
S
admin "or 1=1 -- qwe
select * from admin where username="admin" and password =""or 1=1 -- qwe"
-- 空格 表示注释 # 是mysql特殊注释
SQL注入的原理:
用户输入的数据被当做SQL代码执行
防御:
检测传参内容,然后进行拦截。