设置header头

<?php 
!defined("MAIN_VISIT")?exit(header("HTTP/1.0 404 Not Found")):'';
?>
#获取访问来源url地址
$referer=$_SERVER['HTTP_REFERER'];

获取http请求头部信息并转为数组

var_dump(getHeader());
function getHeader() {//获取http头部信息
    $headers = array(); 
    foreach ($_SERVER as $key => $value) {
        if ('HTTP_' == substr($key, 0, 5)) { 
            $headers[str_replace('_', '-', substr($key, 5))] = $value; 
        }
        if (isset($_SERVER['PHP_AUTH_DIGEST'])) { 
            $header['AUTHORIZATION'] = $_SERVER['PHP_AUTH_DIGEST']; 
        } elseif (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { 
            $header['AUTHORIZATION'] = base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW']); 
        } 
        if (isset($_SERVER['CONTENT_LENGTH'])) { 
            $header['CONTENT-LENGTH'] = $_SERVER['CONTENT_LENGTH']; 
        } 
        if (isset($_SERVER['CONTENT_TYPE'])) { 
            $header['CONTENT-TYPE'] = $_SERVER['CONTENT_TYPE']; 
        }
    }
    return $headers;
}

php获取地址栏相关信息

#测试网址:     http://localhost/blog/testurl.php?id=5
//获取域名或主机地址 
echo $_SERVER['HTTP_HOST']."<br>"; #localhost
//获取网页地址 
echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php
//获取网址参数 
echo $_SERVER["QUERY_STRING"]."<br>"; #id=5
//获取用户代理 
echo $_SERVER['HTTP_REFERER']."<br>"; 
//获取完整的url
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
#http://localhost/blog/testurl.php?id=5
//包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
#http://localhost:80/blog/testurl.php?id=5
//只取路径
$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; 
echo dirname($url);
#http://localhost/blog
#跳转地址
!isset($_SESSION['userid'])?header('location:'.WWW_URL.'dingding/dinglogin/'):'';

if(!isset($_SESSION['userid'])){
echo '<script>location.href="'.WWW_URL.'dingding/dinglogin/";</script>';
}
?>

json_encode/decode中文编码

json_encode($result,JSON_UNESCAPED_UNICODE));// 将带中文数组 编码为中文json串-----------需要php5.6?以上版本
json_decode($data,true);//将json串解析为数组 否则解析为对象

中文转码GB232/UTF-8

$ding_name=iconv('UTF-8','GB2312//IGNORE',$row['ding_name']);//utf8 转码

session_id

// session_write_close();
// ini_set('session.auto_start', 0);                    //关闭session自动启动
// ini_set('session.cookie_lifetime', 0);            //设置session在浏览器关闭时失效
// ini_set('session.gc_maxlifetime', 3600);  //session在浏览器未关闭时的持续存活时间   
//开启 session
session_start();
// 在 URL 后面附加参数,变量名为session_name()获取的名称,值为session_id()获取
echo '<a href="test.php?'.session_name().'='.session_id().'">演示</a>';

////
/*
PHP会话控制之如何正确设置session_name
在php.ini中配置为:session.name = PHPSESSID
在请求开始的时候,会话名称会被重置并存储到session.name配置项。
所以要想在不改变php.ini配置文件的情况下,更改session_name 必须要在 session_start()或
session_register()之前设置session_name。
*/
session_name('PHPSESSID_NEW');//一定要在session_start()之前设置修改会话名session_name
session_start();
echo session_name(); //输出为PHPSESSID_NEW,查看浏览器cookies,可以看到name变为PHPSESSID_NEW

cookies

setcookie("zhanghao","$zhanghao",time()+60*60);

if($_COOKIE["zhanghao"]){
      echo "<span class='STYLE4'>欢迎您:".$_COOKIE["zhanghao"]."</span>";
      }

时间类

echo date('Y-m-d H:i:s',time());
echo time();
//日期转换为时间戳
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 '<br><br>';
echo date("Y-m-d H:i:s",strtotime("2019-10-15 10:10:10 +1 day")) ;

数组是否存在值 值查找key

<?php
$arr_a = array("a", "b", "c", 1);
if(in_array("a", $arr_a)){
  echo '字符 a 在 $arr_a 数组中存在';
} else {
  echo '字符 a 在 $arr_a 数组中不存在';
}

//1.返回一个键名,如果值有重复返回第一个键名
$key = array_search('vegetable', $items);
echo $key;//tomato
//2.返回多个键名
$keys=array_keys($items,'vegetable');
print_r($keys);
?>

实时输出内容

set_time_limit(0);
ob_end_clean();
ob_implicit_flush();
header('X-Accel-Buffering: no'); // 关键是加了这一行。
echo '现在是:'.date('H:i:s').'<br>';
sleep(5);
echo '五秒后:'.date('H:i:s');
die;

案例1:实时输出shell脚本日志,将shell脚本输出内容重定向到一个日志文件,再实时输出
set_time_limit(0);
ob_end_clean();
ob_implicit_flush();
header('X-Accel-Buffering: no'); // 关键是加了这一行。
while(exec("/home/web/a.sh >> /home/web/a.log 2>&1 &"){
    $log = file_get_contents('/home/web/a.log'); //这里log你可以把每一行都存入数组,然后每次只echo新的行。
    echo "最新一行";
}
最后编辑: admin  文档更新时间: 2021-03-16 21:53   作者:admin