PHP培训课程
一.环境搭建(phpstudy)
1.必要套件
(1)Apache/Nginx(web服务器)
运行PHP时一定要启动
(2)MySQL(数据库管理系统)
统一使用5.7版本,如果网页用到了数据库需要启动
2.网站创建
(1)PHP版本
统一使用5.6版本,可在管理处修改
(2)网站根目录
域名即相当于取代了网站根目录的路径,有时也会默认跳转到index.php,一般指向www这个目录。通过在域名后面加文件路径打开相应文件
(3)phpstrom环境搭建
3.数据库创建
(1)创建数据库
(2)Navicat数据库管理工具
安装:https://springboot.io/t/topic/1314
连接上本地数据库
主机填写:localhost(本地)
二.PHP与表单
------login.html------
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="login.php" method="post">
<input type="text" name="name">
<input type="password" name="password">
<input type="email" name="email">
<button type="submit">提交</button>
</form>
</body>
</html>
------login.php------
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$password = $_POST["password"];
if (isset($name)) {
$pic = "1.jpg";
// 三种插入变量的方式
echo "我的名字是$name";
echo "<br>";
echo "我的邮箱是".$email;
echo "<br>";
echo "我的密码是{$password}";
echo "<br>";
// 多个引号的情况
echo "<img src='1.jpg'/>";
echo "<br>";
echo "<img src='$pic' />";
// 通过url传递数据
echo "<a href='get.php?name=233&uid=1111'>链接</a>";
}
------get.php------
<?php
$name = $_GET['name'];
echo $name;
(1)PHP语言特性,和html混合起来用
(2)表单如何和PHP联系起来
(3)PHP可以打印html标签但是看不到源码的
(4)PHP弱类型语言,和JavaScript一样不需要声明数据类型,而是编译器自行判断
<?php
$obj = 123;
print_r(gettype($obj));
echo "<br>";
$obj = '1233';
print_r(gettype($obj));
echo "<br>";
$obj = array('v',1);
print_r(gettype($obj));
(4)PHP打印字符串中插入变量的方法
(5)用到多个引号的情况
(6)请求方式get和post
- 观察get情况下的url
- get获取资源(如网页,图片,查询数据库这些都是用get请求),post传输数据(用get虽然也能传输数据,但是数据大小相对较小,而且安全性不好)
- get可以通过url传递数据
- 其他http请求方式,暂时还用不上
三.PHP与Ajax
表单中,我们用post向php发送数据,页面会刷新。有些地方是静态的但是也跟着刷新了,有没有什么办法让页面不刷新获取数据(异步请求)呢?你们应该已经在js中学过了,用ajax来实现
—————login.html—————
<h1>动态输入框</h1>
<input type="text" name="username" id="btname">
<script>
// 当输入框失去焦点时触发事件
document.querySelector('#btname').onblur=function(){
// 发送ajax请求
// 1.创建异步对象
var ajax = new XMLHttpRequest();
// 2.设置请求方式和对象
ajax.open('post','get.php');
/*如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:*/
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// 3.发送请求,数据用js获得的输入框里面的内容
ajax.send('name='+ document.querySelector("#btname").value);
ajax.onreadystatechange = function (){
if(ajax.readyState==4&&ajax.status==200){
alert(ajax.responseText);
}
}
}
—————login.php—————
<?php
$name = $_POST['name'];
echo '我的名字是'.$name;
?>
三.PHP与cookie,seesion
------login.php------
$add_name = md5($name);
setcookie("name",$add_name,time()+3600);
$add_name = base64_encode($name);
setcookie("name",$add_name,time()+3600);
------get.php------
<?php
$name = $_COOKIE['name'];
echo $name;
echo base64_decode($name);
(1)由get引入:除了通过get的这种方式,其它页面如何获得一些共用的信息呢?我们有个想法,把这个信息存起来如何?
(2)把信息存在客户端中,这里指浏览器
(3)时限如果没设计过期时间,默认为关闭浏览器清除(记得清理缓存)
(4)cookie存在的问题,可以在客户端修改,特别是明文的情况下,很容易被修改。我们可以进行加密(md5是单向加密不可逆,base64_decode双向加密,可以解密,但是可以构建自己的加密算法让客户端难以解密),客户端看不懂是什么,但是服务端知道加密算法可以解密
(5)把信息存在cookie里面会有很多安全问题(例如:cookie可能被解密了,cookie劫持等等),那我们可以选择把信息存在服务端中,再随机生成一个钥匙给客户端(即sessionid,保存在cookie中),那么客户端只能通过这个钥匙发给服务器进行匹配,校验通过才能获得信息
// 开启seesion会话
session_start();
// 设置session
$_SESSION["name"] = $name;
// 开启session会话
session_start();
// 取回session
$name = $_SESSION["name"];
echo $name;