권한

2011-10-18 3 views
1

이 좋아, 그래서 여기 내 (내가 봤 적이없고 도움) 문제입니다 다음과 같이 작성하고 싶습니다.권한

<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

는 @ 롭 W : 지금 참조하십시오, 나는/C 전체 PHP 코드 – Nikola

+0

당신이 크로스 도메인 게시물을하려고를 PED거야? 사용 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

당신은하지만 @Nikola이 방법'updateProizvod합니까 – Nikola

+0

전혀 도움 :(에() 내가 반드시 htmlspecialchars (사용 볼 수)'데이터에 대한 추가 처리 작업을 수행 하시겠습니까? – Nasreddine

+0

공공 기능 updateProizvod ($ 코드, $ 이름, $ 파일 $의 podaci_full, $의 podaci_min, $ 카테고리, $의 kategorija_naziv) { \t \t \t 경우 ($ this-> 대해서 openConnection()) { $의 SQL은 = "UPDATE 제품 SET 코드 = '$ 코드'이름 = '$ 이름'이미지 '$ 그림', podaci_full '$ podaci_full'podaci_min '$ podaci_min'카테고리 = '$ 카테고리', kategorija_naziv '$ kategorija_naziv'코드 = ' ". $ 코드입니다. '' '; \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 반환 거짓; 거짓 \t \t \t \t \t \t \t \t 다른} \t \t \t { \t \t \t \t 반환; 당신은 당신의 자료를 제대로 탈출하지 않는 @nikola \t \t \t} \t \t} – Nikola

0

처음에는 403이 나온 것 같습니다. 이 파일 권한 관련 문제, 아파치 오류 메시지가 아닌 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 경우 오류 코드입니다. 그것은 양식이 PHP 파일을 올바르게 가리 키지 않았거나 포함 중 하나가 실패 함을 의미합니다. 경로를 확인하십시오. 당신의 HTML 키워드 "표"를 포함하고 있기 때문에

+0

쉿. "금지". 나는 텍스트 영역에 일반 텍스트 (HTML 태그)를 입력하고 제출을 클릭하면 코드가 완벽하게 작동한다 –

+0

합니다. 또한 잘 DB를에 저장됩니다. – Nikola

0

, 내 가장 좋은 방법은 아마에 mod_security 또는 SQL 주입을 방지하기 위해, SQL 키워드를 필터링 다른 보안 도구와 관련된 문제라고 할 것이다. 당신의 .htaccess에 아래 추가하십시오 :

SecFilterEngine Off 

가이 방식으로 작동하는 경우가 mod_security와 대한 아마. 파일 .htaccess에서 사용 중지하지 못할 수도 있습니다.