2016-11-12 9 views
-2

Aktualisierung von MySQL db. Diese Seite erhält eine ID per Seitenpost. Das Textfeld "Links" konnte geändert und übermittelt werden. Nach dem Senden gibt es ein mysql Update auf der ID und nach dem Update sollte die Seite auf dbedit.php umgeleitet werden. aber ich bekomme ein:PHP MYSQL Update/Redirect

Kann nicht modify header information - headers already on line gesendet 13.

Ich habe keine Ahnung, warum? und kann keine Ausgabe vor dem "header()" für den Benutzer finden. Wo ist mein Fehler?

<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

Bin ich dbedit.php ist eine Seite zu übernehmen, wo ich genannt bekommen, wenn die Abfrage fehlschlägt? Scheint wie ein potenzielles Sicherheitsrisiko, vor allem nicht entkommen $ _GET-Variablen. – Xorifelse

+0

dbedit.php ist nicht die Abfrage fehlgeschlagen Seite. Es ist die "Aktualisierung ist fertig" -Seite. Sicherheitsrisiko sollte kein Problem sein, es ist nur ein lokales Host-Running-Tool. – swapfile

Antwort

1

Wenn Sie Header-Funktion verwenden, sollte es keine Ausgabe vor Header-Funktion sein. In Ihrem Fall haben Sie vor der Header-Funktion verwendet, weshalb es Ihnen einen Fehler anzeigt.

Überprüfen Sie die URL, um mehr zu erfahren, warum dieses Problem auftritt. How to fix "Headers already sent" error in PHP

Ändern Sie den Code in folgender Weise:

<?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

Vielen Dank! Das ist es. – swapfile

+0

Gern geschehen. – jewelhuq

1

Es wird ausgegeben, bevor die header() Umleitung, seine die html und body Tags, zusammen mit Leerzeichen. Die header() muss vor allem kommen, einschließlich der html Tag

+0

hmm ... und wie kann ich das lösen? – swapfile

+0

Setzen Sie die Code-Block als allererstes in der Datei, vor allem anderen einschließlich Whitespace – Bradley4