Wieso bekomme ich einen fehler bei cookie anlegen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wieso bekomme ich einen fehler bei cookie anlegen?

    Hallo .. ich habe folgenden Fehler:

    Warning: Cannot modify header information - headers already sent by (output started at ...............php:1) in ....................php on line 780



    lein 780 ist diese hier


    PHP-Code:


            $cookiename 
    "25548OLD"
            
    $value "$aktVerzNr";
            
    $time time()+30;  

                   
    setcookie($cookiename$value$time);  // line 780 
    bevor ich den code in die datei geschrieben habe, die sich selbst aufrufft hat es funktioniert.. jetzt nicht mehr.. woran liegt das???

  • #2
    also, irgendwas gibst du vorher aus, was du nicht darfst!

    und lass den quatsch $value = "$aktVerzNr"; , schreib $value = $aktVerzNr;

    Kommentar


    • #3
      Lesen: http://www.php-resource.de/forum/sho...threadid=62965

      Kommentar


      • #4
        das hat eigentlich nichts mit der header() funktion zu tuhen!

        hier ist der code ..

        ich verstehe nicht wieso das anlegen des cookies verhindert wird .. bitte helft mir das problem zu lösen, den das ist das letzte problem das das laufen des programms verhindert..
        vielleicht könntet ihr den code ja kurz umschreiben, wenn es nicht zz kange dauert, da ich nicht weis wie ich an das problem ran gehen soll..

        der fehler ist: alles ok
        Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\formular.php:5) in C:\xampp\htdocs\formular.php on line 64

        ich vermute das es daran liegt: if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)

        und

        if($_SERVER["REQUEST_METHOD"]=="POST")

        PHP-Code:

        <html>
        <body>


        <?php
        $error
        =array();
        //Teil 1: Eingabeüberprüfungen, falls nicht erster Aufruf des Formulars
        if($_SERVER["REQUEST_METHOD"]=="POST")  //erster Aufruf:  ==GET
        {
            
            
        //nr prüfen
            
        if(!preg_match('/^[0-9]+$/',$_POST["nr"]))
                
        $error["nr"]="Falsches Nummer-Format";
            
        //name prüfen
            
        if(!preg_match('/^[a-zA-ZäöüÄÖÜß -]+$/',$_POST["name"]))
                
        $error["name"]="Falsches Namenformat";
            if(
        $_POST["name"]=="")
                
        $error["name"]="Name fehlt";
            
        //gebdat prüfen:
             
        if(!preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/',$_POST["gebdat"]))
                
        $error["gebdat"]="Falsches Datumsformat";
            
        //Mit checkdate() prüfen, ob auch gültiges Datum vorliegt.
        }
        ?>
        <?php
        //Teil 2: Formular ausgeben beim ersten Aufruf oder fehlerhafte Eingaben:
        if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)
        {
        ?>
            <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
            <table>
            <tr><td>Nummer:</td>
            <td><input type ="text" name="nr" value="<?php if (isset($_POST["nr"])) echo $_POST["nr"];?>"></td>
            <td><?php
                
        if(isset($error["nr"])) echo $error["nr"];
            
        ?>
               </td>
            <tr> <td>Name: </td>
            <td><input type ="text" name="name" value="<?php if (isset($_POST["name"])) echo $_POST["name"];?>"></td>
            <td><?php
                
        if(isset($error["name"])) echo $error["name"];
            
        ?>
               </td>
            <tr><td>Geburtsdatum: </td>
            <td><input type ="text" name="gebdat" value="<?php if (isset($_POST["gebdat"])) echo $_POST["gebdat"];?>"></td>
            <td><?php
                
        if(isset($error["gebdat"])) echo $error["gebdat"];
            
        ?></td>
            </table>
            <br />

            <input type ="submit" value="Und ab..">

            </form>
        <?php
        }
        else
        {
            echo 
        "alles ok"
            
                
        $cookiename "25548NEW"
                
        $value "123";
                
        $time time()+30;  //30 tage = time()+60*60*24*30
                
        setcookie($cookiename$value$time); //line 64

        }
        ?>


        </body>
        </html>
        Zuletzt geändert von spam2008; 01.12.2007, 18:21.

        Kommentar


        • #5
          Original geschrieben von spam2008
          das hat eigentlich nichts mit der header() funktion zu tuhen!
          Nicht mit der Funktion selbst, aber dennoch werden HTTP-Header abgesetzt. Informiere dich darüber, wie Cookie abgewickelt wird. Deswegen gilt mein Hinweis immer noch.

          Kommentar


          • #6
            das hat eigentlich nichts mit der header() funktion zu tuhen!
            doch.

            Kommentar


            • #7
              ich bekomme es einfach nicht hin diesse scheiss cookies an zu legen .. ich habe im meinem code keine ausgabe vor dem set cookie ... ich weis wirklich nicht wie ich hier vorgehen soll .. auch wenn ich diese erklerungen von header() und so lese hab ich immer noch kein plan ..

              wie mache ich das den jetzt, dass mein formular geprüft wird und wenn alles in ordnung ist, das alle prozesse verarbeitet werden und ganz wichtig: das der COOKIE angelegt wird!!!!!!!

              bitte gibt mir konkrete hilfe!!

              Kommentar


              • #8
                Code:
                <html>
                <body>
                
                
                alles ok
                wird alles for dem setcookie() ausgegeben. Wieso behauptest du, da wäre keine Ausgabe?

                Kommentar


                • #9
                  bitte gibt mir konkrete hilfe!!
                  Kein Problem!!
                  In der Fehlermeldung steht, was falsch läuft. Lesen und beheben! Ich sitze leider nicht an deiner Tastatur, sonst würde ich es dir eben machen.
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    ich meinte nicht den code ganz oben... habe schon den veränderten gemeint ..

                    hier ist er .. und jetzt erklär mir mal einer bitte wieso das mit den cookies nicht geht .. alles andere funktioniert ...

                    PHP-Code:

                     <?php  
                     
                         error_reporting
                    (E_ALL);  
                      
                     
                    //////Sprache feststellen                                
                        
                    $spracheDateiPfad "./language.txt";
                               
                    $fhandle fopen($spracheDateiPfad"r"); 
                                   
                    $sprache fgets($fhandle);
                               
                    fclose($fhandle);  




                    ///////Verzeichnis nummer lesen
                            
                        
                    $verzeichnisNrPfad "../verzeichnis.txt";
                        
                    $fhandle fopen($verzeichnisNrPfad"r");
                            
                    $verzeichnisNr fgets($fhandle);
                        
                    fclose($fhandle);        
                        
                        
                        
                        
                    $error=array();
                        
                    //Teil 1: Eingabeüberprüfungen, falls nicht erster Aufruf des Formulars
                    if($_SERVER["REQUEST_METHOD"]=="POST")  //erster Aufruf:  ==GET
                    {
                        
                        
                    //email 1 pruefen
                        
                    if(!preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i",$_POST["NeuerEmailEintrag"]))
                         {  
                            
                    $error["NeuerEmailEintrag"]="Falsches E-Mail Format";
                        
                        }
                            
                        
                    //email 2 pruefen    
                        
                    if(!preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i",$_POST["NeuerEmailEintrag2"]))
                        {    
                            
                    $error["NeuerEmailEintrag2"]="Falsches E-Mail Format";

                        }
                        
                        if(
                    $_POST["NeuerEmailEintrag"]!=$_POST["NeuerEmailEintrag2"])
                          {
                              
                    $error["NeuerEmailEintrag2"]="Die PE-Mails sind nicht identisch";  
                         
                          } 
                        
                         
                    //passwort &uumlpruefen
                        
                    if(empty($_POST["passwort1"]))
                        {
                            
                    $error["passwort1"]="Kein Passwort eingegeben"
                       
                        }
                            
                         
                    //passwort &uumlpruefen
                          
                    if(empty($_POST["passwort2"]))
                            {
                                
                    $error["passwort2"]="Kein Passwort eingegeben"
                              
                             }     
                            
                          if(
                    $_POST["passwort1"]!=$_POST["passwort2"])
                          {
                              
                    $error["passwort2"]="Die Passw&ouml;rter sind nicht identisch";  
                        
                          } 


                    function 
                    eintragen()
                    {  
                      

                                  
                                
                    //cookie fuer erhaltenen link setzen damit die email nihch nocheinmal eingetragen werden kann.
                            
                    $cookiename "25548OLD"
                            
                    $value "abc";
                            
                    $time time()+30;        
                                                    
                    setcookie($cookiename$value$time);

                            
                            
                            
                    //cookie fuer neues verzeichnis setzen damit die email nicht eingetragen werden kann.
                            
                            
                    $cookiename "25548NEW"
                            
                    $value "123";
                            
                    $time time()+30
                            
                    setcookie($cookiename$value$time);

                            
                        
                        
                    }
                    //funktion eintragen() 

                    }//if

                     
                        
                    ?>

                    <html>
                    <head>
                     <title>Unbenannt</title> 
                     
                     
                     </head>


                    <body>

                    <?php
                      
                     
                    /////////
                    ////////wenn cookie nicht existiert, kann der benutzer seine email eingeben.  
                    if(!isset($_COOKIE["25548OLD"])&&!isset($_COOKIE["25548NEW"]))
                    {

                    //Teil 2: Formular ausgeben beim ersten Aufruf oder fehlerhafte Eingaben:
                    if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)
                    {





                    ?>     

                    <form name="verzeichnis" method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>">
                    <table>

                     <tr>
                      <td>Email 1</td>
                      <td><input type ="text" name="NeuerEmailEintrag" value="<?php if (isset($_POST["NeuerEmailEintrag"])) echo $_POST["NeuerEmailEintrag"];?>"></td>
                      <td><?php
                            
                    if(isset($error["NeuerEmailEintrag"])) echo $error["NeuerEmailEintrag"];
                        
                    ?></td>
                     </tr>
                     <tr>
                      <td>Email nochmal</td>
                      <td><input type ="text" name="NeuerEmailEintrag2" value="<?php if (isset($_POST["NeuerEmailEintrag2"])) echo $_POST["NeuerEmailEintrag2"];?>"></td>
                      <td><?php
                            
                    if(isset($error["NeuerEmailEintrag2"])) echo $error["NeuerEmailEintrag2"];
                        
                    ?></td>
                     </tr>
                     <tr>
                      <td>passwort1 </td>
                      <td><input type ="password" name="passwort1" value="<?php if (isset($_POST["passwort1"])) echo $_POST["passwort1"];?>"></td>
                      <td><?php
                            
                    if(isset($error["passwort1"])) echo $error["passwort1"];
                        
                    ?></td>
                     </tr>
                     <tr>
                      <td>passwort nochmal </td>
                      <td><input type ="password" name="passwort2" value="<?php if (isset($_POST["passwort2"])) echo $_POST["passwort2"];?>"></td>
                      <td><?php
                            
                    if(isset($error["passwort2"])) echo $error["passwort2"];
                        
                    ?></td>
                     </tr>
                     <tr>
                      <td><input type="submit" name="EmailsEintragen"/></td>
                      <td><input type="reset" /></td>
                      <td>15</td>
                     </tr>

                    </table>

                    </form>    

                    <?php


                     
                    }//if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)
                            
                    else{ 
                                      
                    eintragen();
                            }

                    }
                    //if(!isset($_COOKIE["25548OLD"])&&!isset($_COOKIE["25548NEW"])
                    else{
                     
                        echo 
                    "cookies wurden schon einmal angelegt";

                    }
                    //else cookie gesetzt



                    ?>
                      


                    </body>
                    </html>

                    Kommentar


                    • #11
                      Und, du bist dir sicher, dass 30 Sekunden reichen?
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        Und, du bist dir sicher, dass 30 Sekunden reichen?
                        das hat doch jetzt garnichts mit dem problem zu tuhen .. ich will endlich wissen was ich falsch mache und wie ich das programm endlich zum laufen bekomme!!!

                        Kommentar


                        • #13
                          Was ist denn dein Problem?
                          Fehlermeldung?
                          Cookies im Browser eingeschaltet?
                          Wir werden alle sterben

                          Kommentar


                          • #14
                            die cookies sind eingeschaltet.
                            ich bekomme diese fehlermeldung:

                            Warning: Cannot modify header information - headers already sent by (output started at /home/.......................emailenter.php:1) in /home/................../emailenter.php on line 764

                            Warning: Cannot modify header information - headers already sent by (output started at /home/.................../emailenter.php:1) in /home/........................./emailenter.php on line 773


                            das sind jeweils die zeilen mit den setcookie.

                            vorher habe ich die daten an eine andere dateu gesendet und dort das auch mit dem cookie gemacht .. aber dadurch ging die abfrage nicht, so dass ich alles in einer datei erledigen muss .. es funktioniert alles so wie es soll, nur das er diese verdamten cookies nicht anlegt ....

                            Kommentar


                            • #15
                              Original geschrieben von spam2008
                              das hat doch jetzt garnichts mit dem problem zu tuhen .. ich will endlich wissen was ich falsch mache und wie ich das programm endlich zum laufen bekomme!!!
                              Das Problem wurde dir wiederholt beschrieben, und ist immer noch das gleiche. Du rufst die Cookie-setzende Funktion nach dem ersten Output auf, und das geht eben nicht. An welcher Stelle Du die Funktion definierst, spielt keine Rolle, sondern nur wo du sie aufrufst.

                              Kommentar

                              Lädt...
                              X