簡體   English   中英

PHP如何防止PHP轉義html fopen fwrite

[英]PHP how to prevent PHP from escaping html fopen fwrite

我正在嘗試開發一個使我能夠更輕松地創建HTML文檔的應用程序。

除了我在寫入文件時添加反斜杠外,它幾乎可以正常工作。

<a href=\"google.com\">google</a>

知道如何阻止它執行此操作嗎?

我懂了! 如果我在將其寫入文件之前將stripslashes()寫入文件,它將在沒有\\的情況下保存/創建文件。感謝您的所有幫助!

可能是因為魔術引號已打開,如果您不想每次都使用反斜杠,則應在php.ini文件或htaccess文件中將其禁用,例如:

php.ini文件中:

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

或在.htaccess文件中:

php_flag magic_quotes_gpc Off

或直接在您的代碼中禁用它們:

if (get_magic_quotes_gpc()) {
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process)) {
        foreach ($val as $k => $v) {
            unset($process[$key][$k]);
            if (is_array($v)) {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            } else {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}

來源: http//php.net/manual/en/security.magicquotes.disabling.php

如果使用單引號字符串,則不應使用帶反斜杠的轉義雙引號,因為它們是按字面解釋的。

文檔

注意:與雙引號和heredoc語法不同,特殊字符的變量和轉義序列在單引號引起來的字符串中不會擴展。

此行為是由PHP棄用的Magic Quotes指令引起的,您的仍被激活,因為在5.4之前的任何默認PHP安裝中默認情況下都是如此。 除非您指定長度參數,否則fwrite將查看magic-quotes-runtime以查看它是否轉義。

將其關閉,您可以放置

php_flag magic_quotes_gpc Off

.htaccess文件中,您需要使用apache DSO允許此選項

或者您可以在php.ini中禁用它

如果由於共享主機或其他原因而無法執行上述任何一項操作,請使用代碼解決。

function write($resource,$string,$length)
    if (get_magic_quotes_gpc()) {
        $string = stripslashes($string);

    }
    return fwrite($resource, $string,$length);
}

我有一個類似的問題,但是有一個$ _POST ['body']變量。 這對我有用:

str_replace("\\", "", $_POST['body']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM