PHP基础语法学习(前端了解)

php基本语法

1. 前后端交互

1.1 仅学习基本语言自己能写demo即可


1.2 了解前后端开发状态


1.3 安装环境

  • 浏览器不运行php文件
  • php解析需要apache环境
  • 涉及到后段,关系型数据库MySql
  • 集成环境:MAMP/WAMP

1.4 phpstudy(集成环境软件)

  • 启动时将apache和Mysql一起打开

  • apache 端口80,Mysql 端口号3060,也可以自己设置

  • phpstudy 默认首页,在文件夹有index.xxx时会自动首页显示

  • phpstudy 默认不显示目录结构(新版显示目录结构解决方法)

    面板>设置>配置文件>vhosts.conf>0localhost_80>记事本打开找到“Options FollowSymLinks ExecCGI”改成“Options +Indexes +FollowSymLinks +ExecCGI”>重新启动apache


2. php基本语法

1.1 php必须写在php标签对 <?php ?>;没写在内部的代码都会解析成html


1.2 定义变量

<?php 
	$num = 100  
?>

1.3 输出语法

<?php 
  // 解决中文乱码
  header('content-type:text/html;charset=utf-8');
  
	// 只能输出基本类型,复杂类型会报错
	echo "hello world";
	echo("</br>")

	// 所有类型
	print_r()
  echo("</br>")

	// 所有类型,并且带上类型
	var_dump()
  echo("</br>")
?>

1.4 字符串

<?php 
	// 单引号:普通字符串
  // 双引号:可以解析变量,和模版字符串一样
  // 拼接字符串用	.
?>

1.5 流程控制语句

<?php 
  // 和js差不多
	if(){}
	switch(){}
	for(){}
	while(){}
	do{}while{}
?>

1.6 数组

<?php
	// 索引型数组
  $arr = array(1,2,3,4,5)
  // 关联型数组相当于js对象
  $arr = array(a=1,b=2,c=3)
?> 

3. php操作数据库

3.1 了解MySql数据库(需要用到数据库可视化工具,如navcat)


3.2 操作数据库基本语法

<?php
	// 1.和数据建立连接(先开启数据库)
  $link = mysqli_connect('IP','username','password','database');
  print_r($link);
  
  // 2.查询一个sql
  // 2.1 关键字建议大写;字段名表名建议使用``
  $sql = 'SELECT * FROM `tableName`';
  $res = mysqli_query($link,$sql);
  // 2.2 只有查询语句需要解析,此处为解析成关联型数组
  $data = mysqli_fetch_all($res,MYSQLI_ASSOC) ;
  // 2.3 转成json格式
  $jsonStr = json_encode($data);
  echo $jsonStr;
  
  echo "+++++++++++++++++++++++++++++++++++++++++++++++";
  
  // 查询语句
  // 查询所有数据
  $sql = 'SELECT * FROM `tableName`';
  // 查询某几个字段
  $sql = 'SELECT `name`,`age` FROM `tableName`';
  // where查询条件
  $sql = 'SELECT * FROM `tableName` WHERE `age`>28';
	// and查询条件
	$sql = 'SELECT * FROM `tableName` WHERE `age`>28 AND `sorce`>90';
  // or查询条件
  $sql = 'SELECT * FROM `tableName` WHERE `age`>28 AND `age`<20';
	// limit分页查询(从索引0到10)
	$sql = 'SELECT * FROM `tableName` LIMIT 0,10';
  // order by排序(DESC升/ASC降)
  $sql = 'SELECT * FROM `tabelName` ORDER BY `sorce` DESC';
  // like %模糊查询(查询所有以王开头的名)
  $sql = "SELECT * FROM `tableName` WHERE `name`='王%'";
  // like _模糊查询(查询什么王什么)
  $sql = 'SELECT * FROM `tableName` WHERE `name`="_王_"';
  // count avg max min 聚合函数(统计数据;result为键别名)
  $sql = 'SELECT count(*) result FROM `tableName` '
    
  // 插入语句(顺序插入)
  $sql = 'INSERT INTO `tableName` VALUES(1025,'wtp',18)'
    
  // 删除语句
  $sql = 'DELETE FROM `tableName` WHERE `id`=1025'
    
  // 修改语句
  $sql = 'UPDATE `tableName` SET `gender`="女" WHERE `id`>100'
