PHP基础篇

数组处理函数
array_values(); 获得数组的值
array_keys(); 获得数组的键名
array_flip(); 数组中的值与键名互换
in_array(); 判断键值是否存在
array_search(); 根据键值获取键名
isset(); 判断键名是否存在数组中
array_unique(); 移除数组中重复的值
array_rand(); 从数组中随机取出一个或多个元素
array_merge(); 合并两个或多个数组
implode(); 数组转字符串

字符串处理函数
strstr(); 查找某字符串在另一个字符串中第一次出现,并返回字符串剩余部分
substr(); 返回字符串的一部分
str_replace(); 将一个字符串中的指定字符串替换为另一个指定字符串
strlen(); 获得字符串长度的函数
trim(); 去除字符串两边的空格
strrev(); 将字符串前后顺序颠倒
explode(); 字符串转数组

== 与 === 区别
==比较两个变量的值,不比较数据类型;
===比较两个变量的值和类型;

json与jsonp区别
json是一种轻量级的数据交换格式;
jsonp是一种非官方跨域数据交互协议;

isset 与 empty区别
isset判断是否设置,只有为null返回false。
empty判断值是否为空,当判断值为0、null、false都是返回true,当判断值为true返回false。

单引号 与 双引号区别
双引号会解释内部变量,单引号不会。

get 与 post区别
GET在浏览器回退时是无害的,而POST会再次提交请求;
GET请求只能进行url编码,而POST支持多种编码方式;
GET只接受ASCII字符的参数的数据类型,而POST没有限制;
GET参数通过URL传递,POST放在Request body中;
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息;

define() 与 const区别
define是一个函数,const是一种语言结构;
define可以使用表达式,const只能用普通的常量名称;
define可以通过第三个参数来指定是否大小写敏感(true不敏感、false敏感,默认为false),const定义的常量是大小写敏感的;
define能在条件语句中定义,const不可以;

include 和 require 的概要及区别
require 语句的性能与 include 相类似,都是包括并运行指定文件。不同之处在于:对 include 语句来说,在执行文件时每次都要进行读取和评估;而对于 require 来说,文件只处理一次(实际上,文件内容替换 require 语句)。

incluce 在用到时加载,require 在一开始就加载,_once 后缀表示已加载的不加载。
include 引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。
require 引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。

HTTP 与 HTTPS 的区别
1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

echo、print、pring_r、var_dump区别
echo 输出一个或多个字符串,中间以逗号隔开,没有返回值;
print 是php的一个关键字,有返回值,只能打印出简单类型变量的值(如int,string),如果字符串显示成功则返回true,否则返回false;
print_r 可以打印出复杂类型变量的值(如数组、对象)以列表的形式显示;
var_dump 判断一个变量的类型与长度,并输出变量的数值;

常见HTTP状态码
一二三四五原则:一 消息系列;二 成功系列;三 重定向系列;四 请求错误系列;五 服务器端错误系列。
302:临时转移成功,请求的内容已转移到新位置;403:禁止访问;500:服务器内部错误;401代表未授权。

PHP有哪些魔术方法
1、__construct() 构造方法,实例化类时自动执行
2、__destruct() 析构方法,销毁对象时自动执行
4、__call() 当调用不存在方法时自动执行
5、__clone() 克隆方法,在克隆对象时自动执行
6、__get()、__set()、__isset()、__unset() 属性重载

PHP超全局变量(预定义变量)
$_REQUEST 获取post或get方式提交的值
$_POST 获取post方式提交的值
$_GET 获取get方式提交的值
$_COOKIE 获取cookie存储的值
$_SESSION 获取session存储的值
$_FILE 获取上传文件表单的值

获取客服端IP 和 服务端IP
1.获取客户端ip:$_SERVER[‘REMOTE_ADDR’] 和 getenv(‘REMOTE_ADDR’)
2.获取服务器端ip:$_SERVER[‘SERVER_ADDR’] 和 getenv(‘SERVER_ADDR’)

异常处理
异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

<?php
try  {
     // 可能出现错误或异常的代码
     //catch 捕获  Exception是PHP已定义好的异常类
}  catch  (Exception  $e ) {
     // 对异常处理,方法:
     //1、自己处理
     //2、不处理,可以再次抛出 throw new Exception('xxx');
}
?>

如何开启PHP异常提示
方法一:
如果有修改php.ini的权限,则在php.ini中找到display_errors

display_errors=On #开启PHP错误提示
error_reporting=E_ALL #错误报告级别(E_ALL: 所有的错误和警告的级别)

方法二:
如果没有修改php.ini的权限,可以在php页面中增加如下代码

//开启PHP错误提示
ini_set("display_errors", "On");
//错误报告级别(E_ALL: 所有的错误和警告的级别)
error_reporting(E_ALL);

PSR是什么?PSR-0,1,2,3,4
PHP PSR是由PHP-FIG组织制定的PHP规范。
简单总结,方便记忆。04是自动加载的规范, 12是代码规范, 3是日志规范,后面的数字就是升级版。

session和cookie的区别是什么?session共享、存活时间
区别:
1、session保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗,cookie保存在浏览器端。
2、session比较安全,cookie用某些手段可以修改,不安全。
3、Session依赖于cookie进行传递,禁用cookie后,session不能正常使用。

session共享:当一个浏览器对应多个web服务时,服务端的session数据需要共享。
PHP集群中SESSION共享方案之Redis:修改PHP配置文件php.ini将session存储到Redis中。
打开php.ini,需要修改的有这两项:session.save_handler和session.save_path。

session.save_handler = Redis
session.save_path = “tcp://192.168.5.114:6379”
//Redis不需要密码验证
session.save_path = “tcp://192.168.5.114:6379?auth=password”
//Redis 需要密码验证

设置session存活时间:
1、php.ini 的设置:

session.gc_maxlifetime = 1440 #设置过期session时间,默认1440秒(24分钟)

2、手动设置session的生存期:

<?php
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>

禁用cookie后如何使用session还有session_id
如果用户禁止cookie,服务器仍会将sessionId以cookie的方式发送给浏览器,但是浏览器不再保存这个cookie(即sessionId)了,如果想继续使用session,可以使用url重写来实现sessionId的跟踪。
修改前:

<a href="xxx.php"></a>

修改后:

<a href="<%=response.encodeURL('xxx.php')%>"></a>

openid和unionid区别?
1、openid和unionid长度是不一样,openid=28,unionid=29。
2、openid用户在某一应用下的唯一标识(同一开放平台,小程序openid和公众号openid不一样),unionid用户在开放平台的唯一标识符。

PHP最简单获取网页源代码的方法

$fh = file_get_contents('http://www.baidu.com');
echo $fh;

PHP访问数据库

//1、连接数据库
$conn = mysql_connect('host','user','password') or die('数据库连接失败');
//2、选择数据库
mysql_select_db('database',$conn);
//3、设置从数据库提取数据的字符集
mysql_query('set names utf8');
//4、执行sql语句
$result = mysql_query('sql语句');
//5、处理结果集
//6、关闭结果集,释放资源
mysql_free_result($result);
//7、关闭数据库连接
mysql_close($conn);

跨域请求
方法一:
在php文件头部加入
header(“Access-Control-Allow-Origin: *”);
如果想设置只允许某个网站通过的话可以这样设置
header(“Access-Control-Allow-Origin: http://test.com”); // 允许test.com发起的跨域请求,其他的都不通过

方法2:
ajax请求,设置dataType:jsonp,只能是get。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值