php Problem mit Mysql login

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

  • php Problem mit Mysql login

    Also mein Problem ist ein wenig komplexer, im grunde geht es darum, dass ich einen login habe der bei loginsucces die seite index.php?section=intern öffnet bei loginfail die index.php?section=fehler2 !
    ich arbeite über ein $_Get array in dem beide (intern als auch fehler2) reingeschrieben sind.
    Falls eine Variable nicht in diesem Array ist wird automatisch die seite index.php?section=news angezeigt.
    Nun wenn ich in meinem login form nichts eintrage jedoch abschicke, was eigentlich index.php?section=fehler2 hervorrufen sollte wird komischerweise index.php aufgerufen! (weder section=news noch section=fehler2 noch section=intern) jedoch müsste wenn die variable fehler2 in $_GET nicht definiert wäre, section=news aufgerufen werden!
    Kann mir jemand helfen? wäre net wenn sich jemand melden könnte,
    wenn derjenige den kompletten quellcode braucht, darf er mich gern unter ICQ: 336339383 adden,
    danke schonmal!
    gruß Flize

  • #2
    ich arbeite über ein $_Get array in dem beide (intern als auch fehler2) reingeschrieben sind.
    warum scheibst du die beiden werte in das $_GET Array? So ein schwachsinn...

    naja, eigentlich kleinkram. poste mal bitte die erste zeile vom Formular. Also

    <form method=post action=...>

    und dann mal den entsprechenden code ausschnitt(!) der deiner meiung nach zuständig ist.

    Kommentar


    • #3
      In dem $_GET array stehen die verschiedenen Werte für $section(verschiedene seiten)
      die dann über eine schleife je nach Wert aufgerufen werden!

      Naja hier die Form,

      <form
      action="<?php echo $loginFormAction; ?>"
      method="POST"
      name="form1"
      >


      <?php require_once('Connections/ohost.php'); //Verbindung zu mySQL

      session_start();

      $loginFormAction = $_SERVER['PHP_SELF'];
      if (isset($accesscheck)) {
      $GLOBALS['PrevUrl'] = $accesscheck;
      session_register('PrevUrl');
      }

      if (isset($_POST['user'])) {
      $loginUsername=$_POST['user'];
      $password=$_POST['pw'];
      $MM_fldUserAuthorization = "";

      //die Seiten die aufgerufen werden sollen bei success/failed
      $MM_redirectLoginSuccess = "index.php?section=intern";
      $MM_redirectLoginFailed = "index.php?section=fehler2";
      $MM_redirecttoReferrer = false;
      mysql_select_db($database_ohost, $ohost);

      $LoginRS__query=sprintf("SELECT user, password FROM login WHERE user='%s' AND password='%s'",
      get_magic_quotes_gpc() ? $loginUsername : addslashes ($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));

      $LoginRS = mysql_query($LoginRS__query, $ohost) or die(mysql_error());
      $loginFoundUser = mysql_num_rows($LoginRS);
      if ($loginFoundUser) {
      $loginStrGroup = "";

      $GLOBALS['MM_Username'] = $loginUsername;
      $GLOBALS['MM_UserGroup'] = $loginStrGroup;

      session_register("MM_Username");
      session_register("MM_UserGroup");

      if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
      }
      header("Location: " . $MM_redirectLoginSuccess );
      }
      else {
      header("Location: ". $MM_redirectLoginFailed );
      }
      }
      ?>

      jo das war der dazugehörige code xD
      und hier tritt das besagte problem auf, bei leerem absenden des Form sowie übereinstimmender Eingabe mit mySQL wird weder die seite $MM_redirectLoginFailed noch $MM_redirectLoginSuccess aufgerufen sondern index.php!

      Kommentar


      • #4
        In dem $_GET array stehen die verschiedenen Werte für $section(verschiedene seiten)
        die dann über eine schleife je nach Wert aufgerufen werden!
        warum? mach mal n print_r($_GET) um deine Behauptung zu unterstützen.

        <form action="<?php echo $loginFormAction; ?>" method="POST" name="form1" >
        und wie sieht das als reines(!) HTML aus?

        jo das war der dazugehörige code xD
        und hier tritt das besagte problem auf, bei leerem absenden des Form sowie übereinstimmender Eingabe mit mySQL wird weder die seite $MM_redirectLoginFailed noch $MM_redirectLoginSuccess aufgerufen sondern index.php!
        na, entweder wird der if oder der else-teil ausgeführt. das ist keine frage. außer die ausführung wird vorher abgebrochen.

        das kannst du mal schnell mit ein, zwei echos überprüfen.

        auf die ganzen gurndlagenfehler (session-register, location-header nur mit korrekter URI, ...) geh ich jetzt gar nicht erst ein. Wurde tausend mal behandelt und sollte nach der bloßen erwähnung eigenständig behoben werden.

        Kommentar


        • #5
          über diesen code wird die jeweilige seite aufgerufen, ich hab mich falsch ausgedrückt sie sind nicht in $_get gespeichert sondern im array $daten[]...

          <?
          if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {

          include $dateien[$_GET['section']];

          } else {

          include $dateien['news'];
          }
          ?>

          Die Form geht noch weiter, du wolltest eben nur die action="" haben, sry

          <form
          ACTION="<?php echo $loginFormAction; ?>" method="POST" name="form1">

          <input type="text" name="user">

          <input type="password" name="pw">

          <input type="submit" name="Submit" value="Einloggen">
          </form>

          komischerweise werde ich um es mit echos zu testen beim Abschicken von den variablen $user und $pw über das formular auf index.php geleitet :-/

          Kommentar


          • #6
            aha aha.

            Dann mal ein paar regeln:
            - PHP-Tags benutzen!
            - error_reporting auf E_ALL!
            - auf Fragen antworten und Hinweise befolgen!

            und alle anderen Regeln aus diesem Thread beachten:
            http://www.php-resource.de/forum/sho...threadid=50454

            Als nächstes solltest du dir dann endlich mal im klaren darüber werden, wie dein Array nun heißt. _GET ist es nicht. Aber daten wohl auch nicht? zumindest steht in deinem Code dateien.

            Die Form geht noch weiter, du wolltest eben nur die action="" haben, sry
            Ja genau, ich wollte nur das öffnende Form-Tag haben. Der rest interessiert soweit erstmal gar nicht. Danach hatte ich auch gar nicht mehr gefragt. Ich hatte dich darum gebeten mit statt irgendwelchem php-Code den entsprechenden HTML-Code zu posten (also das, wo die action im klartext steht)

            komischerweise werde ich um es mit echos zu testen beim Abschicken von den variablen $user und $pw über das formular auf index.php geleitet :-/
            was das auch immer heißen mag. eigentlich hatte ich dich darum gebeten, mittels testausgaben herauszufinden in welchen zweig des if-construct er einsteigt. und ob er das überhaupt tut.

            Kommentar


            • #7
              sorry fällt mir bissl schwer mich auszudrücken -.-

              Nochmal ganz von vorne ich habe frames simuliert über href="index.php?section=login"

              Es wird also der variable section der wert login zugewiesen:

              Dieses Array weißt den verschiedenen Keys Seiten zu.
              In dem Fall login = login.php
              PHP-Code:
              error_reporting(E_ALL);

              $dateien = array();
                      
              $dateien ['news']            = "news.php";
                      
              $dateien ['bilder']            = "bilder.php";
                      
              $dateien ['video']            = "video.php";
                      
              $dateien ['maxi']              = "maxi.php";
                      
              $dateien ['flize']               = "flize.php";
                      
              $dateien ['nordstetten']   = "nordstetten.php";
                      
              $dateien ['fehler']               = "fehler.php";
                      
              $dateien ['fehler2']           = "fehler2.php";
                      
              $dateien ['intern']             = "intern.php";
                      
              $dateien ['ausgeloggt']    = "ausgeloggt.php";
                                              
              $dateien ['login']              = "login.php"

              PHP-Code:
              error_reporting(E_ALL);

              if(isset(
              $_GET['section']) AND isset($dateien[$_GET['section']])) {
                  include 
              $dateien[$_GET['section']];    
              } else {
                  include 
              $dateien['news'];

              Das entscheidet darüber was angezeigt wird! => login.php

              Geht auch alles,
              aber hier steigt ja nun erst der eigentliche Login code ein.
              Die
              Code:
              <form action="<?php echo $loginFormAction; ?>" method="POST" name="form1">
              steht auf in der login.php.
              oben vor dem Doctype steht der php-code dazu:

              PHP-Code:
              error_reporting(E_ALL);

              php require_once('Connections/ohost.php'); //Verbindung zu mySQL


              $loginFormAction $_SERVER['PHP_SELF'];
              if (isset(
              $accesscheck)) {
              $GLOBALS['PrevUrl'] = $accesscheck;
              session_register('PrevUrl');
              }

              if (isset(
              $_POST['user'])) {
              $loginUsername=$_POST['user'];
              $password=$_POST['pw'];
              $MM_fldUserAuthorization "";

              //die Seiten die aufgerufen werden sollen bei success/failed
              $MM_redirectLoginSuccess "index.php?section=intern"
              $MM_redirectLoginFailed "index.php?section=fehler2";
              $MM_redirecttoReferrer false;
              mysql_select_db($database_ohost$ohost);

              $LoginRS__query=sprintf("SELECT user, password FROM login WHERE user='%s' AND password='%s'",
              get_magic_quotes_gpc() ? $loginUsername addslashes ($loginUsername), get_magic_quotes_gpc() ? $password addslashes($password)); 

              $LoginRS mysql_query($LoginRS__query$ohost) or die(mysql_error());
              $loginFoundUser mysql_num_rows($LoginRS);
              if (
              $loginFoundUser) {
              $loginStrGroup "";

              $GLOBALS['MM_Username'] = $loginUsername;
              $GLOBALS['MM_UserGroup'] = $loginStrGroup

              session_register("MM_Username");
              session_register("MM_UserGroup");

              if (isset(
              $_SESSION['PrevUrl']) && false) {
              $MM_redirectLoginSuccess $_SESSION['PrevUrl']; 
              }
              header("Location: " $MM_redirectLoginSuccess );
              }
              else {
              header("Location: "$MM_redirectLoginFailed );
              }
              }
              ?> 
              d.h. bei richtiger eingabe der Logindaten müsste $MM_redirectLoginSuccess = "index.php?section=intern"
              aufgerufen werden => intern.php
              bei falscher eingabe $MM_redirectLoginFailed = "index.php?section=fehler2" =>fehler2.php

              Jedoch wird bei der falscher sowie richtiger eingabe beide male index.php, ohne einen Wert für section zu definieren, geladen!




              Die Verbindung zu MYSQL steht,
              die Abfrage der Daten erfolgt auch,

              Den einzigen Fehler den ich bekomme bei E_ALL ist

              Notice: A session had already been started - ignoring session_start() in /usr/export/www/hosting/flize/login.php on line 6


              hängt das ganze damit zusammen?

              Danke schonmal für Deine Geduld.
              Hoffe das ist jetz bisschen verständlicher :-/
              Zuletzt geändert von Flize; 15.07.2006, 23:01.

              Kommentar


              • #8
                PHP-Tags benutzen!
                Sunshine CMS
                BannerAdManagement
                Borlabs - because we make IT easier
                Formulargenerator [color=red]Neu![/color]
                Herkunftsstatistik [color=red]Neu![/color]

                Kommentar


                • #9
                  man man man...

                  Kommentar


                  • #10
                    Die Tags habe ich vergessen zu kopieren, es wird auch kein Error angezeigt :-/

                    Kommentar


                    • #11
                      Jetzt lies endlich die Regeln.

                      Kommentar


                      • #12
                        Oh sorry, ich hab nur die Posting regeln gelesen nicht diese -.-
                        ich änder dan oben in meinem Post die jeweiligen Fehler

                        Kommentar


                        • #13
                          If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister().


                          irgendwo im php-manual gefunden, und nicht zum ersten mal. Deshalb wird vermutlich if (isset($_SESSION['PrevUrl']) && false) { "durchknallen."


                          header wird ignoriert, wenn es schon eine ausgabe gab.
                          Zuletzt geändert von heiss; 15.07.2006, 22:40.

                          Kommentar


                          • #14
                            Und was soll ich dann stattdessen schreiben?

                            Dies ist nochmal der einzige Fehler den ich bekomme:

                            Notice: A session had already been started - ignoring session_start() in /usr/export/www/hosting/flize/login.php on line 6

                            ah ok, aber was mach ich dagegen :-/
                            Zuletzt geändert von Flize; 15.07.2006, 22:48.

                            Kommentar


                            • #15
                              und was verstehst du an der meldung nicht. wenn du session_start() schon ausgeführt hast, kannst du natürlich nicht ein zweites mal starten. (datei und zeile wurde angegeben.)

                              Kommentar

                              Lädt...
                              X