分类 PHP 下的文章

大夏天的,凉快一下! <?php /** ----------------------------------

  • wx域名检测

  • Time:2020-5-15 -------------------------------------- **/

    header('Content-type: text/json;charset=utf-8'); if(empty($_REQUEST['url'])){ exit('{"code":0,"msg":"参数不正确"}'); } $api = get_headers('http://mp.weixinbridge.com/mp/wapredirect?url='.$_REQUEST['url']);

    if($api1 !== 'Location: '.$_REQUEST['url'].''){ $value = array('code'=>202,'msg'=>'域名被封'); }else{ $value = array('code'=>200,'msg'=>'域名正常'); } echo json_encode($value,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE); ?>

培训计划-1024x930.jpeg

执行命令后加 & 符号,缺点客户端关了,也会停止执行

后台执行:php cli.php admin/index &

显示到前台用命令:fg

又让在后台执行命令:Ctrl+z

nohup 命令 & , 客户端关了,后台还会在执行

后台执行:nohup php cli.php admin/index &

返回json数据:

header('Content-Type:application/json; charset=utf-8');

$arr = array('a'=>1,'b'=>2);

exit(json_encode($arr));

返回xml数据:

header('Content-Type:text/xml; charset=utf-8');

exit($xml);

返回jsonp数据:

$arr = array('a'=>1, 'b'=>2, 'c'=>3);

$json = json_encode($arr);

$callback = $_GET['callback'];

exit($callback."($json)");

//注意callback是js传过来的参数名称

thinkphp如何返回各种数据:

$this->ajaxReturn (json_encode($arr),'JSON');

$this->ajaxReturn (json_encode($arr),'JSONP');

$this->ajaxReturn (json_encode($arr),'XML');

json_encode有个参数禁止unicode编码

JSON_UNESCAPED_UNICODE

json_encode('中文',JSON_UNESCAPED_UNICODE);

0a314bcf9f7fe83bd71ed488cc8e2a70.jpg 1、使用负数 start

$rest = substr(“abcdef”, -1); // 返回 “f”
$rest = substr(“abcdef”, -2); // 返回 “ef”
$rest = substr(“abcdef”, -3, 1); // 返回 “d”

2、使用负数 length

$rest = substr(“abcdef”, 0, -1); // 返回 “abcde”
$rest = substr(“abcdef”, 2, -1); // 返回 “cde”
$rest = substr(“abcdef”, 4, -4); // 返回 “”
$rest = substr(“abcdef”, -3, -1); // 返回 “de”

3、参数错误时返回 false

echo “1) “.var_export(substr(“pear”, 0, 2), true).PHP_EOL;
echo “2) “.var_export(substr(54321, 0, 2), true).PHP_EOL;
echo “3) “.var_export(substr(new apple(), 0, 2), true).PHP_EOL;
echo “4) “.var_export(substr(true, 0, 1), true).PHP_EOL;
echo “5) “.var_export(substr(false, 0, 1), true).PHP_EOL;
echo “6) “.var_export(substr(“”, 0, 1), true).PHP_EOL;
echo “7) “.var_export(substr(1.2e3, 0, 4), true).PHP_EOL;


1、

    function getIP()

{

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;

}


2、

function get_real_ip()


{


    $ip=FALSE;


    //客户端IP 或 NONE 


    if(!empty($_SERVER["HTTP_CLIENT_IP"])){


        $ip = $_SERVER["HTTP_CLIENT_IP"];


    }


    //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空


    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {


        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);


        if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }


        for ($i = 0; $i < count($ips); $i++) {


            if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {


                $ip = $ips[$i];


                break;


            }


        }


    }


    //客户端IP 或 (最后一个)代理服务器 IP 


    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);


}


需要抖音快手火山点赞系统任务系统加QQ66790363


<?php   
 //php 不同系统的换行  
//不同系统之间换行的实现是不一样的  
//linux 与unix中用 \n  
//MAC 用 \r  
//window 为了体现与linux不同 则是 \r\n  
//所以在不同平台上 实现方法就不一样  
//php 有三种方法来解决  

//1、使用str_replace 来替换换行  
$str = str_replace(array("\r\n", "\r", "\n"), "", $str);   

//2、使用正则替换  
$str = preg_replace('//s*/', '', $str);  

//3、使用php定义好的变量 (建议使用)  
$str = str_replace(PHP_EOL, '', $str);   
?>  

APP_PATH // 当前项目目录

APP_NAME // 当前项目名称 

ACTION_NAME // 当前操作名称 

CACHE_PATH // 项目模版缓存目录 

CONFIG_PATH //项目配置文件目录 

COMMON_PATH  //项目公共文件目录 

DATA_PATH  // 项目数据文件目录 

GROUP_PATH //当前分组名称 

HTML_PATH//项目静态文件目录 

IS_APACHE // 是否属于 

Apache IS_CGI  //是否是CGI模式 

IS_IIS //是否属于 IIS 

IS_WIN //是否属于Windows 环境 

IS_LINUX //是否属于 Linux 环境 

IS_FREEBSD //是否属于 FreeBsd 环境 

LIB_PATH // 项目类库目录 

LOG_PATH // 项目日志文件目录 

LANG_PATH // 项目语言文件目录 

LANG_SET // 浏览器语言 

MEMORY_LIMIT_ON // 是否有内存使用限制php.ini 当中是否有内存使用大小的限制 

MODULE_NAME //当前模块名称 

MAGIC_QUOTES_GPC // 

MAGIC_QUOTES_GPC,是否开启自动转义 

TMPL_PATH // 项目模版目录 

TEMP_PATH //项目临时文件目录 

