찾다

php基础学习笔记(3)

变量:

         变量的含义:就是用于表示一个数据的代号——我们自己定义的一个名字。

         变量的定义:var  v1;  var  v2 = 2;   var v3, v4, v5;  var  v6, v7=7,  v8,  v9=”abc”;

变量的使用:

         赋值:v1 = 1;  v1 = 1+2+3;  v1 = v2 + “abc”;   v1 = v1 + 5;   v1 = v1 + v1;

         取值:m1 = v1;  //将v1的值取到,再赋值给m1

                   m2 = v1 + 5;        //将v1的值取到,再跟5相加,然后赋值给m2

                   alert( v1 );  //将v1的值取到,并交给alert去“弹出”

                   document.write( v1 );  //将v1的值取到,并交给document.write去“输出”

                   alert( “v1=” + v1);                  //取到v1的值,并和字符串“v1=”进行连接运算,然后结果被alert。

                   document.write( “v1=” + v1);

 

数据类型:

         基本类型:

                   布尔类型: boolean;   这种类型只有两个值可用: true,  false

                   字符串类型: string; 可以用单引号或双引号表示,含义相同;

                   数字类型: number

         复合类型:

                   数组: Array,  

                   对象: Object

         特殊类型:

                   null:空类型——可以给一个变量明确赋值为“null”,这就是空值,也是空类型,只是表示一个“含义”:该变量没有给有效值。

                   undefined: 未定义:此类型通常就是对应“根本就还没有给值”这种状态。

算术运算符: +  -   *   /   %

         注意点:

1,   除法(/)就是数学上的自然除,而不是C语言的除法含义。

2,   ++ 和 --  称为一元运算符,即只针对一个变量进行运算

3,   但 ++  和 – 可以在表达式(比如赋值语句)中使用,则类似同时进行了2件事:自加(或自减)和表达式本身的计算,此时他们放在变量的前面和后面有不同含义。

a)         var i = 1;   var s1 = i++;                //结果是:s1为1,i为2

b)         var i = 1;       var s2 = ++i;              //结果是:s2为2,i为2

比较运算符:>   >=  

         比较运算符用于数据的大小比较,通常是数字。其中值得注意的是:

         ==被称为“模糊相等”,即数据的内容或经过转换后的内容相等,就认为是相等。

         ===称为“严格相等”,只有数据的类型和数据的内容都相等的时候才算是相等。

                   ——从计算机的角度来说,一个数据具有两个方面:数据类型和数据值(数据内容)

逻辑运算符:只用于对bool值进行运算。

         逻辑与(  &&  ):两个数据只有都是true的时候,结果才是true

                  

         逻辑或(  ||  ):两个数据只要有一个是true,结果就是true

         逻辑非(  !  ):获取一个bool值的“相反值”

字符串运算符:

         只有一个连接运算符( +  ): 含义是“连接两个字符串”

         辨析算术运算符的加法( + ): 

                   此加号( + )两个的数据只要有一个是字符串,则都会按字符串的“连接”含义进行运算,另一如果不是字符串,则会自动转换为字符串后再进行连接运算。

 

位运算符:

         位运算符只针对数字的二进制形式进行。

         var v1 = 5;  //这是10进制,二进制其实是:101,在计算机内部其实类似这样: 00000101

         var v2 = 6;        //这是10进制,二进制其实是:110,在计算机内部其实类似这样: 00000110

按位与:

符号: &

含义:将两个二进制数字的对应位上的数字进行“与运算”,结果还是这些位运算的结果组成的二进制数所代表的值。

         解释:二进制数字进行“与运算”的规则是:

                   1 & 1 è 1

                   1 & 0 è 0

                   0 & 1 è 0

                   0 & 0 è 0

         举例:

         var v1 = 5,  v2 = 6,运算图示为:

v1=5

0

0

0

0

0

1

0

1

v2=6

0

0

0

0

0

1

1

0

v1 & v2

0

0

0

0

0

1

0

0

var v3 = v1 & v2 = 00000100(2) = 4(10)

 

按位或:

符号: |

含义:将两个二进制数字的对应位上的数字进行“或运算”,结果是这些位运算的结果组成的二进制数所代表的值。

解释:二进制数字进行“或运算”的规则是:

                   1 | 1 è 1

                   1 | 0 è 1

                   0 | 1 è 1

                   0 | 0 è 0

 

按位非:

符号: ~ //这是一个“单目运算符”

含义:将一个二进制数字的对应位上的数字进行“非运算”,结果是这些二进制数字所代表的值。

