2016-11-12 1 views
-2

mysql db 업데이트 중. 이 페이지는 페이지 게시물을 통해 ID를 얻습니다. 텍스트 필드 "링크"를 변경하고 제출할 수 있습니다. 제출 후 ID에 mysql 업데이트가 있고 업데이트 후에 페이지가 dbedit.php로 리디렉션되어야합니다. 하지만 난이 얻을 :PHP MYSQL 업데이트/리디렉션

헤더 정보를 수정할 수 없습니다 - 이미 나는 아무 생각도 이유가 없다

라인 (13)에 전송 헤더를? "header()"전에 사용자에게 출력을 찾을 수 없습니다. 내 실수는 어디 갔어?

<html> 
<body> 
<?php 
include('config.php'); 
if(isset($_GET['id'])) 
{ 
    $id=$_GET['id']; 
    if(isset($_POST['submit'])) 
    { 
     $Links=$_POST['Links']; 
     $query3=mysqli_query($link, "update posts set Links='$Links' where id='$id'"); 
     if($query3){ 
      header('location:dbedit.php'); 
     } 
    } 
    $query1=mysqli_query($link, "select * from posts where ID='$id'"); 
    $query2=mysqli_fetch_array($query1);  
?> 
<form method="post" action=""> 
Name:<input type="text" name="Links" value="<?php echo $query2['Links'];?>"/> 
<input type="submit" name="submit" value="update" /> 
</form> 
<?php 
mysqli_close($link); 
}; 
?> 
</body> 
</html> 
+0

내가 dbedit.php 내가이 쿼리가 실패 할 경우에 언급 얻을 페이지입니다 생각하는 건가요? 잠재적 인 보안 위험, 특히 $ _GET 변수를 이스케이프 처리하지 않은 것처럼 보입니다. – Xorifelse

+0

dbedit.php가 쿼리 실패 페이지가 아닙니다. 그것은 "업데이트가 완료되었습니다"페이지입니다. 보안 위험은 아무런 문제가 없어야합니다. 로컬 호스트 실행 도구 일뿐입니다. – swapfile

답변

1

헤더 기능을 사용하는 경우 헤더 기능을 사용하기 전에 출력이 없어야합니다. 귀하의 경우, 왜 당신에게 오류를 보여주는 헤더 기능 전에 사용됩니다.

이 문제가 발생한 이유를 자세히 알고있는 URL을 확인하십시오. How to fix "Headers already sent" error in PHP

변경 다음과 같은 방법으로 코드 :

<?php 
     include('config.php'); 
     if(isset($_GET['id'])) 
     { 
      $id=$_GET['id']; 
      if(isset($_POST['submit'])) 
      { 
       $Links=$_POST['Links']; 
       $query3=mysqli_query($link, "update posts set Links='$Links' where id='$id'"); 
       if($query3){ 
        header('location:dbedit.php'); 
       } 
      } 
      $query1=mysqli_query($link, "select * from posts where ID='$id'"); 
      $query2=mysqli_fetch_array($query1);  
     ?>  
    <html> 
     <body> 

     <form method="post" action=""> 
     Name:<input type="text" name="Links" value="<?php echo $query2['Links'];?>"/> 
     <input type="submit" name="submit" value="update" /> 
     </form> 
     <?php 
     mysqli_close($link); 
     }; 
     ?> 
     </body> 
     </html> 
+0

고마워요! 그게 전부 야. – swapfile

+0

당신은 오신 것을 환영합니다. – jewelhuq

1

공백과 함께 header() 리디렉션, 그것 htmlbody 태그 전에 출력이 있습니다. header()html 태그를 포함하여 모든 항목 앞에 올 필요가 있습니다.

+0

흠 ... 어떻게 해결할 수 있습니까? – swapfile

+0

코드 블록을 파일의 맨 처음에 넣으십시오. 공백을 포함하여 다른 모든 것들보다 먼저 – Bradley4