文章目录

  • 基本语法
    • 标记
    • 注释
    • 变量
    • 输出
    • 条件/循环语句&函数
  • 表单处理
  • 文件上传
  • 数据库操作(以MySQL为例)
  • 编码&解码函数
  • 序列化&反序列化
  • 参考资料

基本语法

PHP(Personal home page Hypertext Preprocessor)是一种在服务器端执行的脚本语言,广泛应用于Web开发。

标记

脚本标记: <?php ?><script language='php'> </script>
语句结束标记:分号( ; )(ps.脚本最后一行不必使用)

注释

单行注释:#// 开头
多行注释:/* */

变量

必须以$开头,大小写敏感 (用户定义的函数/类+关键词 大小写不敏感)
可变变量(一个变量的变量名可由另一个变量来表示):

$hello = 'world';
$$hello = 'test';
echo $world; //输出'test'

输出

//echo:速度快,可输出多个字符串
echo "<h1>xxx<h1>"; //可输出HTML标记
echo "test","test1"."ok"; //用逗号分隔多个字符串,用点号连接多个字符串
echo $viarable, "a $viarable", "array {$arr[0]}" //输出变量的形式//print:只能输出单个字符串,返回值为1
print 'xxx'//print_r:输出变量值
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
print_r ($a); //按格式输出数组
$r = print_r($a); //返回结果给新变量

条件/循环语句&函数

条件语句和循环语句的语法格式同C语言,函数定义与调用的格式同Javascript。
特殊点:foreach循环(遍历数组)

$arr = array('test', 'exam', 'suspect');
foreach($arr as $value){ //仅输出元素值echo "$value <br>";
}
foreach($arr as $key => $value){ //同时输出元素下标及值echo "$key, $value <br>";
}

表单处理

超全局变量 $_GET 和 $_POST 用于收集表单数据。
前端表单显示页面代码编写如下:

<form action='php.php' method='post'> <!-- method可选用get -->
名字:<input type='text' name='name'><br>
学校:<input type='text' name='school'><br>
<input type='submit' value='提交'>
</form>

服务器端表单数据采集脚本代码编写如下:

<?php
echo "welcome {$_POST['name']}!", '<br>';
echo 'You university is ', $_POST['school']
?>

文件上传

超级全局变量数组 $_FILES用于从客户计算机向远程服务器上传的文件及其相关信息,具体包括(file为文件输入控件的name属性值):

  • $_FILES[“file”][“name”] - 被上传文件的名称
  • $_FILES[“file”][“type”] - 被上传文件的类型
  • $_FILES[“file”][“size”] - 被上传文件的大小(字节)
  • $_FILES[“file”][“tmp_name”] - 存储在服务器的文件的临时副本文件名
  • $_FILES[“file”][“error”] - 由文件上传导致的错误代码

前端表单显示页面代码编写如下:

<form action='php.php' method='post' enctype="multipart/form-data">
<!-- 设置表单使用二进制数据 -->
<input type='file' name='file' size=50 value='选择文件'><br>
<!-- 输入为文件类型 -->
<input type='submit' value='上传'>
</form>

服务器端接收上传文件脚本代码编写如下:

<?php
$upload_path = "uploads/" . $_FILES["file"]["name"]; //文件存储路径
if (file_exists($upload_path)) //该路径下文件是否已存在
{echo $_FILES["file"]["name"] . " already exists. ";
}
else
{move_uploaded_file($_FILES["file"]["tmp_name"], $upload_path); //将临时文件永久保存在指定路径下echo "Stored in: " . $upload_path;
}
?>

数据库操作(以MySQL为例)

使用PHP操作MySQL,主要通过安装mysql或mysqli扩展来实现(在php.ini中添加对应的extension即可)。mysql和mysqli提供的基本方法大致相同,但mysqli的执行速度更快,并且通过参数化查询方式可以防止SQL注入攻击。下面是通过mysqli提供的方法对MySQL进行操作的代码:

