php學習01

Jul 29, 2016 am 09:14 AM
array echo name print session

<code><?php
/*
 * 回顾
 * php 魔术方法
 * __<span>set</span>() 当在类外使用类的private 属性时,或不存在的属性时会报错,如果设置了__<span>set</span>()方法,那么就会调用这个方法
 *    __<span>set</span>(成员属性名名称,要设置的成员属性的值)
 * __get() 当在类外获取类的private 属性时,属性时,或不存在的属性时会报错, 如果设置了__get()方法,那么就会调用这个方法
 *    __get(成员属性的名称)
 * __call() 当调用类的不存在的方法时,会报错,若定义了改方法,那么就调用此方法
 *    __call(被调用的方法名,该方法的参数)
 * __callStatic(被调用的方法名,该方法的参数)
 * __clone() 当<strong>对象</strong>克隆时调用该方法
 *    __clone(),默认参数为<span>$this</span>,<span>$that</span>, <span>$this</span> 为要克隆出的<strong>对象</strong>,<span>$that</span>为原<strong>对象</strong>
 * __construct 构造函数
 * __destruct 析构函数
 * __sleep(); 当<strong>对象</strong>序列化之前被调用
 * __wakeup()当反序列化之前调用
 * __autoload(被包含的类名) 当调用一个类名的方法时,如果没有将该类包含进来, 则会报错,当定义了此函数时,就会调用此函数动态加载类文件
   __toString()  当直接输出类的<strong>对象</strong>时会报错,如果定义的该方法,则调用此方法
 *  */

class A {
    private <span>$name</span>;
    private <span>$age</span>;
    public function __construct(<span>$name</span>,<span>$age</span>){
        <span>$this</span>->name = <span>$name</span>;
        <span>$this</span>->age = <span>$age</span>;
    }
    public function __<span>set</span>(<span>$name</span>,<span>$value</span>){
        <span>$this</span>-><span>$name</span> = <span>$value</span>;
    }
    public function __get(<span>$name</span>){
        <span>if</span>(<span>$name</span>==<span>'fuck'</span>)
            <span>return</span><span>"fuck!"</span>;
        <span>if</span>(isset(<span>$this</span>-><span>$name</span>)){
            <span>return</span><span>$this</span>->name;
        }<span>else</span>{
            <span>return</span> NULL;
        }
    }
    public function __call(<span>$name</span>,<span>$args</span>){
        <span>echo</span><span>$name</span> ,<span>"Mothod不存在"</span>;
        var_dump(<span>$args</span>);
    }
    public static function __callStatic(<span>$name</span>,<span>$value</span>){
        <span>echo</span><span>"<strong>静态方法</strong><span>$name</span>不存在"</span>;
    }
    public function <span><span>__clone</span></span>() {
         <span>$this</span>->name = <span>"我是被克隆的"</span>;
    }
    public function <span><span>__sleep</span></span>() {
       // <span>echo</span><span>"正在被序列化"</span>;
        <span>return</span> array(name);
    }
    //重新生成<strong>对象</strong>时,调用
    public function <span><span>__wakeup</span></span>() {
        <span>$this</span>->name = <span>"张三"</span>;
        <span>$this</span>->age = <span>234</span>;
    }
    public function <span><span>__toString</span></span>() {
        <span>return</span><span>"A"</span>;
    }

}
//<span>$a</span> = new A(<span>"张三"</span>,<span>22</span>);
//<span>echo</span><span>$a</span>->name;
//<span>$a</span>->name = <span>"张三"</span>;
//<span>echo</span><span>$a</span>->name;
//<span>$a</span>->get(<span>"xue"</span>,<span>3</span>,<span>"sf"</span>) ;
//<span>$a1</span> = clone <span>$a</span>;
//<span>echo</span><span>$a</span>->name,<span>"<br/>"</span>,<span>$a1</span>->name;
//<span>$p_str</span> = serialize(<span>$a</span>);
//<span>echo</span><span>$p_str</span>;
//<span>$a2</span> = unserialize(<span>$p_str</span>);
//var_dump(<span>$a2</span>);
//function __autoload(<span>$classname</span>){
//       <strong>include</strong> <span>$classname</span>.<span>".php"</span>;
//}
//<span>echo</span><span>$a2</span>->fuck;
//A::ha();
/*
 * <span>1</span>. <span>echo</span> 和print 的区别
 *  <span>echo</span> 是语句,不是函数, 不用括号,可以输出多个值,没有返回值,不能输出数组和<strong>对象</strong> 只能输出简单的类型,如 int,string 
 *  print 是语句,不是函数,不用括号,只能输出一个值,有返回值<span>1</span>,不能输出数组和<strong>对象</strong>,只能输出简单的类型,如int,string
 * <span>2</span>.print_r() 和 var_dump()
 *  print_r() 是函数,可以输出复合类型和简单类型,如int float ,string ,array object,当输出<strong>对象</strong>时以机构表示如 Object{},当输出
 *   数组时表示为Array()
 *  var_dump() 是函数,输出变量的内容,类型,长度,可以输出简单类型,复合类型,常用来调试
 * <span>3</span>.printf 是函数,类似C语言,格式化字符串输出
 * <span>4</span>.sprintf 函数,类似C语言,格式化字符串后返回一个格式化后的字符串不输出
 * 
 */
