离线
威望:0 个 魂币:98888 个 热心:13692 点 我的勋章
|
PHP Access-Control-Allow-Origin跨域设置多个域名
- $origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';
- $allowOrigin = array(
- 'https://www.baidu.com/',
- 'https://www.google.com/'
- );
- if (in_array($origin, $allowOrigin)) {
- header("Access-Control-Allow-Origin:".$origin);
- }
复制代码
Chevereto图床API调用的两种方法
测试可以用方法一,方法二才是最佳的选择,示例中的图床有效性自行测试。
#方法一:
- <script async src="//at9.cc/sdk/pup.js" data-url="https://at9.cc/upload" data-auto-insert="markdown-embed-full" data-palette="clear"></script>
复制代码
优点:引用JS后会自动在textarea标记显示上传按钮,简单直接,但是默认按钮排版不甚美观,可以使用以下自定义按钮解决。
缺点:点击按钮会跳出上传页面,多一个步骤且不是太美观。
优化:自定义按钮
- <button class="btn btn-default pull-right" style="margin-right: 5px;outline:none;" data-chevereto-pup-trigger data-chevereto-pup-id ='#newpost' data-target="#newpost"><i class="fa fa-picture-o"></i> 插入图片</button>
- <style>
- .btn-default {
- color: #333;
- background-color: #fff;
- border-color: #ccc;
- }
- .btn-default:hover {
- color: #333;
- background-color: #d4d4d4;
- border-color: #8c8c8c;
- }
- .btn {
- display: inline-block;
- padding: 6px 12px;
- margin-bottom: 0;
- font-size: 14px;
- font-weight: 400;
- line-height: 1.42857143;
- text-align: center;
- white-space: nowrap;
- vertical-align: middle;
- -ms-touch-action: manipulation;
- touch-action: manipulation;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- background-image: none;
- border: 1px solid transparent;
- border-radius: 4px;
- }
- .btn:active {
- background-image: none;
- outline: 0;
- -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow: inset 0 3px 5px rgba(0,0,0,.125);
- }
- </style>
复制代码
#方法二(推荐):
- <script src="https://cdn.staticfile.org/jquery/2.1.4/jquery.min.js"></script>
- <input id="up_to_chevereto" type="file" accept="image/*" multiple="multiple"/>
- <label for="up_to_chevereto" id="up_img_label"><i class="fa fa-picture-o" aria-hidden="true"></i>上传图片</label>
- <p id="up_tips"></p>
- <style type="text/css">
- #up_to_chevereto {
- display: none;
- }
- #up_img_label {
- color: #fff;
- background-color: #16a085;
- border-radius: 5px;
- display: inline-block;
- padding: 5.2px;
- }
- </style>
- <script type="text/javascript">
- $('#up_to_chevereto').change(function() {
- var result = '';
- for (var i = 0; i < this.files.length; i++) {
- var f=this.files[i];
- var formData=new FormData();
- formData.append('source',f);
- $.ajax({
- async:true,
- crossDomain:true,
- url:'https://at9.cc/api/1/upload/?key=19298e656196b40c8b6e87a3ac589f2c&format=json',
- type : 'POST',
- processData : false,
- contentType : false,
- data:formData,
- beforeSend: function (xhr) {
- $('#up_img_label').html('<i class="fa fa-spinner rotating" aria-hidden="true"></i> Uploading...');
- },
- success:function(res){
- //console.log(res);
- result = res;
- console.log(result);
- //alert(result);
- $("#up_tips").html('<a href='+res.image.url+'><img src='+res.image.url+' alt='+res.image.title+'></img></a>');
- $("#up_img_label").html('<i class="fa fa-check" aria-hidden="true"></i> 上传成功,继续上传');
- },
- error: function (){
- $("#up_img_label").html('<i class="fa fa-times" aria-hidden="true"></i> 上传失败,重新上传');
- }
- });
- }
- });
- </script>
复制代码
PHP判断文件夹是否存在,不存在自动创建
在生成或保存文件时我们经常会遇到文件夹不存在时报错的情况,使用以下方法即可解决
#判断文件夹是否存在,没有则新建
- //判断文件夹是否存在,没有则新建
- function path_exists($path){
- if (!function_exists($path)) {
- mkdirs($path);
- }
- }
复制代码
#创建文件夹
- //创建文件夹
- function mkdirs($dir, $mode = 0777)
- {
- if (is_dir($dir) || @mkdir($dir, $mode)) {
- return true;
- }
- if (!mkdirs(dirname($dir), $mode)) {
- return false;
- }
- return @mkdir($dir, $mode);
- }
复制代码
#使用方法:
- path_exists("Upload/user/images/");
复制代码
PHP 对接七牛的图片鉴黄、暴恐识别、政治敏感、广告图片识别API的简单例子
- <?php
- $ak = "这里填写你的 Access Key";
- $sk = "这里填写你的 Secret Key";
- function curl($url, $header = null, $data = null) {
- if($header) {
- $header = array_map(function ($k, $v) {
- return "{$k}: {$v}";
- }, array_keys($header), $header);
- }
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_HEADER, 0);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
- if($data) {
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, is_array($data) ? http_build_query($data) : $data);
- }
- $result = curl_exec($curl);
- return $result;
- }
- function ScanImage($img) {
- global $ak, $sk;
- $request_data = json_encode(Array(
- 'data' => Array(
- 'uri' => $img
- ),
- 'params' => Array(
- 'scenes' => Array(
- 'pulp', // 图片鉴黄
- 'terror', // 暴恐识别
- 'politician', // 政治敏感
- 'ads' // 政治敏感
- )
- )
- ));
- $sign_rawdata = "POST /v3/image/censor\nHost: ai.qiniuapi.com\nContent-Type: application/json\n\n{$request_data}";
- $header = Array(
- 'Content-Type' => 'application/json',
- 'Authorization' => "Qiniu {$ak}:" . str_replace("+", "-", base64_encode(hash_hmac('sha1', $sign_rawdata, $sk, true)))
- );
- return curl("http://ai.qiniuapi.com/v3/image/censor", $header, $request_data);
- }
- $data = ScanImage("你想要识别的图片地址"); // 此处是图片地址
- $data = json_decode($data, true);
- print_r($data); // 输出返回的信息
复制代码
用于识别广告图片,对于需要监控广告的场景很合适。七牛的价格也不贵,一百张图片 0.085 元。点此注册
PHP加入一言功能
- function GetHitokoto(){
- $url = 'https://v1.hitokoto.cn/?encode=json'; // 不限定内容类型
- // $url = https://v1.hitokoto.cn/?encode=json&c=d'; // 限定内容类型
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查 SSL 加密算法是否存在
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_TIMEOUT, 6);
- $response = curl_exec($ch);
- if($error=curl_error($ch)){
- return '欢迎来到轮回阁'; // 如果 6s 内,一言 API 调用失败则输出这个默认句子~
- }
- curl_close($ch);
- $array_data = json_decode($response,true);
- $Emu_content = $array_data['hitokoto'].'----《'.$array_data['from'].'》'; // 输出格式:经典语句----《语句出处》
- return $Emu_content;
- }
复制代码
调用时使用:
- <?php echo GetHitokoto(); ?>
复制代码
非激活标签时JS动态修改网站图标以及标题
- <!-- 图标标题变化 -->
- <script>
- const changeFavicon = link => {
- let $favicon = document.querySelector('link[rel="icon"]');
- if ($favicon !== null) {
- $favicon.href = link;
- } else {
- $favicon = document.createElement("link");
- $favicon.rel = "icon";
- $favicon.href = link;
- document.head.appendChild($favicon);
- }
- };
-
- window.onfocus = function () {
- let icon = "favicon.ico"; // 图片地址
- changeFavicon(icon); // 动态修改网站图标
- document.title = "轮回阁"; // 动态修改网站标题
- };
- window.onblur = function () {
- let icon = "https://www.baidu.com/favicon.ico"; // 图片地址
- changeFavicon(icon); // 动态修改网站图标
- document.title = "百度一下,你就知道"; // 动态修改网站标题
- };
- </script>
- <!-- 图标标题变化End -->
复制代码
适合于上班摸鱼或网页游戏挂机时间伪装使用。
原生JS实现ajax发送post请求并获取返回信息
- <script>
- var oStr = '';
- var postData = {};
- var oAjax = null;
- //post提交的数据
- postData = {"name1":"value1","name2":"value2"};
- //这里需要将json数据转成post能够进行提交的字符串 name1=value1&name2=value2格式
- postData = (function(value){
- for(var key in value){
- oStr += key+"="+value[key]+"&";
- };
- return oStr;
- }(postData));
- //这里进行HTTP请求
- try{
- oAjax = new XMLHttpRequest();
- }catch(e){
- oAjax = new ActiveXObject("Microsoft.XMLHTTP");
- };
- //post方式打开文件
- oAjax.open('post','1.php?='+Math.random(),true);
- //post相比get方式提交多了个这个
- oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
- //post发送数据
- oAjax.send(postData);
- oAjax.onreadystatechange = function(){
- //当状态为4的时候,执行以下操作
- if(oAjax.readyState == 4){
- try{
- alert(oAjax.responseText);
- }catch(e){
- alert('你访问的页面出错了');
- };
- };
- };
- </script>
复制代码
JS根椐不同的省份跳转到不同的页面
- <script type="text/javascript" src="https://ip.ws.126.net/ipquery"></script><!--网易IP库-->
- <script>
- var province=localAddress.province;
- if(province.indexOf('广东省') != -1 || province.indexOf('山东省') != -1)){
- window.location.href = '自定义跳转地址';
- }
- </script>
复制代码
JS现10秒倒计时
- <div class="box">
- <h2>剩余时间:<span class="clock">10</span>秒</h2>
- </div>
- <script>
- var t = 10;
- var time = document.getElementsByClassName("clock")[0];
-
- function fun() {
- t--;
- time.innerHTML = t;
- if(t <= 0) {
- // location.href = "https://www.baidu.com";
- clearInterval(inter);
- }
- }
- var inter = setInterval("fun()", 1000);
- </script>
复制代码
PHP图片转换二进制数
- $image = "1.jpg"; //图片地址
- $fp = fopen($image, 'rb');
- $content = fread($fp, filesize($image)); //二进制数据
复制代码
列出某指定目录下所有目录名,并将指定的文件复制到目录名下
- function list_directory_content($dir){
- if(is_dir($dir)){
- if($handle = opendir($dir)){
- while(($file = readdir($handle)) !== false){
- if($file != '.' && $file != '..' && $file != '.htaccess'){
- //echo '目录名:<a target="_blank" href="https://www.chenbo.info/u/'.$file.'/">'.$file.'</a>,路径:'.$dir.'/'.$file.'<br>'."\n";
- $oldfile='/www/wwwroot/www.chenbo.info/oldfile.php'; //旧目录
- $newfile = $dir.'/'.$file.'/newfile.php'; //新目录
- $copyresult = copy($oldfile,$newfile); //拷贝到新目录
- $newfilesize = filesize($newfile);
- if($copyresult || $oldfilesize = $newfilesize){
- echo '路径:'.$dir.'/'.$file.'/,目录'.$file.'更新成功!<br>'."\n";
- }
-
- }
- }
- closedir($handle);
- }
- }
- }
复制代码
PHP获取referer判断来路防止非法访问
- $fromurl = $_SERVER['HTTP_REFERER'];
- $refererUrl = parse_url($fromurl);
- $host = $refererUrl['host'];
- if(!isset($fromurl) || $host !="www.chenbo.info") {
- header("location: /"); //如果没有来路,或者来路不是本站,跳转到首页。
- exit;
- }
复制代码
构造参数采用 file_get_contents 函数以POST方式获取数据并返回结果
- ///构造提交POST
- $data = array(
- 'test'=>'bar',
- 'baz'=>'boom',
- 'site'=>'www.chenbo.info',
- 'name'=>'chenbo');
-
- $data = http_build_query($data);
-
- $options = array(
- 'http' => array(
- 'method' => 'POST',
- 'header' => 'Content-type:application/x-www-form-urlencoded',
- 'content' => $data,
- 'timeout' => 60 // 超时时间(单位:s)
- )
- );
-
- $url = "http://www.chenbo.info/test.php";
- $context = stream_context_create($options);
- $result = file_get_contents($url, false, $context);
复制代码
PHP随机图片API本地图片版,页面直接输出图片
- <?php
- $img_array = glob('images/*.{gif,jpg,png,jpeg,webp,bmp}', GLOB_BRACE);
- if(count($img_array) == 0) die('没找到图片文件。请先上传一些图片到 '.dirname(__FILE__).'/images/ 文件夹');
- header('Content-Type: image/png');
- echo(file_get_contents($img_array[array_rand($img_array)]));
- ?>
复制代码
将图片保存到images目录下,自动读取images图片并输出
PHP随机图片API远程图片版,页面直接输出图片
- <?php
- $imgku=file('pic.txt');
- showImg($imgku[array_rand($imgku)]);
-
- /*
- * php 页面直接输出图片
- */
- function showImg($img){
- $img = trim($img);
- $info = getimagesize($img);
- $imgExt = image_type_to_extension($info[2], false); //获取文件后缀
- $fun = "imagecreatefrom{$imgExt}";
- $imgInfo = $fun($img); //1.由文件或 URL 创建一个新图象。如:imagecreatefrompng ( string $filename )
- //$mime = $info['mime'];
- $mime = image_type_to_mime_type(exif_imagetype($img)); //获取图片的 MIME 类型
- header('Content-Type:'.$mime);
- $quality = 100;
- if($imgExt == 'png') $quality = 9; //输出质量,JPEG格式(0-100),PNG格式(0-9)
- $getImgInfo = "image{$imgExt}";
- $getImgInfo($imgInfo, null, $quality); //2.将图像输出到浏览器或文件。如: imagepng ( resource $image )
- imagedestroy($imgInfo);
- }
- ?>
复制代码 需安装GD库及exif扩展,php.ini中开启allow_url_fopen函数,读取同目录下pic.txt文件中的图片网址,每行一个图片地址。
COOKIE限制时间再次提交
- if(isset($_COOKIE['submission_time'])) {
- $submissionTime = $_COOKIE['submission_time'];
- $currentTime = time();
- $timePassed = ($currentTime - $submissionTime ) / 60 * 60;
-
- if($timePassed < 24 ) {
- echo "<div class='alert alert-warning'>You can record the sales after 24 hours! Please wait..</div>";
- die();
- }
- }else {
- $cookieName = 'submission_time';
- $cokkieValue = time();
- setcookie($cookieName, $cokkieValue, time() + (+60*60*24*30 ), "/");
- }
复制代码
判断字符串是否含有某分割符,若包含分割符,分割后输出全部分割后的值
- if(strpos($qcont,',') === false){
- echo "不包含,分割字段";
- }else{
- echo "包含,分割字段,下面进行切割并输出";
- $qcontArr = explode(",", $qcont);
- $qcontcount = count($qcontArr);
- for ($i = 0; $i < $qcontcount; $i++) {
- if ($qcontArr[$i] == "") {
- continue;
- }
- echo $qcontArr[$i];
- }
- }
复制代码
对错误的详情进行格式化输出,记入log文件。
- function slog($logs){
- $toppath="log.htm";
- $Ts=fopen($toppath,"a+");
- fputs($Ts,$logs."\r\n");
- fclose($Ts);
- }
复制代码
使用file_get_contents() 发送GET、POST请求
#1、【GET请求】
- $data = array( 'name'=>'zhezhao','age'=>'23');
- $query = http_build_query($data);
- $url = 'http://localhost/get.php';//这里一定要写完整的服务页面地址,否则php程序不会运行
- $result = file_get_contents($url.'?'.$query);
复制代码
#2、【POST请求】
- $data = array('user'=>'jiaxiaozi','passwd'=>'123456');
- $requestBody = http_build_query($data);
- $context = stream_context_create(['http' => ['method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded\r\n"."Content-Length: " . mb_strlen($requestBody), 'content' => $requestBody]]);
- $response = file_get_contents('http://server.test.net/login', false, $context);
复制代码
PHP获取当天是几号、周几
- echo date('y').'</br>'; //当前年份
- echo date('m').'</br>'; //当前月份
- echo date('d').'</br>'; //当前日
- echo date('s').'</br>'; //当前秒
- echo date('w').'</br>'; //当前周几
复制代码
打印结果显示为:
20
07
24
50
5
PHP给第三方接口POST或GET方式传输数据并得到返回值
- function Post($url, $post = null)
- {
- $context = array();
- if (is_array($post))
- {
- ksort($post);
- $context['http'] = array
- (
- 'timeout'=>60,
- 'method' => 'POST',
- 'content' => http_build_query($post, '', '&'),
- );
- }
- return file_get_contents($url, false, stream_context_create($context));
- }
-
- $data = array
- (
- 'name' => 'test',
- 'email' => 'test@gmail.com',
- 'submit' => 'submit',
- );
-
- echo Post('http://www.baidu.com', $data);
复制代码
同一页面24小时之内之只能执行一次
- define('TIME_OUT', 86400); //定义重复操作最短的允许时间,单位秒
- @session_start();
- $time = time();
- if( isset($_SESSION['time']) ){
- if( $time - $_SESSION['time'] <= TIME_OUT ){
- echo '<script type=text/javascript>alert("在24小时内只能执行一次!");</script>';
- exit();
- }
- }
- $_SESSION['time'] = $time;
- echo "正常执行!";
复制代码
PHP连接远程MSSQL函数:
已在如上环境安装后测试通过!
- function mssql_user($username){
- $host="远程服务器IP,MSSQL端口";
- $dbname="数据库名称";
- $user="数据库用户名";
- $pass="数据库密码";
- try {
- $dbh = new PDO("sqlsrv:Server=$host;Database=$dbname", $user, $pass);
- } catch(PDOException $e) {
- echo $e->getMessage();
- exit;
- }
- $stmt = $dbh->prepare("SELECT XXX FROM XXX WHERE XXX = ".$username);
- $stmt->execute();
- while ($row = $stmt->fetch()) {
- echo $row[0];//多个查询结果输出
- //return $row[0]; 单一的结果可以直接用return
- }
- unset($dbh); unset($stmt);
- }
复制代码 配置的sqlsrv扩展安装教程:https://www.rr6w.com/thread-1540-1-1.html
PHP时间戳和日期相互转换
获取当前日期时间的时间戳
获取当前日期时间
- echo date("Y/m/d H:i:s");
复制代码
日期转换为时间戳
- echo strtotime(date("Y/m/d"));
复制代码
时间戳转换为日期
- echo date('Y-m-d',time());
复制代码
打印明天此时的时间戳
- echo strtotime("+1 day");
复制代码
当前时间:
- echo date("Y-m-d H:i:s",time()) ;
复制代码
指定时间:
- echo date("Y-m-d H:i:s",strtotime("+1 day")) ;
复制代码
下个星期此时的时间戳
- echo strtotime("+1 week");
复制代码
指定下星期几的PHP时间戳
- echo strtotime("next Thursday");
复制代码
指定下星期几的时间:
- echo date("Y-m-d H:i:s",strtotime("next Thursday"));
复制代码
指定上星期几的时间戳
- echo strtotime("last Thursday");
复制代码
指定本年的最后一个星期几的时间:
- echo date("Y-m-d H:i:s",strtotime("last Thursday"));
复制代码
截取指定两个字符之间的字符串
#方法一
- function cut($begin,$end,$str){
- $b = mb_strpos($str,$begin) + mb_strlen($begin);
- $e = mb_strpos($str,$end) - $b;
- return mb_substr($str,$b,$e);
- }
复制代码
#方法二
- function get_between($input, $start, $end) {
- $substr = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1));
- return $substr;
- }
复制代码
方法一当截取的是值为串的时候,会出现截取不到的情况用方法二尝试。
#方法三:preg_match_all函数
- preg_match_all('/<Epoch>(.*)<\/Epoch>/', $result, $matches);
- //print_r($matches);
- $resultapp = $matches[1][1];
复制代码 方法一及方法二在截取长段字符串时,碰到过无法截取到的情况,用方法三解决。
调用SOHU API获取IP地址
- //通过API获取IP地址
- function getIP(){
- $str = file_get_contents('https://pv.sohu.com/cityjson?ie=utf-8');
- $ip = cut('cip": "','", "cid',$str);
- if($ip){
- return $ip;
- }
- }
复制代码 注:需配合上面 截取指定两个字符之间的字符串 函数一起使用
获取访问客户端的IP地址
- function get_client_ip(){
- static $realip;
- if (isset($_SERVER)){
- if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
- $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
- } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
- $realip = $_SERVER["HTTP_CLIENT_IP"];
- } else {
- $realip = $_SERVER["REMOTE_ADDR"];
- }
- } else {
- if (getenv("HTTP_X_FORWARDED_FOR")){
- $realip = getenv("HTTP_X_FORWARDED_FOR");
- } else if (getenv("HTTP_CLIENT_IP")) {
- $realip = getenv("HTTP_CLIENT_IP");
- } else {
- $realip = getenv("REMOTE_ADDR");
- }
- }
- return $realip;
- }
复制代码
|
|