THINK_VERSION //ThinkPHP 版本号 

THINK_PATH // ThinkPHP 系统目录 

TMPL_FILE_NAME //当前操作的默认模版名(含路径) 

TEMPLATE_NAME //当前模版名称 

TEMPLATE_PATH //当前模版路径 

PLUGIN_PATH // 项目插件文件目录 

VENDOR_PATH // 第三方类库目录 

NOW_TIME // 当前时间戳 

OUTPUT_GZIP_ON // 是否开启输出压缩 

__ROOT__ // 网站根目录地址 

__APP__ // 当前项目(入口文件)地址 

__URL__ // 当前模块地址 

__ACTION__ // 当前操作地址 

__SELF__ // 当前 URL 地址 

__CRREUT_//当前模块模板地址 

WEB_PUBLIC_URL //网站公共目录 

APP_PUBLIC_URL //项目公共模版目录 

 

模板中使用的系统常量 

__ROOT__ // 网站根目录地址 

__APP__ // 当前项目(入口文件)地址

 __URL__ // 当前模块地址 

__ACTION__ // 当前操作地址 

__SELF__ // 当前 URL 地址

 __PUBLIC__ // 网站公共目录 

../Public(不区分大小写) // 项目公共模版目录


首先声明,浏览的Cookie操作都是通过HTTP Header(俗称“Http头”) 来实现。所有的服务器与客户端之间Cookie数据传输都是通过Http请求头来操作。

PHP中setCookie(函数的实现),就是对HTTP头进行封装,由此看来 使用 header 与 使用setCookie是一样的。

由于header头信息属于HTTP协议内容,必须先把头信息发送到服务器,再进行数据下载等其他操作,所以在setCookie 与 header 之前不能有任何内容输出(例如:echo/printf等)

header 设置Cookie方式:

header("Set-Cookie: testcookie=中文; path=/; domain=.sunphp.org; expires=".gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT",time()+9600));

setCookie设置方式: 语法:

setcookie(name,value,expire,path,domain,secure)

例:

setcookie("website", 'www.sunphp.org', time()+3600*24);
参数 描述
name 必需。规定 cookie 的名称。
value 必需。规定 cookie 的值。
expire 可选。规定 cookie 的有效期。
path 可选。规定 cookie 的服务器路径。
domain 可选。规定 cookie 的域名。
secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。

timg.jpg

以前写的http_curl_get失效了,curl获取第三方接口慢的时候竟然需要响应2min,恐怖!所以考虑了file_get_content来替代,最后完美解决,直接上代码:

$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $config['cwxappid'] . '&secret=' . $config['cwxappsecret'] . '&code=' . $wxcode . '&grant_type=authorization_code';
$weixin=file_get_contents($url);
$data=json_decode($weixin); //对JSON格式的字符串进行编码
$info = get_object_vars($data);//转换成数组
$uopenid = $info['openid']; 

1、例如下面的json格式数据

[
    { 
        "id":1,
        "resname":"百度", 
        "resimg":"http://www.baidu.com/1.jpg",
        "resint":"2018-1-18",
        "resurl":"http://www.baidu.com/1.apk",
        "pageview":"100"
    },
    { 
        "id":2,
        "resname":"阿里巴巴", 
        "resimg":"http://www.alibaba.com/1.jpg",
        "resint":"2018-1-18",
        "resurl":"http://www.alibaba.com/1.apk",
        "pageview":"200"
    },
    { 
        "id":3,
        "resname":"腾讯", 
        "resimg":"http://www.qq.com/1.jpg",
        "resint":"2018-1-18",
        "resurl":"http://www.qq.com/1.apk",
        "pageview":"300"
    }
]

2、建立模板文件index.html,通过vue.js来解析

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <title>VUE解析JSON数据</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>

<body>
    <div id="main">
        <table border=1>
            <tr>
                <td>ID</td>
                <td>资源名称</td>
                <td>LOGO</td>
                <td>更新时间</td>
                <td>下载地址</td>
                <td>阅读量</td>
            </tr>
            <tr v-for="r in rows">
                <td>{{r.id}}</td>
                <td>{{r.resname}}</td>
                <td><img v-bind:src="r.resimg"/></td>
                <td>{{r.resint}}</td>
                <td><a v-bind:href="r.resurl">点击下载</a></td>
                <td>{{r.pageview}}</td>
            </tr>
        </table>
    </div>
</body>
<script>
    $(document).ready(function () {
        $.getJSON("data.json", function (result, status) {
            var v = new Vue({
                el: '#main',
                data: {
                    rows: result
                }
            })
        });
    });
</script>

</html>

3、访问index.html查看效果。

<?php
    /*验证验证码是否正确*/
    session_start();

    $code = trim($_POST['code']);//接收前端传来的数据

    $raw_success = array('code' => 1, 'msg' => '验证码正确');

    $raw_fail = array('code' => 2, 'msg' => '验证码错误');

    $res_success = json_encode($raw_success);
    $res_fail = json_encode($raw_fail);

    header('Content-Type:application/json');//这个类型声明非常关键

    if ($code == $_SESSION["verfycode"]) {
        echo $res_success;
    } else {
        echo $res_fail;
    }
?>

今天在使用thinphp框架维护一个项目时,碰到这个错误。

Can’t use function return value in write context

意思是不能使用函数返回值做参数

百度解决方案说是thinkphp的bug ,比较靠谱的说法感觉是php版本的问题,PHP5.4不行,PHP5.6就ok,可我懒得升级到PHP5.6版本。研究了一些前辈的文章,其实解决这个问题也很简单,is_array,empty中的参数尽量传变量就好了。