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.将字符串中的一些特殊字符做字符实体的转换

// <  &lt;   > &gt;

$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>';

?>