解释:二进制数字进行“非运算”的规则是:

                   ~1  è  0

                   ~0  è  1

        

按位左移运算:

         符号:

         含义: 将一个二进制数的每一个位上的数字往左边移动指定的位数,并且左边“冒”出去的就不管了(不算了),右边空出来的位上填入“0”,得到的结果就是该二进制数字所代表的值。

举例:

         var v1 = 5;var  v2 = 5

v1=5

0

0

0

0

0

1

0

1

v2= 5

0

0

0

1

0

1

0

0

var v2 = 5

 

按位左移运算:

符号: >>

         含义: 将一个二进制数的每一个位上的数字往右边移动指定的位数,并且右边“冒”出去的就不管了(不算了),左边空出来的位上填入原来的左边的数字,得到的结果就是该二进制数字所代表的值。

举例:

         var v1 = 5;var  v2 = 5 >> 2;                  运算图示为:

v1=5

0

0

0

0

0

1

0

1

v2= 5 >> 2

0

0

0

0

0

0

0

1

var v2 = 5 >> 2 = 00000001(2) = 1(10)

 

运算符其他内容:

         赋值运算符:其实就一个基本的赋值运算符: = ,其含义是将等号右边的数据放到等号左边的变量中去。

         错误的语法:

         var v1 = 1,  v2 = 2,  v3 = 5,  v4 = -2;

         v1 + v2 = v3 + v4;          //错,大错,大错特错

         复合赋值运算符: +=   -=   *=   /=   %=

         运算符的优先级 —— 太多,较为复杂,记不住,但请记住一下几条规则:

1,   要心如明镜:运算符有优先级(先后顺序)问题。

2,   括号最优先,等号(赋值)最落后。

3,   先乘除后加减

4,   想不清楚或用不明白的,使用括号来解决

5,   括号只有小括号,可以一层层嵌套。

举例:

         var  year = 2013;

         //判断闰年:一个年份能被4整除并且不能被100整除是闰年,或者能被400整除,也是闰年。

         if (  ( (year  %  4 == 0)  &&  (year % 100 != 0) )  ||  (year % 400 == 0)  )

{  documment.write(  year  + “是闰年”)  ;}

数据的传值方式:

var v1 = 10;

var v2 = v1;          //将v1中值拷贝一份,放到v2这个变量中去了——此时也可以说成“将v1的值传递给v2”

var v1 = v1 + v1;  //v1的值改变了,但并不影响v2——因为v2本身也是一个独立的变量。