//print_r(<span>3.55</span>);
//<span>$arr</span> = array(<span>"xue"</span>,<span>3</span>);
// print_r(<span>$arr</span>);
// var_dump(<span>$arr</span>);
//<span>$nb</span> = sprintf(<span>"%s 是个%d吊"</span>,<span>"haha"</span>,<span>3</span>);
//<span>echo</span><span>$nb</span>;
/*
 * 获取文件内容方式
 * <span>1</span>.file_get_contents();
 * 
 */
//<span>$txt</span> = file_get_contents(<span>'data.txt'</span>);
//<span>echo</span><span>$txt</span>;
//<span>$file</span> = fopen(<span>"data.txt"</span>,<span>"r"</span>);
//<span>while</span>(!feof(<span>$file</span>)){
//    <span>$line</span> = fgets(<span>$file</span>);
//   // <span>echo</span><span>$line</span>;
//    
//}
//<span>while</span>(!feof(<span>$file</span>)){
//    <span>$char</span> = fgetc(<span>$file</span>);
//     <span>echo</span><span>$char</span>;
//}
/*
 * strlen() he mb_strlen的区别
 * 两者都是求字符串长度的函数
 * 在strlen只是获得字符串所占的字节数,无法正确处理中文字符
 * 当为GB2313编码时,一个汉字占<span>2</span>位,当为UTF-<span>8</span>编码时,一个汉字占<span>3</span>位
 * mb_strlen()能够正确处理汉字,第二个参数为编码的类型,默认为UTF-<span>8</span>,默认为PHP内部的编码,可以用mb_internal_encoding()来查看
 * mb_strlen()并不是php核心函数, 需要加载扩展库来使用,在php.in中 extension = <span>"php_mb_string.dll"</span>
 */
