前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10个 ThinkPHP 开发常用代码片段

10个 ThinkPHP 开发常用代码片段

作者头像
php007
发布2019-11-18 20:26:22
7550
发布2019-11-18 20:26:22
举报
文章被收录于专栏:PHP专享栏

在编写代码的时候有个神奇的汇总是好的!下面这里收集了 10+ PHP 代码片段,可以帮助你开发 PHP 项目。这些 PHP 片段对于 PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧~

一.php中截取中文字符串

<?php < ?php//截取中文字符串function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr;}?>

2. 截取utf8编码的多字节字符串
代码语言:javascript
复制
<?php
< ?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                       '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
                       '$1',$str);
}
?>

二.php curl通过代理获取数据

$curl=curl_init();

curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com/");

curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0');

curl_setopt($curl, CURLOPT_REFERER, 'http://www.guahao.com/');

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param));

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, true);

curl_setopt($curl, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);

curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

curl_setopt($curl, CURLOPT_PROXY, "180.186.11.121");

curl_setopt($curl, CURLOPT_PROXYPORT, "37211");

curl_setopt($curl, CURLOPT_PROXYUSERPWD, "taras:taras-ss5");

$result=curl_exec($curl);

三.php获取中文字符串的首字符拼音字母

$str="这是一个测试程序1";

echo getFirstCharCode($str);

function getFirstCharCode($str){

$str= iconv("UTF-8","gb2312", $str);

$targetChar='*';

$i=0;

while($i<strlen($str) ) {

$tmp=bin2hex(substr($str,$i,1));

if($tmp>='B0'){ //汉字的开始

$t=getLetter(hexdec(bin2hex(substr($str,$i,2))));

$targetChar=$t==-1 ? '*' : $t ;

//printf("%c",$t==-1 ? '*' : $t );

break;

//$i+=2;

}

else{

$targetChar=substr($str,$i,1);

break;

//printf("%s",substr($str,$i,1));

//$i++;

}

}

if(is_numeric($targetChar)){

return chr($targetChar);

}

else{

return $targetChar;

}

}

四.PHP使用curl伪造IP地址和header信息

curl虽然功能强大,但是只能伪造$_SERVER["HTTP_X_FORWARDED_FOR"],对于大多数IP地址检测程序来说,$_SERVER["REMOTE_ADDR"]很难被伪造:首先是client.php的代码

然后是server.php

五.sphinx 增量索引实现实例

六.curl 添加cookie伪造登陆抓取数据

<?php

header("Content-type:text/html;Charset=utf8");

$ch =curl_init();

curl_setopt($ch,CURLOPT_URL,'http://www.babytree.com/user/picjournal.php');

$header = array();

//curl_setopt($ch,CURLOPT_POST,true);

//curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

curl_setopt($ch,CURLOPT_HEADER,true);

curl_setopt($ch,CURLOPT_HTTPHEADER,$header);

curl_setopt($ch,CURLOPT_COOKIE,'B=115.100.62.7.1401937092035530; bdshare_firstime=1401937092199; __myutma=122328856.1548793539.1401937093.1408503164.1408694138.69;');

$content = curl_exec($ch);

echo "<pre>";print_r(curl_error($ch));echo "</pre>";

echo "<pre>";print_r(curl_getinfo($ch));echo "</pre>";

echo "<pre>";print_r($header);echo "</pre>";

echo "</br>",$content;

七.php curl 上传文件

//如果php文件是utf8编码,系统是GBK编码,那么就需要转下编码,要不然Php在系统中找不到这个文件

$file = realpath(mb_convert_encoding('测试图片.JPG','GBK','utf8'));

$file = realpath('temp.jpg'); //要上传的文件

$fields['f'] = '@'.$file; // 前面加@符表示上传图片

$ch =curl_init();

curl_setopt($ch,CURLOPT_URL,'http://localhost/upload.php');

curl_setopt($ch,CURLOPT_POST,true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

$content = curl_exec($ch);

echo $content;

八.php+shell检测文件类型

function checkFileType($filename){

//文件头

$_typecode = array(

'3780',//PDF

'8075',//.docx,.xlsx,.pptx,.potx,.vsdx,.odt

'208207',//.doc,.xls,.ppt,.vsd,.pot,.wps,.dps,.et

);

$file = fopen($filename, "rb");

//contents = stream_get_contents($file);

//$contents = fread($file, filesize($filename));

$bin = fread($file, 2); //只读2字节

fclose($file);

$strInfo = @unpack("C2chars", $bin);// C为无符号整数,网上搜到的都是c,为有符号整数,这样会产生负数判断不正常

$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);

exec("file $filename",$output,$return_var);//用linux系统命令file判断上传文件的类型,主要是判断txt,rtf文件类型

$pattern = '/text,/';//rtf和txt文档用file检测都会被检测为text

$_count = preg_match($pattern,strrchr($output[0],":"));

echo $typeCode;

if(in_array($typeCode,$_typecode) || $_count == 1) {

return true;

}else{

return false;

}

}

九.获取用户真实的IP

function getRealIpAddr()

{

if (!emptyempty($_SERVER['HTTP_CLIENT_IP']))

{

$ip=$_SERVER['HTTP_CLIENT_IP'];

}

elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))

//to check ip is pass from proxy

{

$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];

}

else

{

$ip=$_SERVER['REMOTE_ADDR'];

}

return $ip;

}

十.禁止特定的IP访问你的网站

if ( !file_exists('blocked_ips.txt') ) {

$deny_ips = array(

'127.0.0.1',

'192.168.1.1',

'83.76.27.9',

'192.168.1.163'

);

} else {

$deny_ips = file('blocked_ips.txt');

}

// read user ip adress:

$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';

// search current IP in $deny_ips array

if ( (array_search($ip, $deny_ips))!== FALSE ) {

// address is blocked:

echo 'Your IP adress ('.$ip.') was blocked!';

exit;

}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 风帆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 截取utf8编码的多字节字符串
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档