Problem mit header()

Alles, was PHP betrifft, kann hier besprochen werden.

Problem mit header()

Postby Adenauer1 » 23. May 2006 10:18

Hallo habe ein kleines Problem mit der header funktion

bekomme immer volgende Fehlermeldung

Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\Humpen\test\mysqlconnect.php: 1 8) in C:\Programme\xampp\htdocs\Humpen\test\form_geburtstag.php on line 56
!!!!!!!!!Wo der Smili ist steht eigentlich line 18

Line 18 wäre nach meinem ?> ??????????

hänge hier mal den Code der beiden Datein an
Code: Select all
<?php                                                                     
 function mysqlconnect()                                                 
    {                                                                     
   $status   =   mysql_connect("localhost", "root", "");                       
       if ( ! $status )                                                   
       {                                                                   
          die("Konnte die Datenbank nicht erreichen!");                     
       }                                                                   
                                                                           
       $status   =   mysql_select_db("humpenpumpen");                           
                                                                          
       if ( ! $status )                                                   
       {                                                                   
          die("Konnte die Datenbank nicht &&auml;ndern: " . mysql_error() );
       }                                                                   
    }
    ?>






Code: Select all

<?php
 
 include("mysqlconnect.php");
 if( isset($_REQUEST["do"])&& $_REQUEST["do"]="insert")
{
         $error_msg = "";
      
         if($_REQUEST["Vorname"]=="")
         {
            $error_msg= "Bitte geben sie einen Vornamen ein.<br>";
         
         }
            if($_REQUEST["Nachname"]=="")
         {
            $error_msg .= "Bitte geben sie einen Nachnamen ein.<br>";
         }
            if($_REQUEST["Tag"]=="")
         {
            $error_msg .= "Bitte geben sie einen Geburtstag ein.<br>";
         }
            if($_REQUEST["Monat"]=="")
         {
            $error_msg .= "Bitte geben sie einen Geburtsmonat ein.<br>";
         }
            if($_REQUEST["Jahr"]=="")
         {
            $error_msg .= "Bitte geben sie einen Geburtsjahr ein.<br>";
         }
      
      
         if ($error_msg != "" )
         { echo "$error_msg";
         }
      if ($error_msg == ""&& $_REQUEST["Vorname"]!="")
                  {
                      mysqlconnect();
                     
                     
                      $query = "insert into geburtstag (Vorname,Nachname,Tag,Monat,Jahr) Values ( ";
                      $query   .=   " '" . $_REQUEST["Vorname"] . "', ";   
                      $query   .=   " '" . $_REQUEST["Nachname"] . "', ";
                      $query   .=   " '" . $_REQUEST["Tag"] . "', ";
                      $query   .=   " '" . $_REQUEST["Monat"] . "', ";
                      $query   .=   " '" . $_REQUEST["Jahr"]. "' ";                 
                      $query   .=   " ) " ;                               
                     
               
                        $result = mysql_query ($query);
                     
                  
                     if ( ! $result)
                     {
                        die("Konnte den Datensatz nicht eintragen: " . mysql_error() );
                     }
                  
                       header("Location: start.php");
                         die; 
                  }
         
}
?>
   
   
   <form action="<?php echo $_Request["PHP_SELF"];?>"method="post">
   <h1><b><p align="center">Geburtstag eintragen</p></b></h1>
   
   <table>
      
      <tr><td>   Vorname:</td> <td><input type="text" size="30" name="Vorname" >
   </td></tr>
      <tr><td>   Nachname:</td> <td><input type="text" size="30" name="Nachname">
   </td></tr>
         <tr><td>Geb Tag:</td> <td><input type="text" size="2" name="Tag">
   </td></tr>      
      <tr><td>   Geb Monat:</td> <td><input type="text" size="2" name="Monat">
   </td></tr>      
         <tr><td>Geb Jahr:</td> <td><input type="text" size="4" name="Jahr">
   </td></td>
      <tr><td>  Geschlecht:</td> <td>Männlich <input type="radio" name="Geschlecht" value="M"> Weiblich <input type="radio" name="Geschlecht" value="W">
   </td></tr>
      <tr><td><input type="submit" name="submit" value="Absenden" >
         <input type="hidden" name="do" value="insert" >
   </td></tr>
</table>
</form>
   
   
   
</body>
Adenauer1
 
Posts: 25
Joined: 24. February 2006 18:09

Postby Wiedmann » 23. May 2006 10:27

Line 18 wäre nach meinem ?> ??????????

Dann wird dem so sein ;-) Du hast das ja so gepostet:
Code: Select all
...
?>


Tatsächlich wird sie wohl so aussehen:
Code: Select all
...
?>

Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby sari42 » 28. May 2006 20:46

Vor "header()" darf weder php noch html irgedwas ausgeben, auch eine Leerzeile vor <?php ergibt einen Fehler.
sari42
 
Posts: 800
Joined: 27. November 2005 18:28

Postby Stefan » 02. June 2006 16:31

Hi,

header("Location: start.php");
was passiert eigentlich, wenn man direkte die start.php im Browser aufruft?
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby Adenauer1 » 08. June 2006 16:02

Dann ruft er ganz normal die Start Seite auf so wie er es soll.
Adenauer1
 
Posts: 25
Joined: 24. February 2006 18:09

Postby Stefan » 08. June 2006 16:58

Und das obwohl kein Geburtstag eingegeben wurde?

Falls es verhindert werden sollte, daß man die Startseite zu sehen bekommt, ohne vorher einen Geburtstag eingetragen zu haben, solltest Du eine Sitzung(Session) starten, nach erfolgreichem Eintrag eines Geburtstages speicherst Du in die Sitzung eine Markierung(z.B. angemeldet=1). Die start.php wiederum prüft zuerst, ob die aktuelle Sitzung diese spezielle Markierung besitzt. Tut sie es nicht, wird die Seite garnicht erst angezeigt, sondern es wird zurück auf die Eingabeseite verwiesen.


Ansonsten solltst Du Deine Variablen ein wenig präparieren, bevor Du sie für eine Datenbankanfrage verwendest. Schau Dir mal den Inhalt von $query an, wenn jemand beim Jahr folgedes einträgt.
Code: Select all
$_REQUEST["Jahr"]="'); DROP TABLE `geburtstag`; ";

Würde diese Anfrage abgesetzt werden, wäre Deine Tabelle "Geburtstag" gelöscht.

http://php-faq.de/q/q-sicherheit-parameter.html
http://de.wikipedia.org/wiki/SQL-Injection


Tschüß, Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests