PHP 학습 01
<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>
위 내용은 인클루드, 프로세스 간 통신, 객체, 인덱스, 정적 메소드 등 PHP 학습 01을 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











springboot 프로젝트 프로덕션 세션아웃 시간 초과에서 문제가 발견되었습니다. 문제 설명: 테스트 환경에서는 세션아웃 구성이 적용되었는지 확인하기 위해 application.yaml을 변경하여 세션아웃을 구성했습니다. , 프로덕션 환경에 도착하면 만료 시간이 8시간으로 직접 설정되었습니다. 그런데 정오에 고객으로부터 프로젝트 만료 시간이 짧게 설정되어 있다는 피드백을 받았습니다. 30분 동안 아무 작업도 수행하지 않으면 세션이 만료되어 반복 로그인이 필요합니다. 개발 환경 처리 문제를 해결합니다. springboot 프로젝트에는 Tomcat이 내장되어 있으므로 프로젝트의 application.yaml에 구성된 세션 아웃이 효과적입니다. 프로덕션 환경: 프로덕션 환경 릴리스는 다음과 같습니다.

세션 실패는 일반적으로 세션 수명 만료 또는 서버 종료로 인해 발생합니다. 해결 방법은 다음과 같습니다. 1. 세션 수명을 연장합니다. 3. 쿠키를 사용합니다. 4. 세션 관리 미들웨어를 사용합니다.

PHPSession의 도메인 간 문제 해결 프런트엔드와 백엔드 분리 개발에서 도메인 간 요청이 표준이 되었습니다. 도메인 간 문제를 처리할 때 일반적으로 세션 사용 및 관리가 포함됩니다. 그러나 브라우저 원본 정책 제한으로 인해 기본적으로 도메인 간에 세션을 공유할 수 없습니다. 이 문제를 해결하려면 도메인 간 세션 공유를 달성하기 위한 몇 가지 기술과 방법을 사용해야 합니다. 1. 도메인 간 세션을 공유하기 위한 쿠키의 가장 일반적인 사용

문제: 오늘 프로젝트에서 설정 시간 초과 문제가 발생했으며 SpringBoot2의 application.properties에 대한 변경 사항이 적용되지 않았습니다. 해결 방법: server.* 속성은 SpringBoot에서 사용하는 내장 컨테이너를 제어하는 데 사용됩니다. SpringBoot는 ServletWebServerFactory 인스턴스 중 하나를 사용하여 서블릿 컨테이너의 인스턴스를 생성합니다. 이러한 클래스는 server.* 속성을 사용하여 제어되는 서블릿 컨테이너(tomcat, jetty 등)를 구성합니다. 애플리케이션이 Tomcat 인스턴스에 war 파일로 배포되면 server.* 속성이 적용되지 않습니다. 적용되지 않습니다.

1. 세션 기반 SMS 로그인 구현 1.1 SMS 로그인 흐름도 1.2 SMS 인증코드 전송 구현 프런트엔드 요청 설명: 요청 방법 설명 POST 요청 경로/사용자/코드 요청 매개변수 전화(전화번호) 반환 값 백엔드 인터페이스 없음 구현: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1인 경우 휴대폰 번호를 확인합니다.

JavaScript쿠키 JavaScript 쿠키를 사용하는 것은 선호도, 구매, 커미션 및 기타 정보를 기억하고 추적하는 가장 효과적인 방법입니다. 더 나은 방문자 경험이나 웹사이트 통계를 위해 필요한 정보입니다. PHPCookieCookies는 클라이언트 컴퓨터에 저장되고 추적 목적으로 보관되는 텍스트 파일입니다. PHP는 HTTP 쿠키를 투명하게 지원합니다. JavaScript 쿠키는 어떻게 작동하나요? 귀하의 서버는 쿠키 형태로 방문자의 브라우저에 일부 데이터를 보냅니다. 브라우저는 쿠키를 허용할 수 있습니다. 존재하는 경우 방문자의 하드 드라이브에 일반 텍스트 기록으로 저장됩니다. 이제 방문자가 사이트의 다른 페이지에 도달하면

오늘날 급속한 기술 발전의 시대에 프로그래밍 언어는 비가 내린 뒤 버섯처럼 솟아오르고 있습니다. 많은 주목을 받고 있는 언어 중 하나가 바로 Go 언어인데, 단순성, 효율성, 동시성 안전성 등 다양한 기능으로 많은 개발자들에게 사랑을 받고 있습니다. Go 언어는 뛰어난 오픈 소스 프로젝트가 많이 포함된 강력한 생태계로 유명합니다. 이 기사에서는 선택된 Go 언어 오픈 소스 프로젝트 5개를 소개하고 독자가 Go 언어 오픈 소스 프로젝트의 세계를 탐색하도록 안내합니다. KubernetesKubernetes는 자동화를 위한 오픈 소스 컨테이너 오케스트레이션 엔진입니다.

제목: Array.Sort 함수를 사용하여 C#에서 배열을 정렬하는 예 텍스트: C#에서는 배열이 일반적으로 사용되는 데이터 구조이므로 배열 정렬 작업이 필요한 경우가 많습니다. C#에서는 배열을 편리하게 정렬할 수 있는 Sort 메서드가 있는 Array 클래스를 제공합니다. 이 문서에서는 C#에서 Array.Sort 함수를 사용하여 배열을 정렬하는 방법을 보여주고 구체적인 코드 예제를 제공합니다. 먼저 Array.Sort 함수의 기본 사용법을 이해해야 합니다. 배열.그래서
