Header already send..

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

  • Header already send..

    Hi,
    ich habe ein Validierungsscript für ein Registrierungs Formular gescriptet. Da aber in jeder Anweisung header() vorkommt, wird natürlich ein Error: Header already send by.. ausgegeben. Gibt es jetzt irgendeine Möglichkeit das zu verhindern?

    Hier der Script:

    PHP-Code:
    if ($username == "") { header ();}
    if (
    $fistname == "") { header ();}
    if (
    $lastname == "") { header ();}
    if (
    $email == "") { header header ();}
    if (
    $password == "") { header ();}
    if (
    $seckey == "") { header ();}
    if (
    $secretquestion == "") { header ();}
    if (
    $secretansware == "") { header ();} 
    Header Informationen aus Platzgründen entfernt


    Micronax

  • #2
    Der Skript so wie beschrieben ist fehlerfrei.

    Kommentar


    • #3
      Hm.. der gesammt Script:

      PHP-Code:
      if (isset ($_REQUEST["newuser"])) 

      // Variablen
      if(isset($_POST['active'])) {
      $active "1";
      } else {
      $active "0";
      }
      if(isset(
      $_POST['newsletter'])) {
      $newsletter "yes";
      } else {
      $newsletter "no";
      }
      $username $_POST['username'];
      $lastname $_POST['lastname'];
      $firstname $_POST['firstname'];
      $email$_POST['email'];
      $address $_POST['address'];
      $postcode $_POST['postcode'];
      $city $_POST['city'];
      $rights $_POST['rights'];
      $password md5($_POST['password']);
      $seckey $_POST['seckey'];
      $secretquestion $_POST['secretquestion'];
      $secretansware $_POST['secretansware'];

      if (
      $username == "") { header ("location: 
      account/newuser.php?missing"
      );}
      if (
      $fistname == "") { header ("location: 
      account/newuser.php?missing"
      );}
      if (
      $lastname == "") { header ("location: 
      account/newuser.php?missing"
      );}
      if (
      $email == "") { header ("location: 
      account/newuser.php?missing"
      );}
      if (
      $password == "") { header ("location: 
      account/newuser.php?missing"
      );}
      if (
      $seckey == "") { header ("location: 
      account/newuser.php?missing"
      );}
      if (
      $secretquestion == "") { header ("location: 
      account/newuser.php?missing"
      );}
      if (
      $secretansware == "") { header ("location: 
      account/newuser.php?missing"
      );}
      // Update in die Datenbank eintragen
      $sql "INSERT INTO demo1
          (active, rights, username, password, seckey, secretquestion, 
      secretansware, email, firstname, lastname, address, postcode, city,
       registerdate, newsletter)
      VALUES
          ('
      $active', '$rights', '$username', '$password', '$seckey', 
      '
      $secretquestion', '$secretansware', '$email', '$firstname', 
      '
      $lastname', '$address', '$postcode', '$city', now(), '$newsletter');";
      $result mysql_query($sql) OR die(mysql_error());
      header ("location: account.php?newuser"); // Weiterleitung

      Evtl. unlogisch wg. Umbruch im Forum

      Micronax

      Kommentar


      • #4
        Hast du vielleicht unbeabsichtigt n [enter] vor deinem <?PHP oder sonst irgend ein Zeichen?

        Kommentar


        • #5
          Ne eigendlich nicht.. nur hir im Forum, damit die Seite nicht zu Breit wird

          Micronax

          Kommentar


          • #6
            Und wenn ich

            PHP-Code:
            if (empty($username or $email or $password or $seckey or 
            $secretquestion or $secretansware)) {
            header ("location: account/newuser.php?missing");

            benutze?

            Das müsste doch gehen?

            Abgesehen davon:

            Code:
            parse error, unexpected T_LOGICAL_OR, expecting ')'
            Micronax

            Kommentar


            • #7
              Doch, irgendwo erzeugst du schon eine Ausgabe, anders kann diese Fehlermeldung nicht zustande kommen.

              Davon abgesehen sind die Header, die du da sendest, zwar sehr originell, aber weit entfernt vom HTTP-Standard! Du mußt Location groß schreiben und eine absolute URI angeben (http://...).

              EDIT:
              Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).

              Und empty($var1 or $var2) ist ein boolscher Ausdruck, keine einfache Variable.

              Zuletzt geändert von onemorenerd; 12.03.2006, 13:09.

              Kommentar


              • #8
                nö..

                ob klein oder groß ist egal

                und ich habs immer so gemach und es ging!

                Micronax

                Kommentar


                • #9
                  Und wie benutzt man diese Logischen Operatoren?


                  if ($1 or $2 or $3) oder if (($1) or ($2) or ($3))

                  Micronax

                  Kommentar


                  • #10
                    Original geschrieben von micronax
                    ob klein oder groß ist egal
                    und ich habs immer so gemach und es ging!
                    http://www.w3.org/Protocols/rfc2616/....html#sec14.30

                    Und wie benutzt man diese Logischen Operatoren?
                    if (empty($var1) or empty($var2))

                    Kommentar


                    • #11
                      Wers mir nicht glaubt, der solls selber testen. es geht:

                      PHP-Code:
                      header ("location: account/newuser.php?missing"); 
                      Und danke für das mit den Operatoren

                      Kommentar


                      • #12
                        PHP-Code:
                        if (empty($username) or empty($email) or empty($password) or 
                        empty(
                        $seckey) or empty($secretquestion) or empty($secretansware))
                         {
                        header ("location: account/newuser.php?missing");

                        Alle Variablen sind pben als $_POST deklariert
                        Nur er ignoriert das ganze! Egal obs leer ist oder ned..

                        micronax

                        Kommentar


                        • #13
                          Wers mir nicht glaubt, der solls selber testen. es geht:
                          Daß es mit Deinem Browser geht, heißt noch lange nicht, daß es mit jedem geht. Damit gewährleistet ist, daß es mit jedem geht - bzw. daß man von seiner Seite alles Menschenmögliche getan hat, damit es geht - gibt es den Standard. Onemorenerds Hinweis auf die korrekte Notation ist keine Prinzipienreiterei, sondern soll verhindern, daß irgendwann ein Thread nach dem Muster "header location geht nicht mit Browser xyz - Warum?!" von Dir auftaucht.

                          Kommentar


                          • #14
                            Ich weiß, daß es funktioniert, weil die meisten Browser der Ignoranz einiger Programmierer mit Flexibilität begegnen. Aber du hast doch einen gewissen Anspruch an dich selbst! Du möchtest doch lieber standardkonform programmieren! Oder?!

                            Kommentar


                            • #15
                              Hm.. stimmt.. Weist du noch was zum Thema oben?

                              Ach und: Der Parser müsste da smachen nicht der Browser, oder?
                              micronax

                              Kommentar

                              Lädt...
                              X