PHP链接到本地​​文件和MAC个人计算机

时间:2012-08-03 08:57:48

标签: php

完成 PHP和HTML新手所以这可能是一个小学生错误。我正在尝试为我的工作建立一个小型Intranet网站。我希望能够显示本地文件的链接,例如Comapny手册,程序等。我的主要问题是它需要PC和MAC用户友好(Mac用户主要使用Firefox,PC使用IE)。我有一个PHP脚本在每个页面上,我可以单独为Mac或PC工作,但无法让它同时工作。例如,我希望我的代码能够查找用户操作系统并运行与显示该操作系统的本地文件链接相关的脚本部分。我相信脚本的关键部分是'file ///'如果是'file ///',它可以在IE和IE中的PC上运行。 Firefox,但它需要'文件'(没有三个)才能在Mac上运行?但这个比喻我可能错了。目前的代码如下;

<?php

//determine OS of user MAC or PC
$user_agent = getenv("HTTP_USER_AGENT"); 
if (strpos($user_agent, "Win") !== FALSE) 
$os = "Windows"; 
else if((strpos($user_agent, "Mac") !== FALSE) || (strpos($user_agent, "PPC") !== FALSE))
$os = "Mac";

if ($os == "Windows") 
{
//path to S:\One reality\Personnel\Culture & Values
$uncpath = "//servername/shared/one reality/personnel/culture & values/";

//get all files with a .pdf extension.
$files = glob($uncpath . "*.pdf");

//print each file name
foreach ($files as $file)

{
    echo "<a target=_blank href='file:///$file'>".preg_replace("/\\.[^.\\s]{3,4}$/", "",basename($file))."</a><br><br>"; 
}
}
elseif ($os == "Mac")
{
//path to S:\One reality\Personnel\Culture & Values
$uncpath = "//servername/shared/one reality/personnel/culture & values/";

//get all files with a .pdf extension.
$files = glob($uncpath . "*.pdf");

//print each file name
foreach ($files as $file)
{
    echo "<a target=_blank href='file:$file'>".preg_replace("/\\.[^.\\s]{3,4}$/", "",basename($file))."</a><br><br>"; 
}
}

?>

以上代码在PC上正常运行并打开一个新的TAB作为pdf但在Mac上代码无法运行Mac特定的'file:'而没有三个斜杠,因此不知道如何显示本地文件链接。 PS我知道在Firefox中允许本地文件链接,这是基本的编码问题。我怀疑我的IF $ os =语句中有什么问题。

如果你认为我走错了路线,我就会采取措施废弃这种做法并重新开始。

1 个答案:

答案 0 :(得分:1)

对于检测Os,您可以使用&#34; USER AGENT&#34;在PHP ...如果你想,你可以阅读this article,脚本检测操作系统,浏览器,用户代理中的所有细节....

对于您在&#34;其他&#34;中的问题,您是否尝试在&#34;其他&#34;中创建日志?部分?

elseif ($os == "Mac")
{
    print_r("mac os was found");
    // your code
}

对于你的代码,if / else不是很重要,你可以这样做:

<?php
    // First step: you detect OS plateform : 

    //determine OS of user MAC or PC and add "pathOsFile" var:
    $user_agent = getenv("HTTP_USER_AGENT"); 
    if (strpos($user_agent, "Win") !== FALSE){
        $os = "Windows"; 
        $pathOsFile = "file:///";
    }else if((strpos($user_agent, "Mac") !== FALSE) || (strpos($user_agent, "PPC") !== FALSE)){
        $os = "Mac";
        $pathOsFile = "file:":
    }

    // Second step: You display all your file...

    //path to S:\One reality\Personnel\Culture & Values
    $uncpath = "//servername/shared/one reality/personnel/culture & values/";

    //get all files with a .pdf extension.
    $files = glob($uncpath . "*.pdf");

    //print each file name
    foreach ($files as $file)
    {
        echo "<a target=_blank href='".$pathOsFile.$file."'>".preg_replace("/\\.[^.\\s]{3,4}$/", "",basename($file))."</a><br><br>"; 
    }
?>