document.write("
v1="  +  v1);            //20

document.write("
v2="  +  v2);            //10, 不会,40,

上述“v2 = v1”就称为“拷贝传值”——取得v1的值并拷贝一份,然后赋值给v2

var v3 = {name:"小花", age:18, edu:"大学" }; //这是一个所谓“对象”类型——其中包括了3个数据。

//操作其中的数据类似这样:

document.write("
v3这个对象的年龄为:"  + v3.age);

v3.age = 19;        //v3这个对象的age这项数据的值重复赋了一个新值,类似前面v1 = 20;

var v4 = v3;          //此时,是将v3这个变量的“内存地址”传递给v4这个变量,而v3这个对象的数据本身其实只是由该地址来获取。——这就叫做引用传值——此时,其实这两个变量是一样的数据内容,类似一个人的多个名字:真名,艺名,网名,小名

document.write("
v4这个对象的年龄为:"  + v4.age);

v3.age = 20;        //

document.write("
此时,v4这个对象的年龄为:"  + v4.age);

总结:

         在js中,基本数据类型使用 “拷贝传值”——传值的时候直接就出现了一份新的数据(当然同时也是另一个变量所代表)

         复合数据类型(数组和对象)使用“引用传值”——传值的时候只是做了一个地址指向,数据仍然只有一份,两个变量就指向这同一份数据。

 

if分支结构:

         控制结构:就是使用一定的语法来控制我们程序执行的流程——也可以叫“流程控制结构”

         分支就是“多条路径,走一条”。

最简形式

//如果此条件满足(即条件判断的结果是true),则会执行其中的语句块,否则什么也不做。

if(  条件判断语句  )         

{

         //要执行的语句块——语句块其实就是一种表示“n条语句”泛泛说法。

}

 

二选一分支形式:含义是两条路,必走一条。

if(  条件判断语句  )         

{

         //要执行的语句块1——前面条件成立时执行

}

else

{

         //要执行的语句块2——前面条件不成立时执行

}

多选一分支结构:多条路根据条件的满足情况走其中一条,但也可能一条都不走:

if(  条件判断1 )                  //如果此条件满足,则执行语句块1,然后if就结束了

{

         //语句块1

}

else  if ( 条件判断2  )    //如果条件1不满足,则判断条件2:如果满足,则执行语句块2,并结束if

{

         //语句块2

}

else  if ( 条件判断3  )    //如果条件2不满足,则判断条件3:如果满足,则执行语句块3,并结束if

{

         //语句块3

}

……………………                         //依此类推。。。。。。如果没有一个条件满足,则其实到最后什么也不会执行,if结束。

 

综合型式

if(  条件判断1 )                  //如果此条件满足,则执行语句块1,然后if就结束了

{

         //语句块1

}

else  if ( 条件判断2  )    //如果条件1不满足,则判断条件2:如果满足,则执行语句块2,并结束if

{

         //语句块2

}

else  if ( 条件判断3  )    //如果条件2不满足,则判断条件3:如果满足,则执行语句块3,并结束if

{

         //语句块3

}

…………….                                       //依此类推。。。。。。

else

{

         //最后的else语句块。       //此语句块会在前面条件都不满足的时候去执行。

}

注意:综合型式中是必有一条分支(语句块)会得到执行。

 

 

switch分支结构:

switch的分支结构整体含义跟if类似,也是表示“多条路走一条”,其使用形式:

switch (  一个变量或表达式  )          //不管是变量还是表达式,最终都代表一个“值”,我们用v1来说话

{

         case  固定值1:       //如果v1等于本值1,则会执行语句块1

                   //语句块1;

                   break;               //退出此switch结构

         case  固定值2:       如果v1不等于前面值1,则继续判断是否等于这里的值2,如果相等,执行语句2

                   //语句块2;

                   break;               //退出此switch结构

         case  ………………………………

                   。。。。。。。。。。。。。。。。。

         default:                                 //如果前面各个判断都不成立(也就是不相等),则会执行此语句块。

                                                        //注意:switch中此default语句块可以没有。

                   //默认语句块

}

 

特别注意:if语句其实是可以使用非常灵活的条件判断,比如  >  >= 

while循环结构:

         循环的基本观念:

1,   循环就是让某些程序(语句块)反复执行

2,   循环必须能够有办法停止——计算机没有自己的判断能力去决定“累了,不做了”

while循环的基本语法形式:

while  (  条件判断  )                //如果条件判断满足了,则会执行其中的语句块,否则while结束。

{

         //要执行的语句块

}        //如果此语句块执行完了,会立即回到前面while的位置继续判断。

 

上述形式只是语法上的基本要求,但,在“实用”中,通常会需要遵照如下模式:

【循环变量初始化】

while  (  【循环变量作为条件判断】 )

{

         //循环体,就是要反复执行的语句块

         【循环变量值的改变】

}

do while循环结构:

do while循环是一种会先执行一次,然后再根据判断条件来决定是否继续执行并循环的一种循环结构。

do while的实用形式如下:

【循环变量初始化】

do

{

         //循环体,就是要反复执行的语句块

         【循环变量值的改变】

} while  (  【循环变量作为条件判断】 ) ;

 

描述: 先执行do后面打括号中的语句块,然后再进行while语句中的条件判断,如果判断成立(true),则继续回到上面do后面的大括号中执行语句块,否则就结束。

 

for循环结构——推荐使用:

for循环基本形式:

for(  【循环变量初始化A】; 【循环变量作为条件判断B】; 【循环变量值的改变C】  )

{

         //循环体D,也就是要反复执行的语句块

}

for循环的执行逻辑(顺序):

A  è  Bètrue  è D  è  C  è Bètrue  è D  è C  è Bè

                ┗èfalseèfor循环结束    ┗èfalseèfor循环结束

函数

函数不是数。

函数只是一种语法结构。

函数是一种将若干行代码“包装”起来作为一个整体而使用的一种语法结构。

函数可以说是一种需要去定义并使用的语法——类似变量:需要定义,并使用之。

函数是为了完成某种特定功能且通常是“需要反复执行的功能”——函数的目的就是执行其中包起来的那些代码块(语句块)

函数是一个独立的执行空间,即其内容的代码跟函数外部的代码可以认为是“分离”的。

 

函数的定义形式

function 函数名( 形式参数1, 形式参数2, ……  )

{

         //其中要执行的语句块——函数体

}

var  s1 = parseInt(3.5);                 //3

var  s2 = parseInt(3.8);                 //3

var  s3 = parseInt(3.1);                 //3

var  s4 = parseInt(3.0);                 //3

var  s5 = parseInt(3);           //3

——parseInt其实就是一个函数——系统内部函数。此函数具有一种“神奇的能力”:将给他的一个数字转变成一个相应的整数,该整数是不大于该给定数字的最大整数。

提出需求:

         我想要求3和4两个直角边对应的斜边。

         还还想要球5和6对应的斜边,还有,7和8,还有。。。。。。。。

 

函数到底是什么?函数只是模块化编程思想的语法体现——所谓模块化编程思想就是将各种“反复要执行的任务”做出一个独立的“模块”,用的时候就“直接调用”,这样就节省了反复要写的那些代码。

 

函数的调用形式

         函数名( 实际参数1, 实际参数2, …..  );

函数调用过程

1,   首先将调用函数处的实际参数值一一对应传递给函数定义处的形式参数。

a)         形式参数一定只能是一个“变量名”,它代表一定的实际含义——根据函数功能而定。

b)         实际参数一定只能是一个“数据”(可能为直接数据或变量数据)

c)          注意:形式参数中的变量名不能使用var,也不能在其他地方定义。

2,   接着程序的执行流程进入到函数内部,按应该的流程执行函数中的“所有语句”

3,   函数内部程序执行完毕,则程序的执行流程会回到函数调用的位置。

a)         如果函数执行的任务需要有返回值,则必须使用return语句将该值返回。此时函数也自然结束了。

b)         如果一个函数不需要返回值,也是可以使用return语句的,则此时只是表明函数立即在此结束(可能并没有完全执行完所有语句)

 

