![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PHP基础
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
美奇开发工作室
后端开发工程师,做一个喜欢分享技术的领域开发者!
展开
-
PHP解决模拟from表单get跳转时,浏览器提示不安全问题
【代码】PHP解决模拟from表单get跳转时,浏览器提示不安全问题。原创 2023-07-06 22:59:48 · 780 阅读 · 0 评论 -
PHP获取访问浏览器的唯一标识useragent,判断是不是oppo内置浏览器
最近遇到一个问题,我的网站域名被oppo内置浏览器给拦截了,我提交申请一两个月了,都没有工作人员处理,可见oppo浏览器非常的不称职,建议大家不要用。14、今日头条app内置浏览器的useragent:NewsArticle、TTWebView。18、搜狗手机app内置浏览器 SogouMobileBrowser。17、OPPO手机内置浏览器 HeyTapBrowser。22、手机百度app内置浏览器 baiduboxapp。20、小米手机内置浏览器 MiuiBrowser。1、获取useragent。原创 2022-11-07 08:55:44 · 4546 阅读 · 0 评论 -
PHP解决json数组字符串多出下标的问题
比如我有这么一组复选框,我想把选中的对象以数组形式记录到数据库里。这就不对了,写入的并不是标准json格式的数组。转为json前,先使用。原创 2022-10-09 19:17:27 · 626 阅读 · 0 评论 -
PHP使用php-screw-plus扩展进行加解密
1、上传到宝塔面板的wwwroot目录里,然后解压,把php-screw-plus-master文件夹名改为php-screw-plus;说明:虽然作者已经停止更新,但还是可以用的,相比sg11而已,这个是免费的,一般小白是破解不了的,反正我不懂怎么破解。在tools目录,执行./screw [路径] ,[路径]可以是单个文件也可以是文件夹,然后就可以实现加密了。2、我安装的是PHP7.1,所以上面的指令里是71,如果你安装其他版本,就改为其他的;和加密是差不多的, 在加密指令的后面,加-d参数则是解密。原创 2022-09-06 18:38:30 · 1835 阅读 · 1 评论 -
js和PHP通用的DES加解密算法
为什么要在前端使用DES加解密呢,如果从数据安全角度考虑,确实没必要在前端进行加解密操作,容易暴露算法,但如果从数据传递的特殊需求来讲,是有必要的。比如我服务器的宝塔控制面板使用了Nginx防火墙,我的form表单提交参数里有"insert into"之类的数据库SQL语句关键词,那么我网站表单提交的get或者post请求就会被防火墙误拦截。......原创 2022-08-06 13:11:24 · 1255 阅读 · 0 评论 -
PHP检测url网址链接是否正常可访问
在一些场景中,需要通过访问URL网址链接实现http请求,如果网址链接不通(比如服务器关闭了),那么http请求就会出现阻塞,PHP是单线程的,一旦长时间没反应,就会给用户非常不好的体验。因此,好的解决方法是先检测网址是否能正常连接。......原创 2022-07-26 11:22:01 · 2574 阅读 · 0 评论 -
PHP等于==和恒等于===的区别
中等式(==),在Thinkphp的模板里用eq表示恒等式(===),在Thinkphp的模板里用heq表示。原创 2022-07-25 14:04:59 · 393 阅读 · 0 评论 -
PHP使用curl模拟浏览器访问
/** * get请求 * @param $url */function curl_get($url,$gzip=false,$firefox=false) { if($firefox) { //火狐浏览器 $useragent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0'; } else { //谷歌浏览器 $useragent = 'Mozilla/5.0 .原创 2022-04-27 15:47:46 · 3080 阅读 · 0 评论 -
PHP输出(打印)日志到txt文本
/** * 打印日志 * $msg 日志内容 */function printLog($msg) { if (!is_dir('log')){ mkdir('log',0777,true); } $path="log/".date('Y-m-d').".log"; file_put_contents($path, "【" . date('Y-m-d H:i:s') . "】" . $msg . "\r\n\r\n", FILE_APPEND);}...原创 2022-02-19 14:50:51 · 1484 阅读 · 0 评论 -
PHP5.3以下版本转换json,支持中文转码
$arr=array('code'=>1,'msg'=>'今天是2022年2.17');if(version_compare(PHP_VERSION,'5.4.0','<')){ $str = json_encode($arr); $str = preg_replace_callback("#\\\u([0-9a-f]{4})#i",function($matchs){ return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs.原创 2022-02-17 18:26:30 · 294 阅读 · 0 评论 -
PHP如何实现类似于Thinkphp的File文件缓存技术
导读:PHP开发中,频率的去mysql数据库查询,会导致网站性能下降,因此我们需要配合使用缓存技术,来提高动态Web应用的速度、 提高可扩展性。说到缓存,大家首先想到的可能是 Redis或者Memcached等高性能的分布式内存缓存服务器。但对于一些开放性比较强的项目,我们不希望使用redis等第三方缓存,使得系统依赖于其他服务。这时候,文件缓存会是一个不错的选择。文件缓存的功能:能够在较短的时间内返回数据; 支持key过期;文件缓存的技术点:为了避免一个文件内的数据过大,造成读取文件的原创 2022-01-15 15:35:01 · 840 阅读 · 0 评论 -
PHP检查网址链接,如果没有http://或者https://开头,就添加上去
/** * 检查网址链接 * @param $link 链接 * @return 如果没有http://或者https://开头,就添加上去 */function checkLink($link){ if (preg_match('|^https*://|', $link) === 0) { $link = 'http://' . $link; } return $link;}...原创 2021-12-12 15:26:53 · 581 阅读 · 0 评论 -
宝塔Linux系统下,PHP使用include_once报错failed to open stream: No such file or directory
遇到问题:在window环境下是正常的,但在Linux系统下,使用include_once引入就报错,如下:错误分析:failed to open stream: No such file or directory的意思就是找不到目录,我们去看一下有没有这个目录,经过细心查看,发现目录是存在的,但却是大写开头的,而我们调用时,写的是小写。真正原因:Linux环境下运行php加载文件对大小写敏感,所以在写法命名和加载的必须要一致。解决方法:把调用的文件夹目录名改成和真...原创 2021-11-21 17:01:24 · 3784 阅读 · 0 评论 -
PHP禁止外网访问本站接口(防跨域防盗链)
为什么网站要防跨域防盗链?随着前后端分离技术的兴起,很多手机端网站、小程序、APP访问后台数据都是调用API接口,很多接口都是内部使用的,而不是对外开放,如果没有做好防护措施,你家的接口很可能被其他人盗用,接口被盗用的的话,一方面会增加系统的负担,另一方面是数据被黑客利用,对企业造成一定的损失。本文着重介绍两种php防跨域防盗链的方法,供大家参考!一、禁止非本站域名访问<?php$refer = $_SERVER['HTTP_REFERER']; if($refer){原创 2021-07-04 14:42:19 · 1596 阅读 · 4 评论 -
PHP对接支付宝当面付详细教程
导读:作为一名小站长(个人开发者),网站需要接入支付功能,才能实现网站的变现盈利,一般有以下几个方案:1、支付宝和微信官方支付接口:基本都需要企业资格才能开通,审核也比较严。2、第三方支付平台:口碑比较好的第三方门槛高,不容易申请,手续费比较高。3、第四方聚合支付:和第三方支付平台差不多,容易申请,但可靠性低,容易跑路,费率也比较高。4、个人免签约系统:使用个人的支付宝或微信收款码,然后安卓监听APP收款通知,实现收款。本质上是采用挂机监听的策略,但针对的是移动端支付宝或微信的收款通知消原创 2021-02-24 14:08:29 · 15719 阅读 · 5 评论 -
PHP批量添加或更新mysql数据表插件
批量添加或更新有规则的mysql数据表,如果是手动在数据库里修改,或者网站后台修改,会非常的繁琐,使用插件就非常的方便快捷!原创 2021-06-09 11:10:02 · 1032 阅读 · 0 评论 -
PHP分页查询
1、创建Page.php类,代码如下:<?php/** * 分页模板类 */class Page { private $cur_page; //当前页 private $total; //总条数 private $page_size = 10; //每页显示的条数 private $total_page; //总页数 private $first_page; //首页显示名称 private $pre_page; //上一页的显示名称 private $ne..原创 2021-05-05 15:29:29 · 648 阅读 · 1 评论 -
PHP实现类似Thinkphp的success或error提示信息
先给大家看一下效果图:第一步、在网站根目录创建保存模板文件的template目录文件夹,分别创建success.html和error.html两个文件success.html的代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://ww.原创 2021-04-27 14:20:18 · 497 阅读 · 0 评论 -
PHP使用socket套接字收发数据
/* socket收发数据 * @host(string) socket服务器IP * @post(int) 端口 * @str(string) 要发送的数据 * @back(boole) socket端是否有数据返回 * 返回true|false|服务端数据 */function sendSocketMsg($host,$port,$msg,$back=false){ try{ $socket = @socket_create(AF_INET,SOCK_STREA.原创 2021-04-19 14:17:29 · 449 阅读 · 0 评论 -
PHP兼容C#和java的DES端对端加密方式
php<?phpini_set("error_reporting","E_ALL & ~E_NOTICE");header('Content-Type:application/json; charset=utf-8');$input="123456"; //要加密的字符串$deskey='QDHPJKOS';//算法密钥 $des = new Des();$encode=$des->encrypt($input,$deskey);echo "DES加密结果:".原创 2021-04-18 11:57:27 · 398 阅读 · 0 评论 -
PHP中文汉字转换成拼音
一、封装成一个单独的类,PinYin.php<?php/** * Title:拼音转换类 * User: 安阳 QQ:15577969 * Date: 2021/4/15 * Time: 12:00 */class PinYin{ private $dict_list = array( 'a' => -20319, 'ai' => -20317, 'an' => -20304, 'ang' => -20295, 'ao' =>原创 2021-04-15 12:53:52 · 705 阅读 · 0 评论 -
PHP判断字符串是不是合法的json
社会哥,人狠话不多,直接上代码:<?php$arr=[ 'code'=>1, 'msg'=> '我是一个数组'];$json=json_encode($arr);$falg=is_json($json);if($falg){ echo '是json';}else{ echo '不是json';}function is_json($string) { if (is_string($string)) { @json_decode(.原创 2021-04-10 20:46:09 · 312 阅读 · 0 评论 -
PHP发送Post数据请求,并返回状态码和协议请求头
方式一:curl/* * curl发送post请求 * url 请求地址 * postData 要传递的post数据 * refcode 是否返回请求码 * refheader 是否返回请求头信息 * */function curl_post($url, $postData, $refcode = false, $refheader = false) { $curl = curl_init(); //设置提交的url curl_setopt($c原创 2021-04-10 19:56:46 · 2281 阅读 · 0 评论 -
PHP计算手续费的简单算法
<?php$min_fee=0.01;//最低交易手续费$money=0.1;//订单金额$rate=97;//结算费率$ratio = 1-((float)$rate/100);//手续费率$fee = round($money*$ratio,2);//手续费//手续费低于最低交易手续费时,以最低交易手续费为准$fee = $fee < round($min_fee,2) ? $min_fee : $fee;$realMoney = round($money-$fee,2);.原创 2021-04-09 12:51:45 · 501 阅读 · 0 评论 -
PHP导出txt文件的方法
方法一:<?php//文件名$filename = "白名单".date('Y-m-d', time()).".txt";header("Content-type:application/octet-stream");header("Accept-Ranges:bytes");header("Content-Disposition:attachment; filename=" . $filename);header("Expires:0");header("Cache-Cont原创 2021-03-28 15:39:55 · 3066 阅读 · 1 评论 -
PHP使用封装的curl解决跨域问题,爬虫无视任何限制
一、封装了一个curl_http.php类,代码如下:<?php/** * Curl HTTP客户端 * 使用例子: * $curl = &new Curl_HTTP_Client(); * $useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; * $curl->set_user_agent($useragent); * $curl->store_cookies("/tmp/coo原创 2020-11-05 12:46:19 · 2010 阅读 · 0 评论 -
PHP的三目运算符、switch和if else写法
导读:在开发项目过程中,当需要使用条件运算符时,小白首选if else或者switch,而大佬一般都是首先考虑使用三目运算符,因为三目运算符只要一行代码就可以搞定,代码块看起来也比较常清爽。switch的写法:switch ((int)$type) { case 1: $typeName = '支付宝'; break; case 2: $typeName = 'QQ钱包'; break; case 3: $typeName = '微信支付'; break;}原创 2021-02-27 11:21:57 · 384 阅读 · 0 评论 -
PHP解决json_encode转换数组为json字符串时返回空白问题
遇到问题:当我们在项目开发中使用json_encode($res)转换数组为json字符串,但返回的结果却是空白的,这个时候应该怎么办呢?解决方法:1、查找错误原因,可以使用PHP自带的两个方法来检查错误json_last_error()这个函数会返回当前json_encode的错误原因,返回的是数字,需要对应看下具体是哪个错误。错误码 代号 描述 0 JSON_ERROR_NONE 没有错误发生 1 JSON_ERROR_...原创 2021-02-24 10:35:04 · 1036 阅读 · 0 评论 -
php使用file_get_contents(‘php://input‘)和$_POST的区别
本文学习目的:为什么和第三方平台对接接口的时候,在接收http请求数据包时,一般都是用file_get_contents("php://input"),而不是用$_POST?file_get_contents:将整个文件读入一个字符串在用php写接口的时候,通常会将请求的数据通过json的形式发送到指定的请求地址处,此时的file_get_contents(‘php://input’)主要是用来获取请求的原始数据。和 $HTTP_RAW_POST_DATA 比起来,php://input给内存带原创 2021-02-22 13:12:42 · 1209 阅读 · 2 评论 -
PHP解决json_decode解析json字符串失败问题
json_decode要求的字符串比较严格:使用UTF-8编码 不能在最后元素有逗号 不能使用单引号 不能有\r,\t,如果有请替换遇到问题:某些编辑器在返回json字符串时,会默认加上BOM头,如此一来就会导致解析失败。解决方案://解决返回的json字符串中返回了BOM头的不可见字符(某些编辑器默认会加上BOM头)$result = trim($result,chr(239).chr(187).chr(191));//解析json成数组$array=json_dec.原创 2021-02-12 12:57:49 · 807 阅读 · 0 评论 -
PHP使用new StdClass()创建空对象
导读:在开发过程中,PHP程序员们会将一些参数配置项之类的信息放在数组中使用,但是数组操作起来并不是很方便,很多时候使用对象操作符->xxx比数组操作符['xxx']要方便很多,于是就需要创建一个空的对象,来将需要的属性名和属性值存储到对象中,然而PHP中并没有Javascript里面var object = {};这样的语法,所以我们需要另外的方式来创建。PHP创建空对象有3种方法:方法一:写一个空类<?php //创建一个空类 class Pay { } ..原创 2021-02-01 21:40:42 · 679 阅读 · 0 评论 -
PHP解决curl获取http请求时,返回的内容出现中文乱码问题
在使用php的curl获取远程html文本时出现了中文乱码,百度很多教程都是用下面这行代码:$str = mb_convert_encoding($str, 'utf-8','GB2312');但这行有一个弊端,如果返回的是utf-8编码而不是GB2312,那么原先本来应该正常的内容,就变成了乱码,所以需要完善如下://转换字符编码$str = mb_convert_encoding($str, 'utf-8','UTF-8,GBK,GB2312,BIG5');...原创 2021-01-18 11:16:25 · 1410 阅读 · 0 评论 -
PHP使用curl发送post请求,并返回请求头信息
可以返回请求头信息,以及请求状态码,效果图如下:方法函数:/* * curl发送post请求,并返回请求头信息 * url:访问路径 * postData:要传递的post数据 * refheader:是否返回请求头信息 * */ protected function curl_post_header($url,$postData,$refheader=false) { $curl = curl_init(); //设..原创 2021-01-17 11:53:47 · 1466 阅读 · 0 评论 -
PHP模拟表单提交(建立跳转请求表单)
代码:<?php /** * 建立跳转请求表单 * @param string $url 数据提交跳转到的URL * @param array $data 请求参数数组 * @param string $method 提交方式:post或get 默认post * @return string 提交表单的HTML文本 */ function buildRequestForm($url, $data, $method = 'post') { $sHtml =.原创 2021-01-13 16:54:40 · 748 阅读 · 0 评论 -
PHP随机生成18位不重复的订单号
PHP代码:/** * 生成18位订单号 * $length:随机数长度 */function generateOrderNumber($length=4){ //14位的日期(年月日时分秒) $date=trim(date('Ymdhis ',time())); //初始化变量为0 $connt = 0; //建一个新数组 $temp = array(); while($connt < $length){ //在一定范围内随机生成一个数放入数组中 $temp[].原创 2021-01-11 13:10:00 · 604 阅读 · 0 评论 -
PHP发送post请求的两种方式
第一种方式:curl /* * curl发送post请求 * url:访问路径 * array:要传递的数组 * */ protected function curl_post($url,$array){ $curl = curl_init(); //设置提交的url curl_setopt($curl, CURLOPT_URL, $url); //设置头文件的信息作为数据流输出 curl_set原创 2020-12-17 13:14:14 · 976 阅读 · 0 评论 -
PHP将URL参数数组按照ASCII码字典序排序,然后使用URL键值对的格式拼接成字符串
<?php /* 1.将数组内非空参数值的参数按照参数名从小到大排序(ASCII码字典序) * 2.然后使URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串 */ function ASCII($params = array()){ //ksort()对数组按照键名进行升序排序 ksort($params); $str = ''; foreach ($params as $k=>$val){ $str .= $k.原创 2020-12-09 15:03:52 · 3090 阅读 · 0 评论 -
php的curl携带header请求头信息实现http访问
实现代码:<?php/** * 开始访问请求 * @param $url * @return bool|string */function fetch_url($url) { $header = FormatHeader($url); $useragent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0'; $timeout= 120; $ch = curl_i.原创 2020-12-08 23:45:21 · 4769 阅读 · 9 评论 -
PHP生成缩略图
封装的方法函数:<?php /** * 生成缩略图 * $imgSrc 图片源路径 * $resize_width 缩略图宽度 * $resize_height 缩略图高度 * $thumbSrc 缩略图路径 * $isCut 是否剪切图片 */ function createThumbImg($imgSrc, $resize_width, $resize_.原创 2020-11-03 10:44:55 · 340 阅读 · 0 评论 -
PHP上传目录禁止执行php文件的方法
导读:禁止上传目录运行php等可执行文件,可以从一定程度上增加网站的安全性。 禁止上传目录运行php的方法一共有下面三种。需要防范的PHP文件有三种类型:第一种类型. 正常php文件 a.php第二种类型. php扩展名有大小写 a.pHp a.PHP a.Php第三种类型. 双重扩展名文件 a.php.a a.php.xml说明:通常只考虑防范第一种,渗透攻击常使用第二种和第三种。【同时防范三种...原创 2020-10-10 16:39:55 · 1995 阅读 · 0 评论