許可

2011-10-18 30 views
1

好了,這裏是我的問題(我GOOGLE了,沒有幫助):許可

我有具有textarea元素形式,並在其中我想寫這樣的東西:

<table><tr><td>123</td></tr></table> 

並點擊提交,我希望它被保存在數據庫中。

現在,我的代碼工作,如果我進入nonHTML字符,但如果我如上面輸入我得到:

Forbidden 

You don't have permission to access /xxx/sample_posteddata.php on this server. 

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 

我的猜測是,不知怎的,我的主機有一些安全enbaled來禁止呢?

我試圖從php管理界面插入確切的文字,並且工作正常:?

編輯:文件podaciEdit.php的全部源代碼:

<? 
      require_once("_dal/CredentialsManager.php"); 
      require_once("_dal/ProizvodRepository.php"); 
      $repos = new ProizvodRepository(); 

      if (isset($_POST["spremi"])){ 
       $sifra = $_POST["sifra"]; 
       $naziv = $_POST["naziv"];       
       $slika = $_POST["slika"];     
       $podaci_full = htmlspecialchars($_POST["podaci_full"]); 

       $podaci_min = $_POST["podaci_min"]; 
       $kategorija = $_POST["kategorija"]; 
       $kategorija_naziv = $_POST["kategorija_naziv"]; 

       if ($repos->updateProizvod ($sifra, $naziv, $slika, $podaci_full, $podaci_min, $kategorija, $kategorija_naziv)) 
        echo "Podaci uspješno spremljeni!"; 
       else{ 
        echo "Greška prilikom spremanja podataka!";            
       } 

       echo '<br/>Kliknite <a href="proizvodiEdit.php">ovdje</a> za povratak.'; 
      } 
      else if (isset($_GET["sifra"])){ 
       $sifra = $_GET["sifra"]; 
       $proizvod = $repos->GetProizvod($sifra); 

       if ($proizvod){       
        $sifra = $proizvod["sifra"]; 
        $naziv = $proizvod["naziv"];       
        $slika = $proizvod["slika"];       
        $podaci_full = $proizvod["podaci_full"]; 

        $podaci_min = $proizvod["podaci_min"]; 
        $kategorija = $proizvod["kategorija"]; 
        $kategorija_naziv = $proizvod["kategorija_naziv"]; 



        //$data = htmlentities($podaci_full, ENT_QUOTES, "UTF-8"); 
        echo <<<qq 
        <form id="proizvodEdit" method="POST" action="proizvodEdit.php"> 

              Podaci - tablica: (mozes resizeati po potrebi!)<br/> 
        <textarea class="podaci_full" id="podaci_full" name="podaci_full">{$podaci_full}</textarea> 
        <input type="submit" value="Spremi sve" name="spremi"/> 
        </form> 

qq; 
       } 
       else 
        echo '<h2 class="title-page">Proizvod koji tražite ne postoji.</h2>'; 

      } 
      else{ 
       echo '<h2 class="title-page">Proizvod koji tražite ne postoji.</h2>'; 
      } 
+0

沒有代碼,我們只能猜測。 –

+0

@Rob W:請看現在,我已經c/ped整個php代碼 – Nikola

+0

您是否在嘗試跨域的帖子? 使用strip_tags()http://php.net/manual/en/function.strip-tags.php –

回答

0

其實,幫助解決問題的東西是功能stripslashes

$podaci_full = stripslashes($_POST["podaci_full"]); 
0

如果您是網站的所有者可以使用htmlspecialchars()然後將輸出保存到數據庫中。如果你想讀回它並轉換爲html使用htmlspecialchars_decode()

爲了更準確的答案,你應該發佈你用來保存數據到數據庫的代碼。

+0

正如你可以看到我使用htmlspecialchars(),但沒有幫助:( – Nikola

+0

@Nikola這種方法'updateProizvod( )'對數據做進一步處理? – Nasreddine

+0

公共職能updateProizvod($代碼,$名稱,$文件,$ podaci_full,$ podaci_min,$類,$ kategorija_naziv){ \t \t \t如果($這個 - >的openConnection()){$ SQL =「UPDATE產品SET碼= '$代碼' 名稱= '$名' 圖像 '$畫面',podaci_full '$ podaci_full' podaci_min '$ podaci_min' 類別= '$類別',kategorija_naziv '$ kategorija_naziv' WHERE代碼='」。 $代碼。 ''「; \t \t \t \t回聲$代碼; \t \t \t \t $結果= mysql_query($查詢); 如果(mysql_affected_rows()函數== 1) \t \t \t \t \t返回真; \t \t \t \t其他 \t \t \t \t \t返回FALSE; \t \t \t \t \t \t \t \t} \t \t \t其他{ \t \t \t \t返回FALSE; \t \t \t} \t \t} – Nikola

0

我想你最初得到了403。這是一個文件權限相關的問題,一個Apache錯誤消息,而不是一個PHP的。嘗試直接訪問www.yourdomain.com//xxx/sample_posteddata.php並查看您是否可以訪問該文件。甚至可能嘗試GET參數。

www.yourdomain.com//xxx/sample_posteddata.php?sifra=xxx 

您應該可以訪問它。如果不是try

chmod +x /home/domain/public_html 

404是NOT FOUND的錯誤代碼。這意味着你的表單沒有正確指向你的php文件,或者其中一個包含失敗。檢查你的路徑。

+0

噓。「故宮」。 –

+0

如果我輸入在文本區域正常的文本(不包括HTML標記),然後點擊提交代碼是可以正常使用,也被保存到數據庫就好了。 – Nikola

0

由於你的HTML包含關鍵字「表」,我最好的選擇是,它可能是一個與mod_security或其他安全工具相關的問題,它過濾了SQL關鍵字,以幫助防止SQL注入。嘗試添加下面的.htaccess

SecFilterEngine Off 

如果是這樣工作的,它可能是關於mod_security的。請注意,儘管您可能無法從.htaccess文件中將其禁用。