我試圖找到解決方案,因爲2小時後阻止超鏈接到客人,但沒有運氣。PHP:阻止所有超鏈接給客人
正在從數據庫加載文本內容並使用HTML格式進行呈現。所有鏈接用戶添加純http://格式或錨標記它會自動轉換爲鏈接。
我想隱藏/阻止來賓用戶的所有超鏈接。我需要你的幫助......真的卡住了。
我從這個數組的數據庫中獲取內容$data['content']
這是html內容。
我試圖找到解決方案,因爲2小時後阻止超鏈接到客人,但沒有運氣。PHP:阻止所有超鏈接給客人
正在從數據庫加載文本內容並使用HTML格式進行呈現。所有鏈接用戶添加純http://格式或錨標記它會自動轉換爲鏈接。
我想隱藏/阻止來賓用戶的所有超鏈接。我需要你的幫助......真的卡住了。
我從這個數組的數據庫中獲取內容$data['content']
這是html內容。
沒有看到你的代碼或更多地瞭解上下文,這裏是值得學習和適用於您的情況:把這個代碼放到一個名爲demo.php或類似的東西,並在命令行中運行:
<?php
$text_with_links[] = 'http://example.com';
$text_with_links[] = '<a href="http://example.com">Link</a>';
echo "User text:\n\n";
foreach ($text_with_links as $text_example) {
echo "\t${text_example}\n";
}
echo "\n\n";
echo "Use text filtered by htmlspecialchars:\n\n";
foreach ($text_with_links as $text_example) {
echo "\t" . htmlspecialchars($text_example) . "\n";
}
echo "\n\n";
echo "Use text filtered by strip_tags:\n\n";
foreach ($text_with_links as $text_example) {
echo "\t" . strip_tags($text_example) . "\n";
}
您應該看到這樣的事情:
$ php demo.php
User text:
http://example.com
<a href="http://example.com">Link</a>
Use text filtered by htmlspecialchars:
http://example.com
<a href="http://example.com">Link</a>
User text filtered by strip_tags:
http://example.com
Link
這證明了使用兩個核心PHP函數,用htmlspecialchars和用strip_tags。閱讀文檔,這些在這裏:
注意如何沒有這些功能進行更改用戶條目 「http://example.com」。當你說「所有鏈接用戶添加純http://格式...它會自動轉換爲鏈接。」,我懷疑有一個過程發生在你正在離開的中間。只需將字符串「http://example.com」打印到頁面上,通常不會將其呈現爲HTML定位標記。
正如其他人的評論,讓您應該遵循最好的幫助stackoverflow.com指引,並提供所有相關細節和內容,以您的問題,並打印您到目前爲止已經試過代碼,以便其他人可以糾正,也更好地瞭解你正在處理的事情。
請提一下您正在使用的框架或CMS(因爲我強烈懷疑您正在使用它)。 Drupal,Joomla,Wordpress等
目前,您可以簡單地從使用str_replace() - http://www.php.net/manual/en/function.str-replace.php從數據庫中檢索的所有字符串中刪除「http://」。但這不是最好的解決方案。我認爲發生的事情是,您正在使用的軟件將「http:// format」文本(用於您的文字)轉換爲HTML定位標記。 例如,如果您使用的是Drupal並提供了客人有權訪問的網絡表格,則應將格式從「完整HTML」更改爲更有限的格式,否則您允許匿名用戶將HTML輸入到數據庫中。 您可能根本不需要PHP代碼解決方案。最好的辦法是檢查所提供的訪客用戶所見即所得編輯器上的控件,並確保模板設置正確。
此外,你應該谷歌「防止XSS攻擊PHP」,並「防止SQL注入PHP」。如果你想擁有一個安全的網站,這是你必須做的研究。
好運。如果你提供更多的細節,我和其他人可以給你更具體的幫助。
編輯:打印什麼,我在評論中寫道下方,以方便您閱讀:
$content_tags_stripped = strip_tags($data['content']);
OR
$content_no_htmlspecialchars = htmlspecialchars($data['content']);
然後使用這些變量在你的代碼,而不是$數據['內容「]。
但請研究一下我寫的休息,當你有時間。我想你可以通過這種方式找到一個更令人滿意的解決方案。祝你好運。
我正在從數據庫中的內容與此'$數據[「內容」]'現在我搞不清我怎麼混淆如何檢索URL和超鏈接,所以我可以按照你的代碼。 – Artist
簡單的答案是這樣的: 「$ content_tags_stripped =用strip_tags($數據[ '內容']);」或「$ content_no_htmlspecialchars = htmlspecialchars($ data ['content']);」。在代碼中執行此操作後,請使用$ content_tags_stripped或$ content_no_htmlspecialchars而不是$ data ['content']。但是,請在你有時間的時候研究我寫的內容,因爲這是非常重要的。祝你好運。 – David
我將最後一條評論中所寫的內容複製到原始答案的底部,以便閱讀和/或理解。 – David
還有,你stuckness – dbf
的所有那些小時後試圖如果它是PHP,只是不輸出超鏈接,或只輸出的文本爲純文本。等voilá,他們不再可點擊。 – GolezTrol
我在下面寫了一個一般答案。只是想在這裏發表評論,您應該改正問題標題中的錯字。 「hyperlin」應該是「超鏈接」。在屬,你應該認真考慮增加更多的信息,你的問題(見下文),並在此之後,改變標題類似,「PHP:如何防止用戶在Drupal進入完整的HTML鏈接」(或任何系統,你是使用)。 – David