//<span>$str</span> = <span>"黛玉123f"</span>;
//<span>echo</span> strlen(<span>$str</span>); // 输出<span>10</span>
//<span>echo</span> mb_strlen(<span>$str</span>,<span>'UTF-8'</span>); //输出<span>6</span>
//<span>echo</span> mb_internal_encoding();//输出 ISO-<span>8859</span>-<span>1</span>
//
/*
 * php数组函数
 * 数组的键名和值
 * <span>1</span>.is_array()判断是否是数组,是返回TRUE,不是返回<span>false</span>,类似 is_int(); is_float();
 * <span>2</span>.array explode ( string <span>$delimiter</span> , string <span>$string</span> [, int <span>$limit</span> ] )此函数将字符串分割为数组
 * <span>3</span>.string implode ( string <span>$glue</span> , array <span>$pieces</span> )将数组分割为字符串
 * <span>4</span>.array_values()返回数组所有的值,请给其建立数字<strong>索引</strong>
 * <span>5</span>.array array_keys ( array <span>$input</span> [, mixed <span>$search_value</span> = NULL [, bool <span>$strict</span> = <span>false</span> ]] )
 * <span>6</span>.array_key_exists() 检索指定的键名或<strong>索引</strong>是否在数组中,存在返回<span>true</span>,否则返回<span>false</span>
 * <span>7</span>.array_flip()交换数组的键名和值,若存在相同值,则以最后一个键值为准
 * <span>8</span>.array_search() 在数组中搜索给定的值,若存在返回对应的键名,否则返回FALSE
 * <span>9</span>.检索数组中是否存在某个值,存在返回<span>true</span>,不存在返回FALSE
 * <span>10</span>.isset(<span>$arr</span>[<span>'apple'</span>] 检测指定的键名知否存在给定的数组中,存在返回<span>true</span>,否则返回<span>false</span>
 * 数组的内部指针
 * current(<span>$arr</span>);  返回数组中的当前单元
   pos(<span>$arr</span>);  返回数组中的当前单元
   key(<span>$arr</span>);  返回数组中当前单元的键名
   prev(<span>$arr</span>);  将数组中的内部指针倒回一位
   next(<span>$arr</span>);  将数组中的内部指针向前移动一位
   end(<span>$arr</span>);  将数组中的内部指针指向最后一个单元
   reset(<span>$arr</span>;  将数组中的内部指针指向第一个单元
 * each(<span>$arr</span>);  返回数组当前指针单元的键名和值,以新数组的形式,且当前数组的指针向前移动一步,若到达数组最后一个单元, 则停留为最后一个单元
 *  键值对被返回为四个单元的数组,键名为>,key 和 value。单元 <span>0</span> 和 key 包含有数组单元的键名,<span>1</span> 和 value 包含有数据。 
 * list(<span>$key</span>,<span>$value</span>);  不是真正的函数,是一种语言结构,获得数组当前元素的键名和值,并赋值给变量,list只能用于没有键名和<strong>索引</strong>的数组
 * 
 * 数组和变量之间的转换
 * extract() 从数组中将变量导入到当前的符号表
 * 检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。 
 * compact() 将变量变为数组
 * 数组的分段和填充
 * array_slice 在数组中取出一段
 *   array_slice(<span>$array</span>,int offset,[int length,<span>false</span>|<span>true</span>]);
 * 若偏移量为负数,则从数组末端开始数
 * 若长度为负数,则序列将终止在距离数组末端这么远的地方
 * array array_splice ( array &<span>$input</span> , int <span>$offset</span> [, int <span>$length</span> = <span>0</span> [, mixed <span>$replacement</span> ]] )
 *   删除数组的某段,根据offset和length,可以用replacement替换被被删除的单元,替换个数和被替换的单元的个数一致,如果为数组,则键名
 *  不保留,只替换值,也可以为字符串,如果没有删除的单元,那么替换的变量将会被插入到offset的位置
 * 
 *  分割多个数组
 *  array_chunk(array,size,[<span>true</span>|<span>false</span>])
 *  将一个数组分割成多个数组,每个数组的元素量为size,size小于<span>1</span>将报错,可能最后一个数组的元素小于size,默认为<span>false</span>,将丢掉原数组的<strong>索引</strong>或键名
 *    重新建立从<span>0</span>开始的数字<strong>索引</strong>,为<span>true</span>时,保留原来的键名或<strong>索引</strong>
 *  
 *  数组的填充
 *  array_pad(array,length,value);
 *  将数组用value填充到length长度,
 *  若length小于等于数组的长度,则不填充
 *  如果length为负数, 则向左填充
 *  
 *  数组与栈
 *  array_push(array,value,,,);
 *  将一个或多个值压入数组栈,返回此数组的元素个数
 *  array_pop(array);
 *  返回一个数组的栈顶元素,如果数组为空或者不是数组,则返回NULL
 * 
 *  数组与列队
 *  array_shift(array);
 *  将返回数组的第一个元素,数组的元素个数减一,后面的元素向前移动,数字键名从<span>0</span>开始重新技术,关联键名不变
 *  若数组为空,或不为数组,则返回NULL
 *  array_unshift(array,value,,,);
 *  将值插入数组的开头,所有的数字<strong>索引</strong>将重新从<span>0</span>开始技术,关联键名不变
 * 
 *  数组排序
 *  键值排序
 *  sort(array,[]); 将数组的值从小到大排序,操作成功返回<span>true</span>,否则返回<span>false</span>
 *  忽略键名的数组排序
 *  rsort(array[],,),将数组的值从大到小排序,操作成功返回<span>true</span>,否则返回<span>false</span>
 *  忽略键名的数组排序
 *  usort(array,funcname);调用用户定义的函数对数组排序
 *  忽略键名的数值排序
 * 
 *  asort() 保留键名的数值排序
 *  arsort() 保留键名的数值排序
 *  uasort()
 *  =========
 *  键名排序
 *  ksort() 用键名排序,主要用于关联数组
 *  krsort() 按照键名逆序排序
 *  uksort() 自定义函数排序
 *  =========
 *  自然排序法排序
 *  natsort();自然排序
 *  natcasesort()自然排序,忽略大小写
 *  
 *  数组的计算
 *  array_sum()计算数组元素的和
 *  数组的合并
 *  array_merge(array1,array2);则键名会以连续方式重新<strong>索引</strong>
 *  array1+array2  对于相同的键名只保留第一个
 *  如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符
 *  array_merge_recursive() 递归合并数组
 *  如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。 
 *  
 *  数组的差集
 *  array_diff(array1,array2,array3,,,);返回在array1中但不在其他数组中的元素
 *  array_diff_assoc(array1,array2,array3...);返回在array1中但不在其他数组中的元素,键名也做比较,只有键名和键值都相同时才算
 *  
 *  数组的交集
 *  array_intersect(array1,array2,,,);返回数组的交集
 *  array_intersect_assoc(array1,array2,,,);返回数组的交集,键名也做比较
 *  
 *  其他的数组函数
 *  range(start,max,step);创建一个start到max范围的一个数组,step为步长,默认为<span>1</span>
 *  array_unique()除去数组中重复的值
 *  array_reverse();反转数组,若第二个参数为<span>true</span>时则保留键名
 *  array_rand(array,size);随机返回数组中的一个或多个单元的键名,若为多个则返回包含多个键名的数组
 *  shuffle(array); 将数组的元素打乱,返回FALSE或TRUE
 * 
 *  
 * 

 */
//var_dump  (is_array(<span>3</span>));
<span>$arr</span> = explode(<span>","</span>,<span>"I,am,hello,3"</span>);
print_r(<span>$arr</span>);
<span>echo</span> implode(<span>$arr</span>);
//array_values()
<span>$arr</span> = array_values(array(<span>'name'</span>=><span>'daiyutage'</span>,<span>"age"</span>=><span>20</span>));
print_r(<span>$arr</span>);
<span>$arr</span> = array_keys(array(<span>'name'</span>=><span>"daiyutage"</span>,<span>"age"</span>=><span>20</span>));
print_r(<span>$arr</span>);
var_dump(array_key_exists(<span>'name'</span>,array(<span>"name"</span>=><span>"daiyu"</span>)));
var_dump (array_flip((array(<span>"a"</span>=><span>1</span>,<span>"b"</span>=><span>1</span>,<span>"ddd"</span>=><span>33</span>))));
<span>echo</span><span>in</span>_array(<span>"daiyutage"</span>,array(<span>"name"</span>=><span>"daiyutage"</span>));
<span>$arr</span> = array(<span>"name"</span>=><span>1</span>);
<span>echo</span> isset(<span>$arr</span>[<span>'name'</span>]);

<span>$foo</span> = array(<span>"Robert"</span> => <span>"Bob"</span>, <span>"Seppo"</span> => <span>"Sepi"</span>,<span>"name"</span>=><span>3324</span>);
<span>$bar</span> = each(<span>$foo</span>);
print_r(<span>$bar</span>);
<span>$bar</span> = each(<span>$foo</span>);
print_r(<span>$bar</span>);
<span>$info</span> = array(<span>"name"</span>,<span>"haha"</span>);
<span>unset</span>(<span>$a</span>);
list(<span>$a</span>[<span>0</span>],<span>$a</span>[<span>1</span>])  = <span>$info</span>;
//print_r(<span>$a</span>);
//
//<span>$name</span> = <span>"diayutage"</span>;
//extract(array(
//     <span>"name"</span>=><span>"xue"</span>,
//     <span>"age"</span>=><span>22</span>,
//     <span>"school"</span>=><span>"lut"</span>
//),EXTR_PREFIX_SAME,<span>'WX'</span>);
//<span>echo</span><span>$name</span>,<span>" "</span>,<span>"<span>$age</span>"</span>,<span>"  "</span>,<span>"<span>$school</span>"</span>,<span>" "</span>,<span>$Wx_name</span>;

