html和php关联实例
login.html
<meta charset="utf-8">
<form action="login.php" method="post">
<p>
账户: <input type="text" name="uname">
</p>
<p>
密码: <input type="password" name="pwd">
</p>
<p>
<input type="submit" value="登录">
</p>
</form>
login.php
<?php
header('content-type:text/html;charset=utf-8');
// 前端有uname和pwd数据提交
if(isset($_POST['uname'])&&isset($_POST['pwd'])){
// 1.接收前端提交的数据
$uname=$_POST['uname'];
$pwd =$_POST['pwd'];
// 2.对数据进行检查
if(empty($uname)||empty($pwd)){
die('账户和密码都不能为空<br>');
}else{
echo '账户:',$uname,'密码:',$pwd,'<br>';
}
}
?>
常用判断和操作函数
// 1.判断变量是否为空
if(empty($name)){
echo '变量不允许空,请重新设置<br>';
}else{
echo 'sad','name:'.$name.'<br>';
}
//2.正则验证用于精确匹配模式
if(preg_match('/^[a-zA-Z]*$/',$name)){
echo 'name:',$name.'正确','<br>';
}else{
echo '变量只允许包含字母!<br>';
}
// 3.去掉字符串的首尾空格
$data=' Ma zhiguo ';
echo '1.|'.$data.'|<br>';
echo '2.|'.trim($data).'|<br>';
// 4.去掉字符串数据中的\,'\n'表示转义字符rfgfdg
$data='\Ma\zhiguo';
echo '3.',$data.'<br>';
echo '4',stripslashes($data).'<br>';
// 5.将字符串中的一些特殊字符做字符实体的转换
// < < > >
$data = '<script>alert("恶意代码");</script>';
echo '5.',$data.'<br>';
echo '6.',htmlspecialchars($data).'<br>';
COOKIES和SESSION (作用是保持会话状态)
http/s协议都是无状态的协议.但是web应用的功能实现需要保存状态(例如登录状态),需要使用额外的技术保存状态.这就是$_COOKIES和$_SESSION要做的事情.
cookie数据是在服务器端设置,保存在浏览器中的.cookie数据是按域隔离的.每个不同的域名有着不同的cookie,一般不能相互提交.cookie是自动提交.
session的数据存在服务器的,phpstudy给定的位置:
cookie的使用
setcookie.php
<?php
header('content-type:text/html;charset=utf-8');
// 设置cookie,由服务器向浏览器的cookie中写入数据
setcookie('username','tedu',time()+3600);
echo '设置cookie成功!<br>';
?>
setcookie.php
<?php header('content-type:text/html;charset=utf-8');
if(isset($_COOKIE['username'])){
echo '北京欢迎你:'.$_COOKIE['username'];
}else{
echo 'cookie不存在或失效<br>';
} ?>
delcookie.php
<?php header('content-type:text/html;charset=utf-8'); //删除cookie if(isset($_COOKIE['username'])){
setcookie('username','',time()-3600);
echo '删除成功!<br>';
} ?>
session的使用
login.php
<?php
// 1.启动session
session_start();
header('content-type:text/html;charset=utf-8');
// 前端有uname和pwd数据提交
if(isset($_POST['uname'])&&isset($_POST['pwd'])){
// 1.接收前端提交的数据
$uname=$_POST['uname'];
$pwd =$_POST['pwd'];
// 2.对数据进行检查-为空检查
if(empty($uname)||empty($pwd)){
die('账户和密码都不能为空<br>');
}
// 3.对数据做正则的模式检查-例如要求用户名只能由字母和数字组成
if(!preg_match('/^[a-zA-Z0-9]*$/',$uname)){
die('账户只能由字母和数字组成<br>');
}
// 4. 登录验证,要求: admin/123456
if($uname=="admin"&&$pwd=="123456"){
// 将用户信息存储在SESSION中
$_SESSION['uname']=$uname;
$_SESSION['pwd']=$pwd;
// echo '登录成功<br>';
// 进入用户管理中心
header('Location:manager.php'); //转向新网页
}else{
echo '用户名或密码错误,请重新输入<br>';
}
// echo '账户:',$uname,'密码:',$pwd,'<br>';
}
?>
用户退出
<?php
// 启动session
session_start();
header('content-type:text/html;charset=utf-8');
if(isset($_SESSION['uname'])&&isset($_SESSION['pwd'])){ //判断会话是否存在
//清空session文件中的这两个值
unset($_SESSION['uname']);
unset($_SESSION['pwd']);
// 删除对应的session文件
// session_destroy();
echo '用户退出成功<br>';
}
?>
<?php
// 1.启动session
session_start();
header('content-type:text/html;charset=utf-8');
if(isset($_SESSION['uname'])&&isset($_SESSION['pwd'])){
if($_SESSION['uname']=='admin'&&$_SESSION['pwd']=='123456'){
echo '这是用户管理中心页面<br>';
}else{
header('Location:login.html');
}
}else{
// 没有登录,跳转到登录页面
header('Location:login.html');
}
?>
manager.php
<?php
// 1.启动session
session_start();
header('content-type:text/html;charset=utf-8');
if(isset($_SESSION['uname'])&&isset($_SESSION['pwd'])){
if($_SESSION['uname']=='admin'&&$_SESSION['pwd']=='123456'){
echo '这是用户管理中心页面<br>';
}else{
header('Location:login.html');
}
}else{
// 没有登录,跳转到登录页面
header('Location:login.html');
}
?>
使用MYSQL完成图书馆信息的增删改查
<?php
header('content-type:text/html;charset=utf-8');
// 1.连接数据库服务器
// 参数1:数据库服务器的IP地址
// 参数2:数据库登录账号
// 参数3:登录密码
// 参数4:数据库名
$conn=new mysqli('127.0.0.1','root','root','tedudb');
if($conn->connect_error){
// 结束程序
die('数据库连接失败<br>');
}
echo '数据库连接成功!<br>';
// 2.插入数据
$sql="insert into book(title,publisher,price)values('盗墓笔记','北京大学出版社',96)";
// query函数的作用是执行sql语句
if($conn->query($sql)){
echo '插入数据成功<br>';
}
// 3.修改数据
$sql="update book set price=price-5";
if($conn->query($sql)){
echo '修改数据成功!<br>';
}
// 4.删除
$sql="delete from book where title='盗墓笔记'";
if($conn->query($sql)){
echo '删除数据成功!<br>';
}
// 5.查询
$sql='select id,title,publisher,price from book';
// 如果是查询语句,query函数的返回结果不再是bool值,而是结果集
$result= $conn->query($sql);
// num_rows表示查询的结果中有多少行数据
if($result->num_rows>0){
// 调用结果集的fetch_assoc()方法获取一行数据,保存到$row
while($row=$result->fetch_assoc()){
//显示当前行的每一个单元格数据
echo $row['id'],$row['title'],$row['publisher'],$row['price'],'<br>';
}
}else{
echo '没有数据<br>';
}
// 6.关闭数据库连接
$conn->close();
echo '关闭数据库连接!<br>';
?>
预处理(流程化操作)
在做增删改查操作时,如果采用预处理方式,参数都是由类型的,在一定程度上提高了安全性。另外,执行效率也比普通方式高
prepare.php
<?php
header('content-type:text/html;charset=utf-8');
// 1.连接数据库服务器
$conn=new mysqli('127.0.0.1','root','root','tedudb');
if($conn->connect_error){
die('数据库服务器连接失败<br>');
}
echo '数据库连接成功!<br>';
// 2.插入数据
$sql="insert into book(title,publisher,price)values(?,?,?)"; //注意并未执行(占个位置)主要为流程化
// 生成预处理 //创建一个类,进行赋值
$stmt = $conn->prepare($sql);
// 绑定参数(已经给参数指定了数据类型)
$stmt->bind_param('ssd',$title,$publisher,$price);
// 变量赋值
$title='盗墓笔记';
$publisher='北京大学出版社';
$price=98.5;
// 执行sql语句
$stmt->execute(); //最终进行变量赋值到语句中,然后执行
// 变量赋值
$title='eNsp实战';
$publisher='清华大学出版社';
$price=60;
// 执行sql语句
$stmt->execute();
//关闭预处理
$stmt->close();
// 5.查询
$sql='select id,title,publisher,price from book';
$result= $conn->query($sql); //生成一个集合(有行有列)
if($result->num_rows>0){ //提行(行里面有单元)
while($row=$result->fetch_assoc()){ //提出单元(单元里面有元素)
echo $row['id'],$row['title'],$row['publisher'],$row['price'],'<br>';
}
}else{
echo '没有数据<br>';
}
// 2.关闭数据库连接
$conn->close();
echo '关闭数据库连接!<br>';
?>