<?php
$con = mysqli_connect('localhost:3306', 'root', '', 'mysql'); { //连接数据库服务器,参数分别表示服务器、用户名、密码和默认数据库(代码中即为默认值)
if (mysqli_connect_errno($con)) { die(mysqli_connect_error());
}
mysqli_set_charset($con, 'utf-8'); //设置客户端默认字符集
$user = $_GET['user']; //待传入的查询参数属性// 常规查询
$sql = "select user,pwd from user where user = '$user'";
$rows = mysqli_query($con, $sql); //执行数据库查询操作
//$row = mysqli_fetch_row($rows); //处理仅返回单行数据的结果集
while($row = mysqli_fetch_assoc($rows)){ //遍历处理结果集中的多行数据echo $rows['user'].' '$rows['pwd'].'<br>';
}//参数化查询
$stmt=mysqli_stmt_init($con); //创建预处理语句
$sql = "select user,pwd from user where user = ?"
if (mysqli_stmt_prepare($stmt, $sql)){ //准备执行SQL语句mysqli_stmt_bind_param($rows, 's', $user); //绑定参数mysqli_stmt_execute($stmt); //执行SQL查询mysqli_stmt_bind_result($stmt, $user, $pwd); //绑定结果变量while(mysqli_stmt_fetch($stmt)){ //获取结果值echo $user.' '$pwd.'<br>';}mysqli_stmt_close($stmt); //关闭预处理语句
}mysqli_close(); //关闭数据库连接
?>

编码&解码函数

ord('abc') <=> chr(97) //字符串首字母与其ASCII值的转换
urlencode() <=> urldecode() //url中文、空格等与url可调用字串的转换
base64_encode() <=> base64_decode() //base64编码变换
htmlspecialchars() <=> htmlspecialchars_decode()
/* 特定字符与HTML源代码显示实体的转换:
& (和号)成为 &amp;
" (双引号)成为 &quot;
' (单引号)成为 '
< (小于)成为 &lt;
> (大于)成为 &gt; */
str_replace(find,replace,string,[count])
/*替换字符串或字符串数组各元素中的特定字符
find:用于替换的字符串
replace:待被替换的部分字符串
string:待操作字符串
count可对替换数计数
str_ireplace()可忽略大小写替换
*/
md5(string) //md5散列变换,md5_file(file)可对文件散列

序列化&反序列化

PHP序列化&反序列化方法示例

参考资料

1.菜鸟教程_PHP教程

【Web安全基础】PHP基础相关推荐

  1. Linux下Web服务器应用之基础简介

    Linux下Web服务器应用之基础简介 一.web服务器基本知识: WWW 是 World Wide Web 的缩写 URL:<协定>://<主机地址或主机名>[:port]/ ...

  2. 好程序员web前端分享HTML基础篇

    好程序员web前端分享HTML基础篇,最近遇到很多新手,都会问,如果要学web前端开发,需要学什么?难不难学啊?多久能入门之类的问题?那么今天好程序员就先来给大家分享一下web前端学习路线:HTML基 ...

  3. 一个Web开发的客户端基础技术测试Demo

    最近参加了一个Web开发的客户端基础技术测试,虽然对于做前台开发的程序员来说比较简单,但对于一直做后台代码编写的程序员想掌握前台开发的基础来说,应该是一个比较好的Demo.对于Web初学者来说,也是一 ...

  4. Web前端之JavaScript基础

    Web前端之JavaScript基础 JavaScript介绍 变量 变量类型 基本的数据类型Number String Boolean underfined null typeof运算符 引用的数据 ...

  5. web快速入门之基础篇-js:3_3、简易购物车

    目录 一.前言 二.js代码实例演示 1.简易购物车01_数量变化 (1)实例代码 (2)效果演示 2.简易购物车02_数量价格同步 (1)实例代码 (2)效果演示 一.前言 上一篇介绍了DHTML对 ...

  6. web 移动端开发基础

    web 移动端开发基础 文章目录 web 移动端开发基础 了解视口相关内容 meta 视口标签 掌握二倍图用法 物理像素 & 物理像素比 多倍图 二倍精灵图做法 了解移动端常见选择方案 掌握移 ...

  7. Java Web应用开发_04javaWeb基础

    Java Web应用开发_04javaWeb基础 4.1 XML节内小测 4.2HTTP协议 4.3 搭建开发环境 04javaWeb基础单元测验4 4.1 XML节内小测 1下列关于XML的描述中, ...

  8. 冲击红队第一天 - Web安全介绍与基础入门

    大家好! 我是小黄,很高兴又跟大家见面啦 ! 拒绝水文,从我做起 !!!! 未经允许,禁止转载 ,违者必究!!!! 本实验仅适用于学习和测试 ,严禁违法操作 ! ! ! 今天更新的是: 冲击红队第一天 ...

  9. web快速入门之基础篇-html:2、基本标签之标题标签、段落标签、换行标签

    目录 一.前言 二.简单实例介绍 实例代码 运行效果 三.要点说明 1.h1到h6 标题标签 2.p 段落标签 3.br 换行标签[单标记] 一.前言 上一篇文章我整理以前上学的笔记是初见 html ...

  10. WEB安全性测试测试用例(基础).doc

    原文地址为: WEB安全性测试测试用例(基础).doc 建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL注入.身份验证和授权错误. 1.输入验证 客户端验证服务器端验证(禁用脚本调试,禁用 ...

最新文章

  1. android-XML解析Dom,Sax,Pull
  2. python结束不退出_Python 基本功: 1. Hello world
  3. 【系统分析与设计】软件开发模式之敏捷开发(Scrum)分析
  4. 思科模拟器,计算机网络实验三之:静态路由配置
  5. CodeForces - 1328F Make k Equal(模拟)
  6. only 程序员的一个小总结
  7. Tensorflow动态seq2seq使用总结
  8. jvm中的native、方法区
  9. Ghostscript命令实践
  10. 批量下载网页上ts视频文件(撸sir!你还在为下载小电影而苦恼吗?)
  11. UVALive - 4987 (dp+贪心)
  12. 拓嘉启远:定制类的商品如何处理退款
  13. 思维方式-《金字塔原理》书中的精髓:如何利用金字塔原理,逻辑清晰地思考问题、表达观点。
  14. python 爬手机号_python手机号前7位归属地爬虫代码实例
  15. 工业通讯领域的总线、协议、规范、接口、数据采集与控制系统
  16. Android手机中使用Termux安装ubuntu系统
  17. 菜鸟程序员试用期必备法则
  18. 为资产分类定义折旧范围_FI-AA配置逻辑
  19. cocos creator麻将教程系列(七)—— 达达麻将打包与发布
  20. 即时消息IM系统设计

热门文章

  1. python将txt转为字符串_Python玩转《生僻字》
  2. Android气泡弹幕,Android弹幕实现:基于B站弹幕开源系统(7)QQ、微信聊天气泡样式的弹幕...
  3. Cannot render error page for request [/list.html] and exception [An error happened during template p
  4. user_agreement
  5. CF 305B Continued Fractions
  6. 输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。
  7. 基于GEE与哨兵1号影像数据提取水体
  8. 位与,位或,异或,取反
  9. 区块链蕴含的变革力量
  10. 网吧服务器掉硬盘,网吧服务器磁盘压力大的解决过程