函数的返回值2种情况

         有返回值:表示函数经过一定的“计算”(执行),会得出一个数据,并且会将该数据返回到调用位置(调用者)。此时就必须使用“return  某值;”来实现。——比如:老板拿一定的钱吩咐某员工买火车票,则该员工需要将该购得的火车票交回给老板。

                   特别注意:有返回值的时候,要把函数的调用当作一个值来看待。

                   一个函数有没有返回值并不是语法所决定的,而是实际需求所决定——语法只是据实际需求而变。

         无返回值:表示一个函数只是单纯地去执行里面的代码,执行完就算结束,并不需要返回一个数据给“调用者”。

 

函数的参数:完全没有语法上的规定,而是要根据应用的需求本身来决定有没有参数或有几个参数——即完成该函数的功能,应该提供哪些必要的数据,此数据也就反应为函数的形式参数,每个形式参数各代表一定的含义(数据)。

 

变量的作用域

所谓作用域就是指“有效的可用的范围”

作用域分两种:

         全局作用域:在所有程序范围内都可以使用(有效)的范围。

         局部作用域:只在特定范围内(通常是函数内部)可以使用(有效)的范围。

变量从作用域角度分两种:

         全局变量:指一个变量可以在全局范围内使用(有效)。在函数外部定义的变量就是全局变量。全局变量可以在函数外部和函数内部都能使用。

         局部变量:指一个变量只能在特定范围(通常就是函数)内部有效——通常就是定义该变量的函数内部

系统内部函数

parseInt(xxx):  将参数xxx转换为一个整数——取整操作。

         parseInt( 3 );                è  3

         parseInt( 3.8 );             è  3

parseInt( 3.1 );             è  3

parseInt( “3” );             è  3

         parseInt( “3.8” ); è  3

parseInt( “3.1” ); è  3

parseInt( “3abc” );       è  3

         parseInt( “3.8abc” );è  3

parseInt( “3.1abc” );è  3

parseInt( “abc3” );       è  NaN

         parseInt( “abc 3.8” );è  NaN

parseInt( “abc3.1” );è  NaN

parseInt( “abc” );         è  NaN

 

NaN——它是一个特殊的数字(类型为number),其含义是:Not a Number(即非数字)——此情形其实通常是指需要一个数字但提供的数据不是一个数字或不能转成一个数字的时候。——NaN这个数字跟任何数都不相等,包括它本身。

 

parseFloat(xxx):  将参数xxx转换为一个小数。

         parseFloat ( 3 );           è  3

         parseFloat ( 3.8 );                  è  3.8

parseFloat ( 3.1 );                  è  3.1

parseFloat ( “3” );                 è  3

         parseFloat ( “3.8” );              è  3.8

parseFloat ( “3.1” );              è  3.1

parseFloat ( “3abc” );  è  3

         parseFloat ( “3.8abc” );         è  3.8

parseFloat ( “3.1abc” );         è  3.1

parseFloat ( “abc3” );  è  NaN

         parseFloat ( “abc 3.8” );        è  NaN

