首页 > PHP,Javascript > php使用ob函数将传统注册登录页面过渡到ajax方式

php使用ob函数将传统注册登录页面过渡到ajax方式

ajax实现登录验证不仅提高了用户体验,还能够降低服务器的带宽,减小网络延迟。然而很多老站点仍然采用传统的跳转方式来实现登录和注册,像discuz部分页面不适合使用ajax方式。这时网站开发人员往往需要维护2套不同的注册登录代码,其区别只是代码输出部分:传统页面输出一段包含javascript的html代码,而ajax仅仅输出一段字符串或json。

试想:假如有这样一种机制(守门人),可以对代码的输出内容进行监测,然后根据传统注册的html输出内容进行替换为ajax输出内容,这样代码的复用率可以极大提高。

这样的功能是存在的,PHP中就有这样的守门人可以对即将输出的字符进行函数替换:

bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )

当然也可以使用

string ob_get_contents ( void )

将输出控制缓冲中的字符读入到一个变量中,然后你可以进行字符串内容替换。

案例:

检测验证码是否正确的函数在connect.php的ecmsCheckShowKey()中,其使用printerror()输出内容。

//开始捕获输出到回调函数中
ob_start("ajax_callback");


//逻辑部分,直接调用即可,不用理会输出
$code = isset($_POST['code']) ? RepPostStr($_POST['code']) : '';
ecmsCheckShowKey($keyvname, $code, 1);


//尾部关闭缓冲区,后面不要再写输出内容的代码了
ob_end_flush();

//这里是输出内容的识别与替换函数,$buffer其实是echo输出的字符串
function ajax_callback($buffer)
{
    //从ob缓存查找指定字符并替换为ajax消息
    if(strpos($buffer, '验证码不正确') !== false)
    {
        return "2";
    }
}

这样,只需给旧的PHP代码加上一层输出检测代码,即可完成到ajax过渡。



教程地址:http://blog.zhengshuiguang.com/php/ob-ajax.html

欢迎转载!但请带上文章地址^^

标签:ajax 输出控制 注册 登陆

评论已关闭