//课本,<span>1</span>,<span>2</span>,<span>3</span>,《书读百遍,其义自现》
//compact
<span>$firstname</span> = <span>"Peter"</span>;
<span>$lastname</span> = <span>"Griffin"</span>;
<span>$age</span> = <span>38</span>;
<span>$color</span>=<span>"red"</span>;

<span>$rs</span> = array(<span>"color"</span>,<span>"fx"</span>);

//<span>$result</span> = compact(<span>"firstname"</span>, <span>"lastname"</span>, <span>"age"</span>,<span>$rs</span>);
//print_r(<span>$result</span>);
<span>$arr</span> = array(<span>"a"</span>,<span>"xx"</span>=><span>"b"</span>,<span>6</span>=><span>"c"</span>,<span>"d"</span>,<span>"e"</span>);
//print_r(array_slice(<span>$arr</span>,<span>2</span>,-<span>1</span>,<span>true</span>));
//   array_splice(<span>$arr</span>,<span>1</span>,-<span>4</span>,<span>"xxxxx"</span>);
// print_r(<span>$arr</span>);
//print_r(array_chunk(<span>$arr</span>,<span>2</span>,<span>false</span>));
//print_r(array_pad(<span>$arr</span>,-<span>10</span>,<span>33</span>));
//print_r(array_push(<span>$arr</span>,<span>"daiyutage"</span>,<span>"fff"</span>));
//<span>echo</span> array_pop(<span>$arrs</span>);
//<span>echo</span> array_shift(<span>$arr</span>);
array_unshift(<span>$arr</span>,array(<span>"hasdf"</span>,<span>"sf"</span>));

<span>$fruits</span> = array(<span>"lemon"</span>, <span>"sdfsf"</span>=><span>"orange"</span>, <span>"banana"</span>, <span>"apple"</span>);
rsort(<span>$fruits</span>);
function cmp(<span>$a</span>,<span>$b</span>){
     <span>return</span><span>$a</span>==<span>$b</span>?<span>0</span>:<span>$a</span><<span>$b</span>?-<span>1</span>:<span>1</span>;
}
//<span>$brr</span> = array(<span>"fsf"</span>,<span>"fs"</span>=><span>3</span>,<span>10</span>=><span>2</span>,<span>4</span>=><span>244</span>,<span>3244</span>);
//ksort(<span>$brr</span>);
//print_r(<span>$brr</span>);
//print_r(array_merge(<span>$fruits</span>,<span>$brr</span>));//则键名会以连续方式重新<strong>索引</strong>
//<span>$a</span> = array(<span>3</span>=><span>"red"</span>,<span>"hello"</span>,<span>"hello"</span>);
//<span>$b</span> = array(<span>"red"</span>,<span>"fe"</span>);
//print_r(array_intersect_assoc(<span>$a</span>,<span>$b</span>));
//var_dump(range(<span>0</span>,<span>12</span>,<span>9</span>));
//print_r(array_reverse(<span>$fruits</span>));
//print_r(array_rand(<span>$fruits</span>));
//(shuffle(<span>$fruits</span>));
// print_r(<span>$fruits</span>);
//
/*
 * 时区设置
 * date_default_timezone_<span>set</span>()设置时区,时区不正确会报错抛出 E_WARNING 而不是 E_STRICT。不区分大小写
 * date_defalut_timezone_get()获取时区
 * 中国时区为Asia/Shanghai 或 PRC 
 * 
 */
