PHP的概念:是一个被广泛利用的脚本文件,主要用于动态页面的开发
以下几点是自己在学PHP时的有一些学习的知识点
- PHP的变量主要对于一些超全局变量的使用
- PHP和HTML混合编程的使用(里面有很多的坑,例如:一些格式,foreach,if等判断语句,和循环语句的使用,当然对于使用有PHP代码提示的编译软件就是相当的简单,但是作为初级程序员,还是要多敲代码,有利于自我的提示)
- PHP最重要的特点,函数语言,1000多个内置函数,不需要记,多查文档,多练习就好
- PHP和Apache的联合使用。对于Apache的安装配置,特别是配置文件里面的设置。
- PHP结合HTML中的表单(form)的使用,可以说使用的最多的,GET和POST的请求的不同,通过form表单上传的数据存放的数据类型,学会利用php中输出数据var_dump(),可以让自己更好的理解如何编写后续的代码,要注意自己代码的鲁棒性
<?php //判断请求的方式,从而决定是否决定执行对数据的处理 if($_SERVER['REQUEST_METHOD']==='POST'){ var_dump($_POST); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--由于文件重命名会导致修改,鲁棒性不强--> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> <div> <label for="username">用户名</label> <input type="text" id="username" name="username"> </div> <div> <label for="password">密码</label> <input type="password" id="password" name="password"> </div> <button type="submit">登录</button> </form> </body> </html>
- PHP和JSON的使用,就是文件函数的使用,还有json的序列化和反序列化函数的使用
PHP和数据库的使用,相比于其他后台语言,不得不说PHP特别好用,一连串的函数,就可以和数据库之间建立连接
mysqli_connect()-->mysqli_query() ----mysqli_fetch_assoc() 或者是mysqli_affected_rows() (对于mysqli有可能php.ini的配置文件没有删掉注释,删掉注释就行了),做一个简单的管理系统(增删改查),跟着教程做的,在做的过程中有几个点我认为还是蛮重要的 增加页面:要注意文件路径的存放问题,使用绝对路径
//路径的移动
//删除图片的名称
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
// => jpg
$target = '../curd/assets/img/' . uniqid() . '.' . $ext;
if (!move_uploaded_file($image['tmp_name'], $target)) {
$GLOBALS['error_message'] = '上传头像失败';
return;
}
//
$avatar = substr($target, 2);
编辑,删除页面页面:对于如何获取编辑的是哪个对象时利用到了a标签的请求方式是GET请求,然后可以获取当前编辑对象的id;
<a class="btn btn-info btn-sm" href="update.php?id=<?php echo $item['id'] ?>" id=<?php echo $item['id']?>>编辑</a> 注意herf后面?后面跟的数据 编辑页面的逻辑判断也是一个重难点:第一次从用户界面到编辑界面是GET方式,在编辑页面的保存时POST方式,需要注意,此处的逻辑判断,还有一个图片上传和新增图片上传的区别,下面是编辑页面的代码:
<?php
//function get(){
//var_dump($_GET['id']);
if (empty($_GET['id'])) {
exit('<h1>必须传入指定参数</h1>');
}
$id = $_GET['id'];
// 1. 建立连接
$conn = mysqli_connect('127.0.0.1', 'root', '123456', 'test');
if (!$conn) {
exit('<h1>连接数据库失败</h1>');
}
// 2. 开始查询
// 因为 ID 是唯一的 那么找到第一个满足条件的就不用再继续了 limit 1
$query = mysqli_query($conn, "SELECT * FROM users WHERE id = {$id} LIMIT 1 ;");
if (!$query) {
exit('<h1>查询数据失败</h1>');
}
//超全局变量,获取已有数据
//$GLOBALS['user'] = mysqli_fetch_assoc($query);
$user = mysqli_fetch_assoc($query);
var_dump($user);
if (!$user) {
exit('<h1>找不到你要编辑的数据</h1>');
}
function edit(){
global $user;
//$name = $_POST['name'];
if(empty($_POST['name'])){
$GLOBALS['error_message'] = '请输入添加的用户名称';
return;
}
//$gender = $_POST['gender'];
if(!(isset($_POST['gender'])&&$_POST['gender']!='-1')){
$GLOBALS['error_message'] = '请选择性别';
return;
}
//$birthday = $_POST['birthday'];
if(empty($_POST['birthday'])){
$GLOBALS['error_message'] = '请输入生日';
return;
}
//数据的存放路径
$user['names'] = $_POST['name'];
$user['gender'] = $_POST['gender'];
$user['birthday'] = $_POST['birthday'];
//有图片就上传,没有图片文件,就用原始文件
//$head = isset($_FILES['images'])&&$_FILES['images']['error'] === UPLOAD_ERR_OK);
if (isset($_FILES['images']) && $_FILES['images']['error'] === UPLOAD_ERR_OK){
//用户上传一个新头像
$image =$_FILES['images'];
$allowed_types1 = array('image/jpeg', 'image/png', 'image/gif');
if (!in_array($image['type'], $allowed_types1)) {
$GLOBALS['error_message'] = '这是不支持的图片格式';
return;
}
//大小的判断
if($image['size']>5*1024*1024){
$GLOBALS['error_message'] = "图片大小过大";
return;
}
//路径的移动
//删除图片的名称
$ext = pathinfo($_FILES['images']['name'], PATHINFO_EXTENSION);
// => jpg
$target = '../curd/assets/img/' . uniqid() . '.' . $ext;
if (!move_uploaded_file($image['tmp_name'], $target)) {
$GLOBALS['error_message'] = '上传头像失败';
return;
}
//存放数据使用,绝对路径
var_dump("运行
");
$user['images'] = substr($target, 2);
//var_dump($user['images']);
}
//var_dump($user['avatar']);
var_dump($user);
// 1.建立连接
$connect = mysqli_connect('127.0.0.1','root','123456','test');
//2.运输物资
//UPDATE users SET images ='/curd/assets/img/icon-08.png' , names='张三丰' ,gender = 0 WHERE id =24;
$query = mysqli_query($connect,"UPDATE users SET images ='{$user['images']}' , names='{$user['names']}' ,gender = {$user['gender']},birthday = '{$user['birthday']}'WHERE id ='{$user['id']}';");
}
if($_SERVER['REQUEST_METHOD']=== 'POST') {
edit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>编辑页面</title>
<link rel="stylesheet" href="bootstrap.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav class="navbar navbar-expand navbar-dark bg-dark fixed-top">
<a class="navbar-brand" href="#">管理编辑页面</a>
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="01-indext.php">用户管理</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">商品管理</a>
</li>
</ul>
</nav>
<main class="container">
<h1 class="heading">编辑“<?php echo $user['names']; ?>”</h1>
<form action="<?php echo $_SERVER['PHP_SELF'];?>?id=<?php echo $user['id']; ?>" method="post" enctype="multipart/form-data" >
<div class="form-group">
<label for="images">头像</label>
<input type="file" class="form-control" id="avatar" name="images">
</div>
<div class="form-group">
<label for="name">姓名</label>
<input type="text" class="form-control" id="name" value="<?php echo $user['names']; ?>" name="name">
</div>
<div class="form-group">
<label for="gender">性别</label>
<select class="form-control" id="gender" name="gender">
<option value="-1">请选择性别</option>
<option value="1"<?php echo $user['gender'] === '1' ? ' selected': ''; ?>>男</option>
<option value="0"<?php echo $user['gender'] === '0' ? ' selected': ''; ?>>女</option>
</select>
</div>
<div class="form-group">
<label for="birthday">生日</label>
<input type="date" class="form-control" id="birthday" name="birthday" value="<?php echo $user['birthday']; ?>">
</div>
<button class="btn btn-primary">保存</button>
</form>
</main>
</body>
</html>
最后是对cookie的简单使用,
cookie:HTTP 很重要的一个特点就是无状态(每一次见面都是“初次见面”),如果单纯的希望通过我们的服务端程序去记 住每一个访问者是不可能的,所以必须借助一些手段或者说技巧让服务端记住客户端,这种手段就是 Cookie
cookie的一些属性:见下图
PHP可以用$_COOKIE[' key '] 获取设置的cookie值
cookie类似于生活中的小票 ,但是不安全,容易被客户端看到;
由于 Cookie 是服务端下发给客户端由客户端本地保存的。换而言之客户端可以在本地对其随意操作,包括删除和 修改。如果客户端随意伪造一个 Cookie 的话,对于服务端是无法辨别的,就会造成服务端被蒙蔽,构成安全隐 患。
于是乎就有了另外一种基于 Cookie 基础之上的手段:Session:
Session 区别于 Cookie 一个很大的地方就是:Session 数据存在了服务端,而 Cookie 存在了客户端本地,存在服 务端最大的优势就是,不是用户想怎么改就怎么改了。
最后说一句写的不是蛮好,请谅解,文章有什么错误,多谢到你能指出来,我会加以改正