0x01 前言

今天在对daloRADIUS的登录页和逻辑进行梳理,深深感到PHP的伟大与快捷。虽然我喜欢的是Python,但也被PHP深深地吸引住了。

其实今天我主要解决两个问题一个是选择列表(<select> 标签)的跳转与传值,另一个是session的写入问题。很多时间我都用来梳理愿编写者所写的逻辑,其实上述问题一点都不难!

0x02 选择列表的跳转与传值

0x02.1 构建列表

代码很简单,这是一个语言选择列表,如下:

0x02.2 传值

因为需要将用户选择的语言写入到session,所欲需要跟随用户名和密码一起传送到下一步,HTML代码如下:

有了前端HTML用来给用户选取,还需要后端的PHP脚本来处理用户提交的内容,脚本如下:

0x02.3 跳转

其实传值是基础的一步,然而默认语言是英语,用户首次打开页面时还没对语言作出选择,也没有语言记录的session信息,一般用户会选择自己熟悉的语言(若需要的语言存在)。选择之后的文字并不会自动更新,需要自动或手动刷新。既然要刷新,为什么不自动刷新呢?

我并不熟悉JS,经过一个下午的摸索,终于明白了其中的奥妙,代码如下:

这真的是很奇妙,当用户选择非默认的语言时,onChange 会监测到选项的改变而调用gotolocale() 函数。

gotolocale()函数是JavaScript,通过调用JS的一系列对象与属性,自动获取列表中的值,并通过编写好的格式构造链接,然后自动刷新浏览器当前的窗口。

真是太奇妙了!

其实JS和其他很多语言都类似,例如:window.location.href,window是一个函数,而location是他的一个实现方式或属性,同样的href也是location的一个实现方式或属性。

而这和Python太像了!

0x03 PHP session 的写入

其实将一个值写入session并不复杂,难得是怎样建立一个独一无二的session,代码如下:

0x04 结语

这一切都很有趣,无论是写代码还是探索的过程,都能让你进步。有问题给我留言,我会尽可能为你解答。

0x05 相关信息