php-這個函數中按位異或操作的作用?

來源:互聯網
上載者:User
關鍵字 php
php

 function file_mode_info($file_path){    /* 如果不存在,則不可讀、不可寫、不可改 */    if (!file_exists($file_path))    {        return false;    }    $mark = 0;    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')    {        /* 測試檔案 */        $test_file = $file_path . '/cf_test.txt';        /* 如果是目錄 */        if (is_dir($file_path))        {            /* 檢查目錄是否可讀 */            $dir = @opendir($file_path);            if ($dir === false)            {                return $mark; //如果目錄開啟失敗,直接返回目錄不可修改、不可寫、不可讀            }            if (@readdir($dir) !== false)            {                $mark ^= 1; //目錄可讀 001,目錄不可讀 000            }            @closedir($dir);            /* 檢查目錄是否可寫 */            $fp = @fopen($test_file, 'wb');            if ($fp === false)            {                return $mark; //如果目錄中的檔案建立失敗,返回不可寫。            }            if (@fwrite($fp, 'directory access testing.') !== false)            {                $mark ^= 2; //目錄可寫可讀011,目錄可寫不可讀 010            }            @fclose($fp);            @unlink($test_file);            /* 檢查目錄是否可修改 */            $fp = @fopen($test_file, 'ab+');            if ($fp === false)            {                return $mark;            }            if (@fwrite($fp, "modify test.\r\n") !== false)            {                $mark ^= 4;            }            @fclose($fp);            /* 檢查目錄下是否有執行rename()函數的許可權 */            if (@rename($test_file, $test_file) !== false)            {                $mark ^= 8;            }            @unlink($test_file);        }        /* 如果是檔案 */        elseif (is_file($file_path))        {            /* 以讀方式開啟 */            $fp = @fopen($file_path, 'rb');            if ($fp)            {                $mark ^= 1; //可讀 001            }            @fclose($fp);            /* 試著修改檔案 */            $fp = @fopen($file_path, 'ab+');            if ($fp && @fwrite($fp, '') !== false)            {                $mark ^= 6; //可修改可寫可讀 111,不可修改可寫可讀011...            }            @fclose($fp);            /* 檢查目錄下是否有執行rename()函數的許可權 */            if (@rename($test_file, $test_file) !== false)            {                $mark ^= 8;            }        }    }    else    {        if (@is_readable($file_path))        {            $mark ^= 1;        }        if (@is_writable($file_path))        {            $mark ^= 14;        }    }    return $mark;}

$mark ^= 1;
$mark ^= 2;
$mark ^= 4;
$mark ^= 8;
等等這幾個操作的作用是什嗎? 為什麼要這麼做?
而且裡面的判斷都用 !== (非全等),這麼做的作用是什嗎?
為什麼不用普通的不等於 != ?

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.