php文件函数windows系统编码bug

最近在windows的php环境突然发现windows的php的文件函数文件名都是使用的GBK编码没有使用utf-8编码。于是需要手动转换一下编码。当然了linux系统都是使用的utf-8编码就没有这些问题啦。

我写了一些常用的函数的包装,供大家方便使用

$Server_System;
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    $Server_System = 'windows';//filename will be changed into utf-8 in windows
} else {
    $Server_System = 'linux';
}

function my_file_exists($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return file_exists($path);
}

function my_file_get_contents($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return file_get_contents($path);
}

function my_filemtime($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return filemtime($path);
}

function my_file_put_contents($path,$data)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return file_put_contents($path,$data);
}

function my_is_dir($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }

    return is_dir($path);
}

function my_md5_file($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    
    return md5_file($path);
}

function my_sha1_file($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    
    return sha1_file($path);
}

windows登陆机制扩展

windows的登陆机制非常复杂,微软官方也没有太多的公布这些细节,网络上面有一些讨论,然而这些讨论对于那些不想研究windows实现原理的人没有太大的价值。其实微软官方提供了一种机制来实现第三方的交互式登录认证。

首先来科普一下windows的登陆机制

你可以看这篇文章来获得有关xp的 登陆机制的资料http://blog.csdn.net/chenyujing1234/article/details/7947114

至于windows vista或者以后的操作系统则使用了另外的方式进行验证,这种方式有点类似于现在互联网上面流行的身份认证,这种机制被称为 ”Credential Provider“,可以参考这篇文章来获得有关资料http://blog.csdn.net/patdz/article/details/7522195

对于win8和8.1,似乎认证方式有一些变化,总之如果有时间会尽快的从可靠的地方获取并且更新出他。

现在我们掌握了这些机制也就可以利用他们来自定义我们的windows认证以及启动界面啦

这是一个gina.dll的编写实例:http://blog.csdn.net/yiyefangzhou24/article/details/6838236

对应的”Credential Provider“版本的:http://download.csdn.net/detail/patdz/4265512

这样基本上就能自定义绝大多数版本的windows的启动认证啦,实现什么网吧计费之类的也就是可以的了