· 作者:laruence(http://www.laruence.com/) · 本文地址:http://www.laruence.com/2008/11/07/581.html · 转载请注明出处 主要探讨了PHP的大变量的生成过程。另外如果你注意到, 当在表单中提交的input的name中如果有点号的时候, 在PHP中会自动把点号处理成下划线。并且你很想知道这是为什么,在什么时候发生的? 呵呵,本文也就这个问题做了回答。 首先明确一个问题,PHP的变量名中是不能包含点号的。 但是为了处理表单中的点号命名,PHP就会自动把点号(.)转换成下划线(_)。 要知道PHP是怎么处理的,首先我们要了解,
PHP的GET/POST等大变量生成过程 - 凌众科技
快速业务通道
PHP的GET/POST等大变量生成过程
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-26
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
GET,
PHP的GET/POST等大变量生成过程 - 凌众科技
快速业务通道
PHP的GET/POST等大变量生成过程
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-26
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
POST,
PHP的GET/POST等大变量生成过程 - 凌众科技
快速业务通道
PHP的GET/POST等大变量生成过程
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-26
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
COOKIE等变量的构造过程。 在每个请求到来以后,apache处理到response阶段的时候, 会将控制权交给PHP模块, PHP模块会在处理请求之前首先间接调用php_request_startup (具体调用序列是send_php -> apache_php_module_main ->php_request_startup, 关于这部门可以参看我前面的文章(PHP Life Cycle) , 在php_request_startup中: int php_request_startup(TSRMLS_D) { int retval=SUCCESS;
#if PHP_SIGCHILD signal(SIGCHLD,sigchld_handler); #endif if (php_start_sapi()==FAILURE) { return FAILURE; } php_output_activate(TSRMLS_C); sapi_activate(TSRMLS_C); php_hash_environment(TSRMLS_C);
zend_try { PG(during_request_startup)=1; php_output_activate(TSRMLS_C); if (PG(expose_php)) { sapi_add_header(SAPI_PHP_VERSION_HEADER,sizeof(SAPI_PHP_VERSION_HEADER)-1,1); } } zend_catch { retval=FAILURE; } zend_end_try();
return retval; }
注意其中的php_hash_environment(TSRMLS_C)函数调用 , 这个函数就是在请求处理前, 初始化请求相关的变量的函数。 这个函数定义在: main/php_variables.c中 , 有兴趣的可以看看: int php_hash_environment(TSRMLS_D) { char*p; unsigned char _gpc_flags[5]={0,0,0,0,0}; zend_bool jit_initialization=(PG(auto_globals_jit)&& !PG(register_globals)&& !PG(register_long_arrays)); struct auto_global_record { char*name; uint name_len; char*long_name; uint long_name_len; zend_bool jit_initialization; } auto_global_records[]={ { "_POST",sizeof("_POST"),"HTTP_POST_VARS",sizeof("HTTP_POST_VARS"),0 }, { "_GET"
|