header oder POST Problem?

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

  • header oder POST Problem?

    Ich werke nun schon drei Tage an einem Problem und bin schon ganz
    verzweifelt, weil ich nicht mehr weiter weiß.

    Was passieren sollte: der Inhalt des Formulars soll in DB eingetragen
    werden und dann sollte auf validation_anmeldung.php weitergeleitet
    werden.
    Sobald ich auf den Submit-Button im Skript register.php (wird über
    index.php?=Seite16 includiert) drücke erhalte ich eine weisse Seite - auch
    kein Source-Code.

    Noch vor wendigen Tagen hat alles Funktioniert. Dann hat nur mehr die
    Kontrolle ob der Username bereits existiert funktioniert, jedoch der INSERT
    INTO befehl nicht mehr (siehe Code). Heute habe ich den MySQL-Server
    gewechselt (von meinem Testserver auf den Server des Hosters) plötzlich
    hat es wieder einige Male funktioniert (ohne, dass ich am Script was
    geändert habe) und jetzt bekomme ich wieder die weisse Seite (leider
    ohne Fehlermeldung. Auch in der error.log vom Apachen steht nichts.

    Dass sollte ich vielleicht noch erwähnen:

    in der Config.php (erste zeile) wird die Datenbank-Verbindung erstellt und
    die db ausgewählt. Außerdem wird dort auch die session gestartet.

    error_reporting( E_ALL); - trotzdem keine Fehlermeldungen.

    Ich weiß echt nicht mehr weiter - bitte um Hilfe. Bin über jeden kleinen
    Hinweis dankbar.

    Ingo

    PHP-Code:
    <?php
    require ("Connections/config.php");


    if ((isset(
    $_POST["MM_insert"])) && ($_POST["MM_insert"] == "frm_register")) {
      
    //Formular wurde von register.php abgeschickt und das Feld MM_insert enthält Wert frm_register
      
    $FF_dupKeyRedirect="index.php?seite=16";
      
    $FF_dupKeyUsernameValue $_POST["username"];
      
    //Abfrage ob username bereits in der DB existiert:
      
    $FF_dupKeySQL "SELECT user_name FROM tbl_user WHERE user_name='" $FF_dupKeyUsernameValue "'";
      
      
    $FF_rsKey=mysql_query($FF_dupKeySQL$kursverwaltung) or die(mysql_error());
      
      
    //Falls username bereits existiert mysql_num_rows($FF_rsKey) größer als 0
      
    if(mysql_num_rows($FF_rsKey) > 0) {
          
          
    //an oben definierte Location wird der bereits vorhandene Benutzername per GET angehängt
        
          
    $FF_qsChar "?";
          if (
    strpos($FF_dupKeyRedirect"?")) $FF_qsChar "&";
          
    $FF_dupKeyRedirect $FF_dupKeyRedirect $FF_qsChar "requsername=" $FF_dupKeyUsernameValue;
        
    //weiterleitung an register.php (wird über index.php?seite=16 aufgerufen)
         
    header ("Location: $FF_dupKeyRedirect");
          exit;
          
        
      } else {
      
    //falls Username noch nicht vorhanden
          
    function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
            {
              
    $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
               switch (
    $theType) {
                    case 
    "text":
                 
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
                  break;    
                case 
    "long":
                case 
    "int":
                  
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
                  break;
                case 
    "double":
                  
    $theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
                  break;
                case 
    "date":
                  
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
                  break;
                case 
    "defined":
                  
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
                  break;
               }
              return 
    $theValue;
            }


         
    $insertSQL sprintf("INSERT INTO tbl_user (user_name, user_pwd, 
    user_gruppe, user_vorname, user_nachname, user_strasse, user_plz, 
    user_ort, user_land, user_email, user_regdat, user_telefon) VALUES (%s, 
    %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
    ,
                           
    GetSQLValueString($_POST['username'], "text"),
                           
    GetSQLValueString($_POST['pwd'], "text"),
                           
    GetSQLValueString($_POST['usergroup'], "text"),
                           
    GetSQLValueString($_POST['vorname'], "text"),
                           
    GetSQLValueString($_POST['nachname'], "text"),
                           
    GetSQLValueString($_POST['strasse'], "text"),
                           
    GetSQLValueString($_POST['PLZ'], "text"),
                           
    GetSQLValueString($_POST['Ort'], "text"),
                           
    GetSQLValueString($_POST['land'], "text"),
                           
    GetSQLValueString($_POST['email'], "text"),
                           
    GetSQLValueString($_POST['regdat'], "int"),
                           
    GetSQLValueString($_POST['telefon'], "text"));

          
    //INSERT per POST übergebenen Daten in DB
          
    $Result1 mysql_query($insertSQL$kursverwaltung) or die(mysql_error());
      
         
          
    $registered 1;
          
    session_register("registered");

        
    $insertGoTo "validation_anmeldung.php";
        
        
    //weiter zu 
          
    header(sprintf("Location: %s"$insertGoTo));
        exit;   
      } 
    }
    ?>
    Zuletzt geändert von gamsmaxl; 03.02.2005, 12:15.

  • #2
    Als erstes solltest du den Quelltext, wenn du ihn hier ins Forum stellst ein bisschen anders formatieren.
    Dass es bei einem Wechsel immer erst klappt und dann irgendwann nicht mehr ist eigenartig, aber hast du schon mal versucht (um die Fehler zu finden) erst mal die Weiterleitung zu deaktivieren und stattdessen mögliche Fehler ausgeben zu lassen?

    PHP-Code:
     or die(mysql_error()); 
    heißt doch wohl sowas wie keine SQL Fehler ausgeben. Könnte es vielleicht daran liegen, dass keine Fehler ausgegeben werden. Nach einem "die" wird übrigens nichts mehr ausgeführt
    Wer einen Weisen dumm fragt, wird eine kluge Antwort bekommen. Es ist nur die Frage, ob er sie auch versteht.

    Kommentar


    • #3
      Übrigens danke für's editieren. So geht es gleich besser zu lesen.
      Wer einen Weisen dumm fragt, wird eine kluge Antwort bekommen. Es ist nur die Frage, ob er sie auch versteht.

      Kommentar


      • #4
        Original geschrieben von telmich
        or die(mysql_error());
        heißt doch wohl sowas wie keine SQL Fehler ausgeben.
        nein. es heißt, gib mir den fehler aus und stirb.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Oops, sorry, stimmt ja. Vielleicht ist es ja ein Fehler der keine Beschreibung hat. Ich kenn mich mit mysql nicht so aus, aber gebe doch mal das folgende aus:
          PHP-Code:
          or die("Fehler: ".mysql_errno() . ": " mysql_error() . "\n"); 
          woran es sonst liegt kann ich leider nicht sagen. Ich steige nicht ganz durch den Quelltext durch. Vielleicht kannst du den eigentlichen Fehler ja ein bisschen näher lokalisieren.
          Wer einen Weisen dumm fragt, wird eine kluge Antwort bekommen. Es ist nur die Frage, ob er sie auch versteht.

          Kommentar


          • #6
            Hab schon alles mögliche "ausgeschaltet" und wieder "eingeschaltet" (auch die Weiterleitung).

            Das mit der Fehlermeldung werde ich probieren, obwohl wenn mysql_error() nichts ausgibt wird mysql_errno() auch nichts ausgeben!?

            Kommentar


            • #7
              noch ein paar Ergänzungen:

              Server bzw. Testserver
              PHP: 4.3.4 bzw. 5
              Apache 1.3.29 auf Linux bzw. Apache 2 WinXP
              register_globals = off bzw register_globals = on
              error_reporting = 2037(E_ALL ohne Notice und Warning) bzw. error_reporting = 2039 (E_ALL ohne Notice)

              Kommentar


              • #8
                Ich hab jetzt viel herumprobiert, und ich denke, dass es die Funktion header() ist die nicht funktioniert. Sie wird weder ausgeführt noch wird eine Fehlermeldung ausgegeben. Habe daraufhin den header()-Code in neue Datei kopiert, dort funktionierts.

                Habe auch beim Provider angerufen: der hat sichs angesehen und bei ihm hat alles funktioniert!?!

                Was kann man bei header(location) alles falsch machen? Es wird vorher nichts ausgegeben und die urls habe ich laut PHP-Manual auf absolute Urls gesetzt.

                Kommentar


                • #9
                  setze mal error_reporting auf E_ALL.
                  ersetze header() durch die("hier"). wird die ausgabe gemacht?
                  wozu das mit dem sprintf()? warum nicht einfach:
                  PHP-Code:
                  header("Location: ".$url); 

                  Kommentar


                  • #10
                    Geschafft! Uff!

                    Hab das Problem gelöst, wie immer ganz was doofes: Ich hatte in der config.php zwei leere Zeilen nach dem ?> stehen. So manchem Browser dürfte das nichts ausmachen und anderen störts. Kann dass stimmen?

                    Außerdem hab ich bei header(Location: ...) absolute URLs angegeben.

                    Danke für die Hilfe!

                    Kommentar


                    • #11
                      Re: Geschafft! Uff!

                      Original geschrieben von gamsmaxl
                      Ich hatte in der config.php zwei leere Zeilen nach dem ?> stehen. So manchem Browser dürfte das nichts ausmachen und anderen störts. Kann dass stimmen?
                      nein, es stört nicht den browser, sondern PHP - weil es eine ausgabe darstellt, und somit der header nicht mehr ausgelöst werden kann.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Aber warum hat´s dann manchmal funktioniert und manchmal nicht????

                        Ausserdem sollte ja php fehlermeldung ausgeben: header already sent (oder so ähnlich) - hat es aber auch nicht gemacht!
                        Zuletzt geändert von gamsmaxl; 04.02.2005, 07:39.

                        Kommentar

                        Lädt...
                        X