史上最全爆肝整理PHP入门笔记(总结分享)
简介
PHP
本篇文章给大家带来了PHP入门笔记,其中记录的知识点非常详细,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,希望大家能够从中感受到PHP的魅力,希望对大家有帮助。 简介 PHP (超文本预处理器)原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。自20世纪90年代国内互联网开始发展到现在,互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中必不可少的一部分。据统计,从2003 年开始,我国的网页规模基本保持了翻番的增长速度,并且呈上升趋势。PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。但随着互联网的不断更新换代,PHP语言也出现了不少问题。 根据动态网站要求,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,其技术水平的优劣与否将直接影响网站的运行效率。其特点是具有公开的源代码, 在程序设计上与通用型语言,如C语言相似性较高,因此在操作过程中简单易懂,可操作性强。同时,PHP语言具有较高的数据传送处理水平和输出水平,可以广泛应用在Windows系统及各类Web服务器中。如果数据量较大,PHP语言还可以拓宽链接面,与各种数据库相连,缓解数据存储、检索及维护压力。随着技术的发展,PHP 语言搜索引擎还可以量体裁衣,实行个性化服务,如根据客户的喜好进行分类收集储存,极大提高了数据运行效率。 主要特点 (一)开源性和免费性 由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP 运行环境的使用也是免费的。 (二)快捷性 PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。 (三)数据库连接的广泛性 PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。 (四)面向过程和面向对象并用 在PHP语言的使用中,可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言做不到的。 优点 (一)流行,容易上手 PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。 (二)开发职位很多 在服务器端的网站编程中PHP会更容易帮助你找到工作。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。 (三)仍然在不断发展 PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。版本是7之后,一直在提供更高性能的应用。 (四)可植入性强 PHP 语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快。 (五)拓展性强 PHP 语言在数据库应用过程中,可以从数据库调取各类数据,执行效率高。 缺点 (一)PHP的解释运行机制 在 PHP 中php实例教程,所有的变量都是页面级的,无论是全局变量, 还是类的静态成员,都会在页面执行完毕后被清空。 (二)设计缺陷,缺少关注PHP被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入。没有一个明确的设计哲学。早期的PHP受到Perl的影响,带有out参数的标准库又是有C语言引入,面向对象的部分又是从 C++和Java学来的。 (三)对递归的不良支持 PHP并不擅长递归。它能容忍的递归函数的数量限制和其他语言比起来明显少。 PHP 语法注释: //......单行注释 #...... 单行注释 /*..........*/ 多行注释 变量: $array=NAME; 变量名必须以字母或者下划线开始,不能用数字开头,中间不能有空格! 大小写敏感! $x=5; $X=7; 输出为不同结果 <?php $a = 1; $A = 2; echo $a . " 登录后复制 局部变量 <?php $a=1; //全局变量 function test() { //声明一个函数,名字为 test $a=15; //函数内的变量,为局部变量 echo "内部输出结果:".$a; } test(); echo " 登录后复制 <?php $a=1; function test() { //声明一个函数,名字为 test global $a; //在函数内声明并引用外部变量,注意这里是小写 global echo $a; echo " 登录后复制 <?php $a=10; $b=20; $c=30; function test() { $a=100; $GLOBALS['a']=$GLOBALS['b']+$GLOBALS['c']; //引用全局变量,这里的 GLOBALS 必须大写 echo $a." 登录后复制 <?php function test() { static $a = 0; //静态作用域,保留变量值 echo $a . ""; $a++; } test();//不使用static的话,每次输出都是 0 echo " 登录后复制 parameter 参数作用域 <?php $a = 10; $b = 20; function test() { $a = 30; $b = 40; $c = $a + $b; echo "函数内运算值:".$c; echo " 登录后复制 echo 和 print 的区别: echo "123","456","789";//能够连续输出多个字符串 print "123","456"; //输出错误 换行符: echo " "; echo "\n"; echo PHP_EOL; //换行符 返回变量类型: var_dump <?php $a = "1111"; $b = 123; $c = null; echo var_dump($a) . " 登录后复制 <?php $text1="ni hao"; $text2="hahaha"; echo $text1." ".$text2." 登录后复制 强引用和弱引用 <?php $text1 = "ni hao"; echo "$text1" . " 登录后复制 自增自减输出 <?php $x = 10; echo ++$x;//先自增后输出 echo " 登录后复制 if 条件判断 <?php $x = 10; $y = 20; if ($x > $y) {//判断 x 和 y 的大小,如果满足 $x > $y 就输出 true echo "true"; }else if($x==$y) {//else if 如果上面的判断不满足,再次判断 $x==$y 是否相等 ,如果满足就输出 $x."等于"$y; echo $x."等于"$y; } else {//如果上面的判断都不满足就输出 false echo "false"; } ?> 登录后复制 <?php $x= (3>4)? "true":"false";//三元运算符 echo $x; ?> 登录后复制 switch 判断 <?php $a="abc"; switch ($a) { case 'red': echo "red"; break; //跳出整个循环体,continue跳出本次循环体,继续执行后面的循环体。 case 'green': echo "green"; break; case 'black': echo "black"; break; default: echo "not color"; } ?> 登录后复制 数组 <?php $cars = array("BMW", "BinLi", "大众"); echo "I like " . "$cars[0]", " ", "$cars[1]", " ", "$cars[2]"; ?> 登录后复制 <?php $cars = array(); $cars[0] = "BMW"; $cars[1] = "BINlix"; $cars[2] = "大众"; echo "I like " . "$cars[0]", " ", "$cars[1]", " ", "$cars[2]"; ?> 登录后复制 ";// count 返回数组长度 echo "I like " . "$cars[0]", " ", "$cars[1]", " ", "$cars[2]"; ?> 登录后复制 count 获取数组的长度 var_dump() 返还数据类型 strlen(); 返回字符串长度 array(); 创建数组 $arrayname=array('name' =>"icq",'age'=>20,'gender'=>true); //关联型数组 echo $arrayname["name"]; $arrayName=array('1',"zhangsan",20,false,"beijingchangping");//数字型数组 echo $arrayName[3]; //布尔型 true 打印显示1 for 循环 遍历数组: <?php $cars = array("BMW", "BinLi", "大众"); $arrlength = count($cars); for ($x = 0; $x < $arrlength; $x++) { echo $cars[$x] . " 登录后复制 <?php $cars = array("BMW", "BinLi", "大众"); $arrlength = count($cars); print_r($cars);//数据类型,下标值,值都打印出来 ?> 登录后复制 关联数组: <?php $age = array("gao" => "30", "li" => "20", "zhang" => "10"); echo "gao is " . " " . $age['gao'] . " " . " years old."; ?> 登录后复制 关联数组2: <?php $age = array(); $age["sun"] = ["20"]; $age["liu"] = ["30"]; $age["zhang"] = ["40"]; print_r($age); ?> 登录后复制 多维数组 <?php $cars = array( array("111", 100, 50), array("222", 200, 100), array("333", 300, 150), ); echo $cars[1][0]; ?> 登录后复制 <?php $age = array(); $age["sun"] = ["20"]; $age["liu"] = ["30"]; $age["zhang"] = ["40"]; // print_r($age); foreach ($age as $key => $value) { echo "name is " . $key . " old " . $value . " 登录后复制 排序: <?php $cars = array("Blinli", "wzida", "muling"); $x = sort($cars); echo $x; print_r($cars); ?> 登录后复制 <?php $cars = array("Blinli", "wzida", "muling"); $x = rsort($cars); echo $x; print_r($cars); ?> 登录后复制 $GLOBALS — 引用全局作用域中可用的全部变量 <?php $x = 10; $y = 29; function add() { // global $x, $y; // $z = $x + $y; // echo $z; $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; echo $GLOBALS['z']; } add(); ?> 登录后复制 PHP $_REQUEST 用于收集 HTML 表单提交的数据 <?php echo "提交的内容: " . @$_POST["name"] . @$_POST["password"] . "" ?> //在PHP中通过打印函数引入我们的HTML+CSS+JS 登录后复制 PHP 连接MYSQL数据库 1、mysql PHP 2、mysqlimysql的扩展,mysql的升级版,安全性高,只能用于操作mysql数据库 一、面向对象的方法 NEW 二、面向过程的使用方法 3、PDOPHP DATA OBJECT 目前支持链接数据库类型12种,安全性高,基于面向对象的使用方式。 if (!$conn) { die("连接失败".mysqli_connect_error());/* mysqli_connect_error()该函数保存了连接数据库的错误信息 */ } /*create table students( uid int(15) not null auto_increment, name varchar(50) not null, gender char(2), message text, primary key(uid) )*/ $sql="select * from users where id=1 "; // mysqli_query($conn,$sql);执行成功返回true $query_result=mysqli_query($conn,$sql); if ($query_result) { /*如果执行成功就会执行如下的代码*/ $result_numbers=mysqli_num_rows($query_result);/*查询出数据库中记录条数,具体的数据没出来*/ if ($result_numbers>0) { $all_result=mysqli_fetch_all($query_result); /*mysqli_fetch_assoc将查询的结果转换为关联型数组*/ //mysqli_fetch_array()关联型和数字型 //mysqli_fetch_all()数字型 //var_dump($all_result); //$all_result它是一个mysqli_fetch_all处理之后的数据,该数据是一个数组,数组的长度取决于sql的执行 //如果结果是一个记录,则$all_result的长度是1 //如果结果是二个记录,则$all_result的长度是2 //$all_result保存的内容也是数组,需要遍历显示数据内容 foreach ($all_result as $key => $value) { foreach ($value as $key => $value) { echo $value."\n"; } } } else{ echo "没数据!"; } } else{ echo "查询失败".mysqli_error($conn); /* mysqli_error($conn)保存了执行SQL语句的错误信息 */ } mysqli_close($conn); ?>登录后复制 解决乱码: echo ""; //指定字符集 或者: header("Content-Type:text/html;charset=utf-8"); PHP 集合 HTML <?php // echo ""; //指定字符集 header("Content-Type:text/html;charset=utf-8"); echo ''; $name = @$_POST['name']; //$_POST 对应 form method="POST" $pwd = @$_POST['pwd']; //接收数据 if ($name != "" && $pwd != "") { //判断当前提交的数据是否为空,不为空的情况下执行下面的代码 echo "UserName is : " . $name . " "; echo "PassWord is : " . $pwd; } ?> 登录后复制 (isset($name) && isset($pwd)) isset 检测变量是否设置,不为NULL 如果检测的对象是""(空),返回值是 1 false var_dump 判断数据类型 PHP 常量 使用 define(变量的KEY(最好大写),变量的value,true/false,) define("UNMBER","this is a hacker");//不能用 $ 数字 开头 <?php define("UNMBER", "this is a hacker", true); //定义常量 echo UNMBER . " 登录后复制 <?php //结合函数使用 define("UNMBER", "this is a hacker", true); //定义常量 echo UNMBER . " 登录后复制 <?php $string="1234"; echo strlen($string); //计算字符串长度 echo $string[0]; //以下标方式取值 ?> 登录后复制 反转: <?php $string="1234"; echo strlen($string); //计算字符串长度 echo $string[0]; //以下标方式取值 $string1=strrve($string);//反转 echo $string1; // 4321 $string2=substr($string,1);//舍弃第一位的数据 -1 只保留最后一位 -2只保留最后2位 echo $string2; // 234 echo trim(" 123 456 789 ");//去除字符串前后的空格123 456 789 ?> 登录后复制 cmd-->php~\php -r "phpinfo();" php~\php -f ".php文件,可以拖拽到CMD窗口" $str1 = "123"; echo $str1 .= "456"; PHP 表单 HTML style 选择器: .error{} p{} #ID {} echo htmlspecialchars(""); //实体化代码输出,忽略代码本身输出内容 echo stripcslashes("i\\m abc"); //删除转义符 trim 去除左右两端的空格 echo trim(" 123 "); preg_match( /匹配的表达式/(要用正则表达式),被匹配的字符串),返回值是 int (0|1) bool 匹配上,返回 1 false 否则为 true 0 echo preg_match("/php/", "you know the php is bester language"); !preg_match 取反 Delimiter must not be alphanumeric or backslash in 分隔符不能是字母数字和 反斜线 。 span 组合行内元素 class 文件包含:引入某些文件,去使用该文件的内容。 方式有4种: 1、include "文件路径/文件名"; 如果引入文件错误,会报警告Warning,后续代码依旧会执行。 2、include_once "文件"; 用法同 include 基本一致,只需包含一次,后续可一直使用。 3、require "文件"; 包含文件时,如果找不到,会报错ERROR,后续的代码均无法执行。 4、require_once "文件"; 用法同require一致,只需包含一次,后续可一直使用。 支持目录跳转,可以使用相对路径 ../../..file 或者绝对路径 copy 1.png/b+1.txt/a 2.png a 表示是ASCII格式 b 表示该文件是二进制文件 把文本文件加装到图片文件中。 文件包含,引入某些文件,去使用该文件中内容,在PHP中文件包含的函数有4个: (1)include "文件" /include("文件") 包含文件时,如果找不到被包含的文件会警告,后续的代码依旧知道 (2)include_once "文件" 用法和include用法基本一致,包含文件只需要一次即可,后续可以一直使用 (3)require "文件" 包含文件时,如果找不到会报致命错误,其后续的代码均不执行 (4)require_once "文件" 用法和require用法一致,包含文件时只需要包含一次即可 被包含过来的文件中,如果按照PHP的标准语法来写代码,那么就会执行该代码;如果不是PHP语法写的文件,就会读取出来 copy 1.png/b+1.txt/a 2.png a 表示该文件是ASCII文本格式 b 表示该文件是二进制文件 php会话管理 会话:服务器和用户之间传输数据的方式或者途径,在通道传输数据之前需要建立通道。在客户端通过cookie来管理会话,在服务器通过session来管理会话。 cookie和session的比较: 1、cookie是存放在用户的浏览器中,是服务端通返回包中set-cookie来设置,cookie表示用户的浏览器和服务器之间会话状态,登录成功之后方可获取cookie数据,该数据一般具有时效性,失效之后需要用户重新去登录。有了cookie数据之后,用户的每次请求有会带上cookie,服务端会验证该cookie的合法性和时效性,cookie的发送需要遵循浏览器的同源策略; 2、 Session是存放在服务端,表示用户和服务器时间的会话状态,session和cookie是一一对应的,服务器也需要记住哪个用户登录该站点,一般情况下,session以文件的形式保存在/tmp目录中,形式为:sess_XXXXX(例: sess_nti62h7rrrnb5udpvfbad13cg5s9kqrm),此刻服务器给浏览器分配的cookie是: nti62h7rrrnb5udpvfbad13cg5s9kqrm,只要该cookie的值被修改过,那么服务器就要求用户重新登录。 查看 cookie 的方式: 1、在当前登录过的页面的URL中输入,javascript:alert(document.cookie) 2、在console中输入:alert(document.cookie) 或者 docunment.cookie 3、在浏览器自带的网络管理工具中。 setcookie("key","123"); 要写在HTML代码之前。 setcookie("name","456",time()+5); echo $_COOKIE["name"]." "; setcookie("name","value",time()-3600);//删除cookie print_r($_COOKIE); $_SEESION["id"]=1; $_SEESION["demo"]=true; unset($_SEESION["id"]);//删除seesion中的某个值 session_destroy();//清除所有 SEESION 值 session_start();//开启SESSION web developer 插件 fopen(打开文件的方式,,,): $file=fopen("test.txt","a+"); fread($file,1024); feof(); 检测是否到达文件末尾 fclose($NAME); 关闭 进程 fopen(打开文件的方式,,,): r 只读 r+ 读和写 w 写方式打开,如果文件不存在则创建文件 a 追加内容 a+ 读和追加,如果文件不存在则创建文件 $file=fopen("test.txt","a+"); 读取文件 fread($file,1024); //读取文件 feof(); 检测是否到达文件末尾 fgets($file);//读取文件 while (!feof($file)) { //判断是否到达末尾 echo fgets($file)." ";//每次只读取一行 } while (!feof($file)) { //判断是否到达末尾 echo fgetc($file)." ";//每次只读取一行 } unlink(); 删除文件 fclose($NAME); 关闭 进程 fputs(); echo file_get_contents("123.txt"); 读取文件 fputs(fopen("1.php","w"),""); echo file_get_contents("1.php"); 站长工具 $str="PD9waHAgcGhwaW5mbygpOz8+"; $shell=base64_decode($str); fputs(fopen("ceshi.php", "w"),$shell); 使用 base64_encode 加密 base64_decode 解密 fputs(fopen("ceshi.php", "w"),base64_decode("PD9waHAgJGV2YWw9KCRfUE9TVFsnayddKTs/Pg==")); file 换行 \n 大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |