2013-02-23 3 views
0

간단한 코멘트 시스템을 만들고 있습니다. 페이지를 다시로드하면 처음 삽입 된 주석이 복제됩니다. request_uri로 리디렉션 할 헤더를 사용해야합니까? 나는 그것을했고 헤더 루프가되었다. 유 $ 입력을 표시하는 방법을 사전에 감사행마다 페이지 새로 고침이 중복됩니다.

public function comment($username, $comment, $code) 
     { 
      if(!empty($username) && !empty($comment) && !empty($code)) 
      { 
       $date =date("Y-m-d H:i:s"); 
       if($insert = $this->db->prepare("INSERT INTO reviews (username, comment, time) VALUES (?, ?, ?)")) 
       { 
        $insert->bind_param('sss', $username, $comment, $date); 
        $insert->execute(); 
       } 
       else 
       { 
        echo "iets gaat mis met inserten"; 
       } 
      } 
      else 
      { 
       echo "missing fields"; 
      } 
     } 

public function retrieve() 
       { 
        if($retrieve = $this->db->query("SELECT username, comment, time FROM reviews ORDER BY id LIMIT 0, 5")) 
        { 
          while($row = $retrieve->fetch_assoc()) 
          { 
           $output .= '<div class="comment">'; 
           $output .= '<div class="name">'.$row['username'].'</div>'; 
           $output .= '<div class="date">Added at '.date('H:i \o\n d M Y',strtotime($row['time'])).'"></div>'; 
           $output .= '<p>'.$row['comment'].'</p>'; 
           $output .= '</div>'; 
          } 
          return $output; 

        } 

       } 

<?php 
$reizen= new reizen; 
echo $reizen->retrieve(); 
?> 
<script type="text/javascript"> 
</script> 
<?php 
$output = ''; 
$output .= '<div id="contactform">'; 
$output .= '<form name="form" id="form" action="index.php?page=review" method="post">'; 
$output .= '<label>Name:</label>'; 
$output .= '<input type="text" name="username" />'; 
$output .= '<label>comment</label>'; 
$output .= '<textarea name="comment" rows="20" cols="20"></textarea>'; 
$output .= '<label><img src="captcha.php"></label>'; 
$output .= '<input type="text" name="code">'; 
$output .= '<input type="submit" class="submit" name="submit" value="Send message" />'; 
$output .= '</form>'; 
$output .= '</body>'; 
$output .= '</div>'; 
$output .= '</html>'; 
echo $output; 
if(isset($_POST['submit'])) 
{ 
    $username = $_POST['username']; 
    $comment = $_POST['comment']; 
    $code = $_POST['code']; 
    $reizen->comment($username, $comment, $code); 
} 
?> 
+1

출력으로 무엇을하고 있습니까? 그것은 내게 프런트 엔드 문제처럼 들리네 .... – Brad

+0

코멘트를 삽입 한 직후에 페이지를 다시로드하거나 페이지를 다시로드 할 때마다 이런 일이 발생합니까? – xpy

+0

내가 페이지를 새로 고침 할 때마다 – user2065001

답변

-1

당신은 우리에 힌트를 줄 수 있습니까?

또한 게시자가 HTML 복제를 의미하거나 양식에 여전히 동일한 댓글이 포함되어 있습니까? 만약 그렇다면 attr autocomplete = "false"를 추가하여 의견을 제출하는 입력을 피할 수 있습니다.

데이터베이스가 복제되기 때문에. 그런 다음 워크 플로를 구성 해주십시오. 사촌 당신이 두 번 코멘트 기능을 호출하는 곳 ..

좋은 생각은 사용자가 동일한 게시물에 대해 똑같은 코멘트를 두 번 말할 수 없도록 username, post_id, comment에 uniqure 키를 두는 것입니다. 당신에게 현재 상황에 따라,이 uniqure 열쇠는 언제든지 ur 코드가 동일한 코멘트를 두 번 다시 보내려고 할 때 오류를 발생시킬 것이고, 그 일이 일어 났을 때 id를 할 수있을 것입니다. 또한 문제가 발생할 때 u는 오류를 발생 돕기 위해 고유 키 트릭 -do


를 debuging을위한


.

-u 코멘트() 페이지의 끝에서 기능 ..와 PIN이 functinon를 호출 BEFORE IT

그래서 u는 당신이 유 새로 고침하지 않으면 표시되지 않습니다 (즉, 주석을 추가 한 후 기존의 모든 의견을로드한다 무엇을) 그 이동을 해결하기 위해 if($_POST['submit']) 데이터베이스에서 모든 의견을 호출하기 전에

+0

편집 한 행은 데이터베이스 자체에 복사됩니다. – user2065001

+0

그 다음 삽입이 문제가됩니다. 더 많은 도움을 제공 할 수 있도록 구멍 코드를 표시하십시오. – Zalaboza

+0

방금 ​​편집했습니다. – user2065001

관련 문제