?>

4. 浏览器与php交互(简易登陆案例)

4.1 服务器文件夹内创建文件login.html

</ 表单提交时会项login.php发送数据(在地址栏) >
<form action="./login.php">
  <p>请输入用户名</p>
  <input type="text" name="username" autocomplete="off">
  <p>请输入密码</p>
  <input type="password" name="password" autocomplete="off">
  <hr>
  <button>登录</button>
</form>    

4.2 创建login.php

<?php
  header('content-type:text/html;charset=utf-8');

  // 接收前端信息
	// php有个天生的关联型数组叫做$_GET,所有地址栏带过来的参数都会存在这里
  $username = $_GET['username'];
  $password = $_GET['password'];
  
  $link = mysqli_connect('localhost','root','root','user');
  $sql = "SELECT count(*) c FROM `user_account` WHERE `username`='$username' AND `password`='$password'";
  $res = mysqli_query($link,$sql);

  $data = mysqli_fetch_all($res,MYSQLI_ASSOC);
  if($data[0]['c']){
    header('location:./home.html');
  }else{
    echo '用户名密码错误';
    echo '<button><a href="./login.html">重新登录</a></button>';
  }
?>

4. http传输协议

4.1 前后端交互的方式,规定前端以什么形式发送数据,后端以什么形式接收数据。


4.2 建立连接

  • 基于TCP/IP协议三次握手

  • 浏览器和服务器执行

  • 目的:为了保证通道连接

    三次握手:(12握手,23握手,34握手)

    ​ 1.前端和后端说:你在吗

    ​ 2.后端和前端说:我在

    ​ 此处表明后端知道前端正常发送,后端知道后段正常接受

    ​ 3.前端和后端说:好的我知道了

    ​ 此处表明前端知道后端正常接收,前端知道前端正常发送,前端知道前端正常接收,前端知道后端正常发送

    ​ 4.后端对前端说:你发送请求吧

    ​ 后端知道前端正常接收,后端知道后端正常发送


4.3 发送请求:前端发送给后端必须以 请求报文 形式发送

  • 请求行;

    请求方式:GET和POST的区别

    ​ 1.get携带参数方式地址栏直接拼接;post地址栏没有,在请求体里

    ​ 2.get数据携带数据无限但受限于浏览器(IE 2kb);post理论无限,但受服务器限制apache默认限制2mb

    ​ 3.get会被浏览器主动缓存;post不会

    ​ 4.get明文发送;post暗文发送,相对安全

    ​ 5.get只能发送url编码;post任意数据配套请求头

  • 请求头;

    cookie:浏览器端的存储空间

    ​ 1.域名下存储,换一个就不行了

    ​ 2.只能在文件夹及其子目录访问

    ​ 3.按照字符串存储(“a=1;n=2”)

    ​ 4.存储大小50条左右(4kb)

    ​ 5.默认会话级别的时效,可以手动关闭实现7天免登录

    ​ 6.前后端都可以操作

    ​ 7.如果有数据,发送请求时自动携带(cookie注入xss脚本攻击)

    cookie获取方式:

    // 查询返回字符串
    document.cookie
    // 设置:一次只能设置一条, ';'后可以书写对这条cookie的描述
    document.cookie = "key=value;expires=123456;path='./xxx'"
    

    php操作cookie:

    <?php
      // php自带关联型数组 $_COOKIE
      $x = $_COOKIE['x']
      // 设置cookie
      setcookie(key,value,exprires,path)
      // php 获取当前时间 单位秒
      time()
    ?>
    
  • 请求空行;

  • 请求体


4.4 接收响应:

​ 常见状态码:

​ 101 表示连接继续;200 通用成功;302 临时重定向;301 永久重定向;304 缓存(数据);403 访问权限不够;404 地址不存在;

​ 500 通用服务端错误;501 维护或者过载;


4.5 断开连接:基于TCP/IP协议的四次挥手(原理同三次握手)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值