parseFloat ( “abc3.1” );         è  NaN

parseFloat ( “abc” );    è  NaN

 

Number( xxx ):  将参数xxx转换为一个“数字”——注意跟parseFloat对比。

         Number ( 3 );                         è  3

         Number ( 3.8 );            è  3.8

Number ( 3.1 );            è  3.1

Number ( “3” );            è  3

         Number ( “3.8” );                  è  3.8

Number ( “3.1” );                  è  3.1

Number ( “3abc” );                è  NaN

         Number ( “3.8abc” );   è  NaN

Number ( “3.1abc” );   è  NaN

Number ( “abc3” );                è  NaN

         Number ( “abc 3.8” );  è  NaN

Number ( “abc3.1” );   è  NaN

Number ( “abc” );                  è  NaN

isNaN(xxx): 判断参数xxx是否是一个“非数字”——如果是一个非数字,结果是true,否则如果是数字,结果是false

         isNaN ( 3 );                            è  false

         isNaN ( 3.8 );                         è  false

isNaN ( 3.1 );                         è  false

isNaN ( “3” );                         è  false

         isNaN ( “3.8” );            è  false

isNaN ( “3.1” );            è  false

isNaN ( “3abc” );                   è  true

         isNaN ( “3.8abc” );                è  true

isNaN ( “3.1abc” );                è  true

isNaN ( “abc3” );                   è  true

         isNaN ( “abc 3.8” );               è  true

isNaN ( “abc3.1” );                è  true

isNaN ( “abc” );            è  true

 

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?Apr 24, 2025 am 12:16 AM

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?Apr 24, 2025 am 12:16 AM

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

세션 ID 란 무엇입니까?세션 ID 란 무엇입니까?Apr 24, 2025 am 12:13 AM

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?Apr 24, 2025 am 12:12 AM

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 ​​있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.

세션과 관련된 크로스 사이트 스크립팅 (XSS) 공격으로부터 어떻게 보호 할 수 있습니까?세션과 관련된 크로스 사이트 스크립팅 (XSS) 공격으로부터 어떻게 보호 할 수 있습니까?Apr 23, 2025 am 12:16 AM

세션 관련 XSS 공격으로부터 응용 프로그램을 보호하려면 다음 조치가 필요합니다. 1. 세션 쿠키를 보호하기 위해 Httponly 및 Secure 플래그를 설정하십시오. 2. 모든 사용자 입력에 대한 내보내기 코드. 3. 스크립트 소스를 제한하기 위해 컨텐츠 보안 정책 (CSP)을 구현하십시오. 이러한 정책을 통해 세션 관련 XSS 공격을 효과적으로 보호 할 수 있으며 사용자 데이터가 보장 될 수 있습니다.

PHP 세션 성능을 어떻게 최적화 할 수 있습니까?PHP 세션 성능을 어떻게 최적화 할 수 있습니까?Apr 23, 2025 am 12:13 AM

PHP 세션 성능을 최적화하는 방법 : 1. 지연 세션 시작, 2. 데이터베이스를 사용하여 세션을 저장, 3. 세션 데이터 압축, 4. 세션 수명주기 관리 및 5. 세션 공유 구현. 이러한 전략은 높은 동시성 환경에서 응용의 효율성을 크게 향상시킬 수 있습니다.

SESSION.GC_MAXLIFETIME 구성 설정은 무엇입니까?SESSION.GC_MAXLIFETIME 구성 설정은 무엇입니까?Apr 23, 2025 am 12:10 AM

THESESSION.GC_MAXLIFETIMESETTINGINSTTINGTINGSTINGTERMINESTERMINESTERSTINGSESSIONDATA, SETINSECONDS.1) IT'SCONFIGUDEDINPHP.INIORVIAINI_SET ()

PHP에서 세션 이름을 어떻게 구성합니까?PHP에서 세션 이름을 어떻게 구성합니까?Apr 23, 2025 am 12:08 AM

PHP에서는 Session_Name () 함수를 사용하여 세션 이름을 구성 할 수 있습니다. 특정 단계는 다음과 같습니다. 1. Session_Name () 함수를 사용하여 Session_Name ( "my_session")과 같은 세션 이름을 설정하십시오. 2. 세션 이름을 설정 한 후 세션을 시작하여 세션을 시작하십시오. 세션 이름을 구성하면 여러 응용 프로그램 간의 세션 데이터 충돌을 피하고 보안을 향상시킬 수 있지만 세션 이름의 독창성, 보안, 길이 및 설정 타이밍에주의를 기울일 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.