2013-07-05 115 views
3

我構建了一個使用所見即所得編輯器(TinyMCE)的博客。你創建一篇博客文章,發佈它,並將其存儲在MySQL數據庫中。然後該帖子被另一頁面拉出。我確信大部分人都是簡單的東西。PHP從數據庫中刪除的字符串中刪除

它在我的測試服務器上運行良好,因此我將它切換到另一臺服務器,現在圖像無法在視圖博客頁面上正常瀏覽。

我檢查了img的URL,它看起來像這樣。

<img src="\"/img/parking1.png\"" alt="\"\""> 

我還沒有寫一個方法來做到這一點,但它似乎是逃避()引號。

它沒有在我的最後一臺服務器上這樣做,並且工作正常,所以我假設它是一個服務器(託管)安全事物。

我試圖刪除它們,空白替換它們:

$cleanpost = str_replace('\', '',$post); 

哪裏$post是從數據庫中拉數據。這是糟糕的語法,並且在引號之間放置反斜槓將會打破它。

誰能告訴我該怎麼做?或者我甚至認爲這是我應該做的事情?

非常感謝。

編輯:爲博客文章 PHP代碼中插入

if (isset($_POST['blogpost'])) { 


    $nowdate = new DateTime('NOW'); 
    $thisdate = $nowdate->format('Y-m-d H:i:s'); 
    $post = $_POST['blogpost']; 
    $title = $_POST['posttitle']; 
    $status = 'yes'; 




    try { 

     $conn = new PDO('mysql:host=host;dbname=dbname', $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $conn->prepare('INSERT INTO blogposts(posttext, thisdate, posttitle, active) VALUES(:post, :postdate, :posttitle, :status)'); 
     $stmt->execute(array(
      ':post'=>$post, ':postdate'=>$thisdate, ':posttitle'=>$title, ':status'=>$status 
     )); 

     //echo $stmt->rowCount(); // 1 
    } catch(PDOException $e) { 
     echo 'Error: ' . $e->getMessage(); 
     echo 'died'; 


    }; 

} 
+0

嘗試2個反斜槓!另外,我認爲你應該刪除'\「而不是\\ – HamZa

+0

'stripslashes()'是你正在尋找的函數,但是最好是你顯示你的代碼以便從數據庫中插入和檢索。它正確地你不應該這樣做。 – Barmar

+1

@HamZa工作。:)謝謝。 – TryingToBeZen

回答

2

試試這個

$cleanpost = str_replace('\"', '',$post); 
+0

謝謝老兄。 :) – TryingToBeZen

+0

這是值得研究如何進入數據庫首先。可能[魔術引號](http://php.net/manual/en/security.magicquotes.php)由於某種原因而被打開。 – tadman

3

您可以使用stripslashes()反轉義的字符串。

$post = stripslashes($post); 
+0

+1感謝您的全力幫助。 :) – TryingToBeZen