//<span>echo</span> date_default_timezone_get();
//error_reporting(E_ALL);
//date_default_timezone_<span>set</span>(<span>"PRC"</span>);
//<span>echo</span> date_default_timezone_get();
//
/* CGI,PHP_mod,FastCGI的区别
 * CGI 通用网关协议
 * 当客户端请求服务器时,服务器fork一个进程,执行php.cgi程序对php页面进行解析,解析完进程销毁,返回服务器,
 * 每次的请求过程,fork->执行->销毁,效率很低,耗费较多的系统资源
 * php_mod
 * php解释器以模块的形式同apache服务器一起启动,使用同一个进程
 * FastCGI
 * CGI的增强版,相当于一个中间层,使用一个进程,客户端->服务器->FastCGI->php解释实例,FastCGI用一个进程常驻内存,并创建多个CGI实例
 * apache与FastCGI的通信为tcp通信,即FastCGI可以为本机,也可以为远程主机
 * apache与CGI的通信为<strong>进程间通信</strong>,必须为同一主机
 * 小总结:
    cgi : 需要开启若干个进程;
    fastcgi : 需要额外开启一个进程;
    php_mod :无需开启额外进程,因为PHP解析器已集成到web服务器中,跟web服务器在同一个进程。
 * 
 *  php_mod配置方式
 *  在apache中,httpd.conf中
 * <span>1</span>    LoadModule php5_module <span>"C:/php5/php5apache2_2.dll"</span>//大约line <span>127</span><span>2</span>   PHPinidir <span>"C:/php5/php.ini"</span><span>3</span>   //修改配置
<span>4</span>   DirectoryIndex index.html index.php//追加index.php
<span>5</span>   AddType application/x-httpd-php .php //line <span>408</span>左右添加
 *  CGI配置方式
 * 
 * 
 */
//error_reporting(E_ALL);
//setcookie(<span>"haha"</span>);
/*
 * cookie 与 session
 * cookie[<span>'login'</span>] = <span>true</span>;
 * A访问
 * session盒子开
 * session[<span>'login'</span>] = <span>true</span>;
 * B访问
 * session盒子开
 * session[<span>'login'</span>] = <span>true</span>;
 * session 在内存中,如果不区分每一个客户端的session,那么session将无法使用
 * 所以需要将每一个请求的session与其客户端关联
 * 方法:
 * 当第一次请求服务器时,服务器生成一个session_id,
 * 通过http头将session_id发送给浏览器,浏览器保存在将此session_id保存在本地的cookie中
 * 当再次请求服务器时,浏览器发送此cookie,服务器收到后用本地cookie中的session_id来访问此客户端的session
 * 
 * 当cookie被禁用时,如何使用session
 * php默认有两种session传递方式
 * <span>1</span>.cookie
 * <span>2</span>.url  如.php?sid=xxx,或者post提交方式,手动通过url添加sid
 *   url  通过设置php.ini参数,自动添加到url
 *   session.use_cookie=<span>1</span>
 *   session.use_>0
 *   session.use.trans_id=<span>1</span>
 *   然后php会自动在url加PHPSESSION=XXXX
 * 
 * <span>3</span>.文件保存sid,第一个页面把sessionid保存在文件中,第二个页面先从这个文件中取sessionid在判断是否登录
 * <span>4</span>.数据库保存sid,和文件原理相同
 * 
 * 当cookie被禁用时,浏览请求时不会再发送cookie到服务器,那么服务器就会收不到cookie=PHPSESSION的,不能使用session
 * 使用url
 * 在前一个页面开启session后,用session_id()获得session_id,然后以get/post方式传递到后一个页面
 * 第二个页面在用此sessio_id来设置 session_id(),然后开启session_start(),就可以使用前面穿过来的session
 * 注意:session_id()必须在session_start()之前调用
 * 
 *
 * 
 */

session_start();
<span>$_SESSION</span>[<span>'login'</span>] = <span>"daiyutage"</span>;
//<span>$sid</span> = session_id();
<span>echo</span><span>"<a href='b1.php'>另一个页面</a>"</span>;</code>
登入後複製
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介紹了php學習01,包含了include,進程間通訊,物件,索引,靜態方法方面的內容,希望對PHP教學有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SpringBoot Session怎麼設定會話超時 SpringBoot Session怎麼設定會話超時 May 15, 2023 pm 02:37 PM

問題發現springboot專案生產session-out逾時問題,描述下問題:在測試環境透過改動application.yaml配置session-out,經過設定不同時間驗證session-out配置生效,於是就直接設定了過期時間為8小時發布到了生產環境。然而中午接到客戶反應項目過期時間設定較短,半小時不操作就會話過期需要重複登陸。解決處理開發環境:springboot專案內建Tomcat,所以專案中application.yaml配置session-out是生效的。生產環境:生產環境發布是

session失效怎麼解決 session失效怎麼解決 Oct 18, 2023 pm 05:19 PM

session失效通常是由於 session 的生存時間過期或伺服器關閉導致的。其解決方法:1、延長session的生存時間;2、使用持久化儲存;3、使用cookie;4、非同步更新session;5、使用會話管理中介軟體。

PHP Session 跨域問題的解決方法 PHP Session 跨域問題的解決方法 Oct 12, 2023 pm 03:00 PM

PHPSession跨域問題的解決方法在前後端分離的開發中,跨域請求已成為常態。在處理跨域問題時,我們通常會涉及session的使用和管理。然而,由於瀏覽器的同源策略限制,跨域情況下預設無法共享session。為了解決這個問題,我們需要採用一些技巧和方法來實現session的跨域共享。一、使用cookie跨域共享session最常

Springboot2 session設定超時時間無效怎麼解決 Springboot2 session設定超時時間無效怎麼解決 May 22, 2023 pm 01:49 PM

問題:今天專案中遇到了一個設定時間逾時的問題,按SpringBoot2的application.properties變更一直不生效。解決方案:server.*屬性用於控制SpringBoot所使用的嵌入式容器。 SpringBoot將使用ServletWebServerFactory實例之一來建立servlet容器的執行個體。這些類別使用server.*屬性來配置受控的servlet容器(tomcat,jetty等)。當應用程式作為war檔部署到Tomcat實例時,server.*屬性不適用。它們不適用,

Redis的分享session應用如何實現簡訊登入 Redis的分享session應用如何實現簡訊登入 Jun 03, 2023 pm 03:11 PM

1.基於session實作簡訊登入1.1簡訊登入流程圖1.2實作發送簡訊驗證碼前端請求說明:說明請求方式POST請求路徑/user/code請求參數phone(電話號碼)回傳值無後端介面實作:@Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1.校驗手機號碼if

JavaScript和PHP的cookie之間有哪些差異? JavaScript和PHP的cookie之間有哪些差異? Sep 02, 2023 pm 12:29 PM

JavaScriptCookie使用JavaScriptcookie是記住和追蹤偏好、購買、佣金和其他資訊的最有效方法。更好的訪客體驗或網站統計所需的資訊。 PHPCookieCookie是儲存在客戶端電腦上的文字檔案並保留它們用於追蹤目的。 PHP透明地支援HTTPcookie。 JavaScriptcookie如何運作?您的伺服器將一些資料傳送到訪客的瀏覽器cookie的形式。瀏覽器可以接受cookie。如果存在,它將作為純文字記錄儲存在訪客的硬碟上。現在,當訪客到達網站上的另一個頁面時

五個精選的Go語言開源項目,帶你探索科技世界 五個精選的Go語言開源項目,帶你探索科技世界 Jan 30, 2024 am 09:08 AM

在現今科技快速發展的時代,程式語言也如雨後春筍般湧現。其中一門備受矚目的語言就是Go語言,它以其簡潔、高效、並發安全等特性受到了許多開發者的喜愛。 Go語言以其強大的生態系統而著稱,其中有許多優秀的開源專案。本文將介紹五個精選的Go語言開源項目,帶領讀者一起探索Go語言開源專案的世界。 KubernetesKubernetes是一個開源的容器編排引擎,用於自

使用C#中的Array.Sort函數對陣列進行排序 使用C#中的Array.Sort函數對陣列進行排序 Nov 18, 2023 am 10:37 AM

標題:C#中使用Array.Sort函數對陣列進行排序的範例正文:在C#中,陣列是一種常用的資料結構,經常需要對陣列進行排序運算。 C#提供了Array類,其中有Sort方法可以方便地對陣列進行排序。本文將示範如何使用C#中的Array.Sort函數對陣列進行排序,並提供具體的程式碼範例。首先,我們要先了解Array.Sort函數的基本用法。 Array.So

See all articles