php通过header设置cookie的安全

代码如下

 

 

define('COOKIES_PATH', '/');
define('COOKIES_EXPIRES',gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT",time()+9600));

 

header("Set-Cookie:user[userid]=123;path =".COOKIES_PATH.";httpOnly;SameSite=Strict;expires=".COOKIES_EXPIRES.";",false);
header("Set-Cookie:user[username]=123;path =".COOKIES_PATH.";httpOnly;SameSite=Strict;expires=".COOKIES_EXPIRES.";",false);
header("Set-Cookie:user[password]=123;path =".COOKIES_PATH.";httpOnly;SameSite=Strict;expires=".COOKIES_EXPIRES.";",false);

 

 

header("Set-Cookie:admin[username]='';path =".COOKIES_PATH.";expires=".gmdate('D, d M Y H:i:s GMT', time()-1).";",false);
header("Set-Cookie:admin[password]='';path =".COOKIES_PATH.";expires=".gmdate('D, d M Y H:i:s GMT', time()-1).";",false);

 

可以通过设置httpOnly;和SameSite=Strict;对cookie进行禁止JS读取和禁止跨域读取.达到基础性的XSS和CSRF防护.

PHP版内容自动创建索引目录的代码

来源于网络

PHP版内容自动创建索引目录的代码,可以自动把内容中的<h2><h3>标签中的内容作为索引目录,创建内容页中的小导航菜单.

关于css的代码,可以自行处理.

 

function create_con_menu($content) {
    $matches = array();
    $ul_li = '';
    //匹配出h2、h3标题
    $rh = "/<h[23]>(.*?)</h[23]>/im";
    $h2_num = 0;
    $h3_num = 0;
    //判断是否是文章页
    if(is_single()){
         if(preg_match_all($rh, $content, $matches)) {
            // 找到匹配的结果
            foreach($matches[1] as $num => $title) {
                $hx = substr($matches[0][$num], 0, 3);      //前缀,判断是h2还是h3
                $start = stripos($content, $matches[0][$num]);  //匹配每个标题字符串的起始位置
                $end = strlen($matches[0][$num]);       //匹配每个标题字符串的结束位置
                if($hx == "<h2"){
                    $h2_num += 1; //记录h2的序列,此效果请查看百度百科中的序号,如1.1、1.2中的第一位数
                    $h3_num = 0;
                    // 文章标题添加id,便于目录导航的点击定位
                    $content = substr_replace($content, '<h2 id="h2-'.$num.'">'.$title.'</h2>',$start,$end);
                    $title = preg_replace('/<.+?>/', "", $title); //将h2里面的a链接或者其他标签去除,留下文字
                    $ul_li .= '<li class="h2_nav"><a href="#h2-'.$num.'" class="tooltip" title="'.$title.'">'.$title."</a><i class="post_nav_dot"></i></li>n";
                }else if($hx == "<h3"){
                    $h3_num += 1; //记录h3的序列,此熬过请查看百度百科中的序号,如1.1、1.2中的第二位数
                    $content = substr_replace($content, '<h3 id="h3-'.$num.'">'.$title.'</h3>',$start,$end);
                    $title = preg_replace('/<.+?>/', "", $title); //将h3里面的a链接或者其他标签去除,留下文字
                    $ul_li .= '<li class="h3_nav"><a href="#h3-'.$num.'" class="tooltip" title="'.$title.'">'.$title."</a><i class="post_nav_dot"></i></li>n";
                }  
            }
        }
        // 将目录拼接到文章
        $content =    "<div class="post_nav"><ul class="post_nav_content">n" . $ul_li . "</ul></div>n".$content;
        return $content;
    }
}

 

 

 

 

 

php 判断字符串是英文还是汉字还是英汉混合

php 判断字符串是英文还是汉字还是英汉混合

 

 

/*
		 * 判断给定字符串是
		 * 纯英文:ENGLISH
		 * 纯汉字:CHINESE
		 * 英汉混合:MIXTURE
		 */
		private function EnglishOrChinese($str){
		    $mb = mb_strlen($str,'utf-8');
		    $st = strlen($str);
		    if($st==$mb)
		        return ENGLISH;		//'纯英文';
		    if($st%$mb==0 && $st%3==0){
		        return CHINESE;		//'纯汉字';
		    }
		    else{
		    	return MIXTURE;		//'汉英混合';
		    }
		}

 

需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保

“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

 

 

参考

https://blog.csdn.net/carrousel0516/article/details/90229209

https://www.cnblogs.com/ryanzheng/p/8285113.html

 

 

 

PHP字符串出现次数,字符串包含

PHP字符串出现次数,字符串包含

可以通过字符串出现次数大于1,来判断字符串包含

function check_str($str, $substr)
{//子字符串$substr在字符串$str中出现一次,表示包含
 $nums=substr_count($str,$substr);
  if ($nums>=1)
  {
   return true;
  }
  else
  {
   return false;
  }
}

 

 

 

 

 

PHP define() 函数

在用jtbc做站时,遇到一个定义常量,无法获取到值,经过排查,得知,define() 函数未设置case_insensitive参数时,默认是区分大小写的。

定义和用法

define() 函数定义一个常量。

常量类似变量,不同之处在于:

在设定以后,常量的值无法更改
常量名不需要开头的美元符号 ($)
作用域不影响对常量的访问
常量值只能是字符串或数字
语法

define(name,value,case_insensitive)
参数 描述
name 必需。规定常量的名称。
value 必需。规定常量的值。
case_insensitive
可选。规定常量的名称是否对大小写敏感。

若设置为 true,则对大小写不敏感。默认是 false(大小写敏感)。

例子

例子 1

定义一个大小写敏感的常量:

<?php
define("GREETING","Hello world!");
echo constant("GREETING");
?>
输出:

Hello world!
例子 2

定义一个大小写不敏感的常量:

<?php
define("GREETING","Hello world!",TRUE);
echo constant("greeting");
?>
输出:

Hello world!

PHP记录访客IP代码

PHP记录访客IP代码

代码如下:


< ?

$file = "ip.txt";//保存的文件名

$ip = $_SERVER['REMOTE_ADDR'];

$handle = fopen($file, 'a');

fwrite($handle, "IP Address: ");
fwrite($handle, "$ip");
fwrite($handle, "n");

fclose($handle);
?>

用法:用include包含在首页,然后就可以记录了

这种方法类似JS调用,都受到空间和网速的影响,用于小型网站还是可以满足需求的.