aitee: Login wieder einmal ... ;)

Hi all,

also:
Ich habe die main Seite, auf der gibbet einen Link "login" und das session_start(), denn es ist ja die Hauptseite.
Dieser öffnet mit JS ein kleines Fenster:

<a href="#" onClick="NewWindowPopUp ('win_info.php?type=login','LoginWindow','280','130','no')">
Login</a>

In diesem Fenster mache ich dann nach Eingabe des Namens und Passwortes eine Abfrage in der DB.

if ($_GET['type'] == "login")
{
  if ($_POST['los_geräte_login'] == 'Login' && ! isset ($_SESSION['los_login_status']))
  {
    $query_usr_data = mysql_query ("SELECT los_usr_ID, los_usr_name, los_usr_pwd FROM los_usr WHERE los_usr_name = '".$_POST['los_login_usr']."'", $connect);
    echo test;
    if ($row = mysql_fetch_object ($query_usr_data))
    {
      if ($row->los_usr_pwd == $_POST['los_login_pwd'])
      {
        $vid_usr_ID = fill_id ($row->los_usr_ID, 5);
        $_SESSION['los_login_status'] = "1";
        $_SESSION['los_usr_ID'] = $los_usr_ID;
        $_SESSION['los_usr_name'] = $row->los_usr_name;
        echo ("login koooorrekt");
      }
      else {
        echo ("Falsches Passwort");
      }
    }
    else {
      echo ("Username existiert nicht!");
    }
  }
...
}

Ich habe die Abfrage eingebaut, die hier im Forum eben auftauchte:

echo ("Session-ID: ".session_id()."</br>");
  echo ("Neue Session unter: ".SID."</br>");

echo ("<pre>");
  print_r($_SESSION);
  echo ("</pre>");

Was auch immer die bedeutet (vielleicht erklärt sie nochmal einer?)

Nun das einloggen klappt aber einfach nicht ... ich weiss nicht wieso ...

Kann jemand helfen?

Btw. auf der Hauptseite ist schon keine Session ID zu sehen.
Muss ich die Session ID vielleicht an das Window übergeben?
Ich will aber am liebsten _ohne_ Cookies arbeiten.
Und noch besser ohne das an die URL ranzutackern ...

  1. Hello,

    Ich habe die Abfrage eingebaut, die hier im Forum eben auftauchte:

    01»» echo ("Session-ID: ".session_id()."</br>");
    02»»   echo ("Neue Session unter: ".SID."</br>");
    03»»
    04»»   echo ("<pre>");
    05»»   print_r($_SESSION);
    06»»   echo ("</pre>");
    07»»

    Was auch immer die bedeutet (vielleicht erklärt sie nochmal einer?)

    01: Ausgabe der aktuellen Session-Nummer
    02: Ausgabe der aktuellen Session-Nummer, nur wenn diese
        soeben vergeben wurde.
    03: Leezeile
    04: Umschaltung des Browsers auf "RAW-CODE"
         \n wird z.B. berücksichtigt
    05: Rekursive Ausgabe der vorhandenen Session-Variablen
    06: Umschaltung des Browsers aus dem Preformatted Mode
    07: Leerzeile

    Reicht das?

    -------------------------------------------------------------

    Ich will aber am liebsten _ohne_ Cookies arbeiten.
    Und noch besser ohne das an die URL ranzutackern ...

    Und ich würde jetzt am liebsten mit 'ner schönen Frau irgendwo am warmen Meeresstrand liegen und Champagner saufen (hinterher).

    Tom

    1. Hrhr ... den Wunsch hab ich sowieso ;)

      Ja hilft schonmal ... ich probier mal weiter ...
      Der Fehler liegt im übrigen irgendwie am SQL, wusste gar nicht, dass man auch "die" isn Query einbauen kann ...

      greetz tee

      1. Aha ... also mann kann Sachen, die in Dateien vorher bekannt gemacht worden sind in den nachgehenden Dateien _nicht_ mehr verwenden?

        grml :/

        Fehler war somit:
        fehlendes Include/Require von meiner connect.php
        und
        fehlende Funktion

        Btw.

        meinstest Du mit Deiner Antwort ... man muss entweder mit Cookies oder URL arbeiten oder mit beidem oder wie jetzt?

    2. Moin!

      01»» echo ("Session-ID: ".session_id()."</br>");
      02»»   echo ("Neue Session unter: ".SID."</br>");

      01: Ausgabe der aktuellen Session-Nummer

      Aber nur, wenn mit session_start() vorher schon eine Session gestartet wurde.

      02: Ausgabe der aktuellen Session-Nummer, nur wenn diese
          soeben vergeben wurde.

      Nein. Da steht immer etwas drin, wenn das Skript vom Browser ohne gesetztes Session-Cookie aufgerufen wurde (wobei als gesetztes Session-Cookie das angesehen wird, welches mit dem per session_name() oder dem Defaultwert übereinstimmenden Schlüssel die Session-ID übermittelt.

      Werden keine Cookies angenommen und die Session auch nicht per URL weitergetragen, erzeugt session_start() bei jedem Seitenaufruf eine neue Session-ID.

      Ich will aber am liebsten _ohne_ Cookies arbeiten.
      Und noch besser ohne das an die URL ranzutackern ...

      Das sind ja schon zwei Wünsche auf einmal. Das geht nun wirklich nicht.

      - Sven Rautenberg

      --
      "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
      (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
  2. Hallo aitee,

    <a href="#" onClick="NewWindowPopUp ('win_info.php?type=login','LoginWindow','280','130','no')">
    Login</a>

    besser:
    <a href="win_info.php?type=login" onclick="NewWindowPopUp(this.href,...); return false;">Login</a>
    dann funktioniert das ganze nämlich auch ohne js.

    $query_usr_data = mysql_query ("SELECT los_usr_ID, los_usr_name, los_usr_pwd FROM los_usr WHERE los_usr_name = '".$_POST['los_login_usr']."'", $connect);

    häng hinter mysql_query(...) mal noch ein 'or die(mysql_error()); dran, dann bekommst du bei einem Fehler die Fehlermeldung gleich angezeicht. außerdem solltest du nie Angaben die vom außen kommen einfach übernehmen, sondern immer entschärfen, in dem Fall mit mysql_escape_string().

    echo test;

    was enthält die Konstante 'test'?

    echo ("Session-ID: ".session_id()."</br>");

    ich weiß nicht, ob das wirklich so gepostet wurde, aber </br> ist falsch, entweder <br> oder <br/> aber nicht </br>.

    Nun das einloggen klappt aber einfach nicht ... ich weiss nicht wieso ...

    was klappt nicht? Was macht das Script (nicht)? Fehlermeldung? wenn ja, welche?

    Muss ich die Session ID vielleicht an das Window übergeben?

    nein, aber du musst am anfang der Seite session_start() stehen haben.

    Ich will aber am liebsten _ohne_ Cookies arbeiten.

    kein Problem, ein ini_set('session.use_cookies',0); und php arbeitet ohne cookies

    Und noch besser ohne das an die URL ranzutackern ...

    na entweder, oder mit cookies, oder mit url...

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo Tobias,

      <a href="#" onClick="NewWindowPopUp ('win_info.php?type=login','LoginWindow','280','130','no')">
      Login</a>
      besser:
      <a href="win_info.php?type=login" onclick="NewWindowPopUp(this.href,...); return false;">Login</a>
      dann funktioniert das ganze nämlich auch ohne js.

      Ne JS is schon in Ordnung, da ich je nachdem welches Window ich öffne, noch Grösse, Scrollbalken, etc. angeben will.

      $query_usr_data = mysql_query ("SELECT los_usr_ID, los_usr_name, los_usr_pwd FROM los_usr WHERE los_usr_name = '".$_POST['los_login_usr']."'", $connect);
      häng hinter mysql_query(...) mal noch ein 'or die(mysql_error()); dran, dann bekommst du bei einem Fehler die Fehlermeldung gleich angezeicht.

      Gesagt, getan ... Fehler behoben.

      außerdem solltest du nie Angaben die vom außen kommen einfach übernehmen, sondern immer entschärfen, in dem Fall mit mysql_escape_string().

      Was genau meinst Du?
      Was für Angaben übernehme ich denn von außen???

      echo test;
      was enthält die Konstante 'test'?

      Nicht so wichtig, ist keine Konstante, habe bemerkt, dass man auch Strings ohne "" oder () ausgeben kann ... das kommt wenns fertig is wieder weg ...

      echo ("Session-ID: ".session_id()."</br>");
      ich weiß nicht, ob das wirklich so gepostet wurde, aber </br> ist falsch, entweder <br> oder <br/> aber nicht </br>.

      und was soll das sein?
      Nein hast recht, wurde nicht so gepostet.
      Ich kenne nur <br> für Zeilenumbruch. Der Formhalber dann das Ende Tag mit </br> ... aber <br/> hab ich noch nie gesehen ...

      Nun das einloggen klappt aber einfach nicht ... ich weiss nicht wieso ...
      was klappt nicht? Was macht das Script (nicht)? Fehlermeldung? wenn ja, welche?

      War ein SQL Fehler ... glaub ich zumindest.
      Das Einloggen ansich klappt nun, doch irgendwie krieg ich in dem neuen Window nie ne Session ID angezeigt. Weder so wie es war noch wenn ich die SID mit an die URL anhänge.

      Muss ich die Session ID vielleicht an das Window übergeben?
      nein, aber du musst am anfang der Seite session_start() stehen haben.

      Meinst Du am Anfang des neuen Windows? Oder in der Hauptdatei?
      In der Hauptdatei steht es. Im neuen Window nicht ... muss doch auch nicht oder? Weil ich habe doch schon eine SID... vom Hauptfenster ...

      Ich will aber am liebsten _ohne_ Cookies arbeiten.
      kein Problem, ein ini_set('session.use_cookies',0); und php arbeitet ohne cookies

      Kann ich das auch in mein php Script einbauen?

      Und noch besser ohne das an die URL ranzutackern ...
      na entweder, oder mit cookies, oder mit url...

      Ja hab ich grad nachgelesen,

      thx für Deine sehr ausführliche Antwort ...

      greetz aitee

      1. Hallo aitee,

        <a href="win_info.php?type=login" onclick="NewWindowPopUp(this.href,...); return false;">Login</a>
        dann funktioniert das ganze nämlich auch ohne js.
        Ne JS is schon in Ordnung, da ich je nachdem welches Window ich öffne, noch Grösse, Scrollbalken, etc. angeben will.

        nein, das ist nicht in Ordung, da du sonst user ohne js ausschließt.

        außerdem solltest du nie Angaben die vom außen kommen einfach übernehmen, sondern immer entschärfen, in dem Fall mit mysql_escape_string().

        Was genau meinst Du?
        Was für Angaben übernehme ich denn von außen???

        $_POST['los_login_usr']. du übernimmst diesen String ungeprüft in deinen Query.

        echo test;
        was enthält die Konstante 'test'?
        Nicht so wichtig, ist keine Konstante,

        doch, ist es.

        habe bemerkt, dass man auch Strings ohne "" oder () ausgeben kann ...

        ojeoje, dann schalte mal error_reporting() auf E_ALL - du wirst dich wundern - php nimmt nämlich an, dass du einen String meinst, wenn es(?) die Konstante nicht findet - richtig ist echo test deswegen noch lange nicht.

        Ich kenne nur <br> für Zeilenumbruch. Der Formhalber dann das Ende Tag mit </br>

        das ist aber falsch - bei br ist der End-Tag verboten.

        ... aber <br/> hab ich noch nie gesehen ...

        das ist xhtml.

        War ein SQL Fehler ... glaub ich zumindest.

        glauben heißt nicht wissen - oder wie war das? ist es jetzt einer, oder nicht?

        nein, aber du musst am anfang der Seite session_start() stehen haben.
        Meinst Du am Anfang des neuen Windows? Oder in der Hauptdatei?

        in jeder Datei, bei der die Session-Daten verfügbar sein müssen

        In der Hauptdatei steht es. Im neuen Window nicht ... muss doch auch nicht oder? Weil ich habe doch schon eine SID... vom Hauptfenster ...

        wenn du die Session schon in dem Fenster, dass das Popup öffnet, startest, musst du die Sessionid übergeben, aber das macht php normalerweise für dich (es kann aber sein, dass es nicht funktioniert, weil du den Link im js-Teil stehen hast, und diese Links erkennt php afaik nicht. Verwende mal die Version die ich gepostet habe.

        Ich will aber am liebsten _ohne_ Cookies arbeiten.
        kein Problem, ein ini_set('session.use_cookies',0); und php arbeitet ohne cookies
        Kann ich das auch in mein php Script einbauen?

        wenn du nicht willst, dass php cookies verwendet, ja - die Zeile muss aber vor session_start() kommen.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. Hallo aitee,

          <a href="win_info.php?type=login" onclick="NewWindowPopUp(this.href,...); return false;">Login</a>
          dann funktioniert das ganze nämlich auch ohne js.
          Ne JS is schon in Ordnung, da ich je nachdem welches Window ich öffne, noch Grösse, Scrollbalken, etc. angeben will.
          nein, das ist nicht in Ordung, da du sonst user ohne js ausschließt.

          Ja, bewust getan, diese Anwendung ist nicht für die Öffentlichkeit

          außerdem solltest du nie Angaben die vom außen kommen einfach übernehmen, sondern immer entschärfen, in dem Fall mit mysql_escape_string().

          Was genau meinst Du?
          Was für Angaben übernehme ich denn von außen???
          $_POST['los_login_usr']. du übernimmst diesen String ungeprüft in deinen Query.

          Aha ... dann muss ich das jetzt erstmal belesen ... :)

          echo test;
          was enthält die Konstante 'test'?
          Nicht so wichtig, ist keine Konstante,
          doch, ist es.

          habe bemerkt, dass man auch Strings ohne "" oder () ausgeben kann ...
          ojeoje, dann schalte mal error_reporting() auf E_ALL - du wirst dich wundern - php nimmt nämlich an, dass du einen String meinst, wenn es(?) die Konstante nicht findet - richtig ist echo test deswegen noch lange nicht.

          ok ok ... aber wie gesagt, ist eh nur fürs debugging.
          Normalerweise benutze ich echo nur so:

          echo ("..." . $var );

          Ich kenne nur <br> für Zeilenumbruch. Der Formhalber dann das Ende Tag mit </br>
          das ist aber falsch - bei br ist der End-Tag verboten.

          ... aber <br/> hab ich noch nie gesehen ...
          das ist xhtml.

          ganz sicher? Meine mal irgendwo gelesen zu haben, dass Ende Tags zumeist optional sind, aber immer benutzt werden sollten, auch bei <br>

          War ein SQL Fehler ... glaub ich zumindest.
          glauben heißt nicht wissen - oder wie war das? ist es jetzt einer, oder nicht?

          Ja ;P

          Big Thanx Thomas

    2. hi,

      Und noch besser ohne das an die URL ranzutackern ...
      na entweder, oder mit cookies, oder mit url...

      was hab ich denn da schon wieder falsch verstanden ;) ?

      wieso rantackern? kann mir das vielleicht einer nochmal erklären, so für verrückte oder so *grins*

      $session_id = session_id();
      $_SESSION["session_id"] = session_id();

      so steht sie doch innerhalb der session permanent zur verfügung?

      also an meinen urls hängt nix dran ( kekse aus ) und meine daten sind überall sauber da. ( außer mein passwortproblem siehe weiter unten ;) )

      ronny

      1. Hallo ronny,

        wieso rantackern?

        du selbst musst die nicht "rantackern", das macht php schon für dich.

        $session_id = session_id();
        $_SESSION["session_id"] = session_id();
        so steht sie doch innerhalb der session permanent zur verfügung?

        das geht einfacher - in $_SESSION[session_name()] ist die sessionid immer vorhanden...

        also an meinen urls hängt nix dran ( kekse aus )

        das kann nicht sein, irgendwie muss die Sessionid ja übergeben werden - entweder per url, oder per Cookie.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. Also bei mir gehts nu ... und hängt auch nixx dran ... also zumindest nicht von mir ... obs automatisch passiert ist kann ich net sagen, da das Adress Feld bei mir nicht exisitert ...

          Greetz aitee

          1. Also bei mir gehts nu ... und hängt auch nixx dran ... also zumindest nicht von mir ... obs automatisch passiert ist kann ich net sagen, da das Adress Feld bei mir nicht exisitert ...

            sag ich ja, bei mir hängt auch nix dran...leute ich brauch bald echt nen notarzt. diese session geschichte ist manchmal echt verwirrend.
            ;)

            ciao
            ronny

            1. Ja wem sagst Du das ... hehe :P

      2. jouw danke, funzt :D

        Sorry nochmal an alle, dass ich seid Tagen auf dem Login Problem rumhacke ... ich habs mir einfach zu kompliziert gemacht und gleich mit selbstgeschriebenen Funktionen angefangen, bis ich total durcheinander war :)

        Aber nun gehts einigermaßen :)

        thx all,

        tee

      3. Moin!

        wieso rantackern? kann mir das vielleicht einer nochmal erklären, so für verrückte oder so *grins*

        $session_id = session_id();
        $_SESSION["session_id"] = session_id();

        so steht sie doch innerhalb der session permanent zur verfügung?

        Überflüssig! Die aktuelle Session-ID erfragst du _nach_ session_start() mit der Funktion session_id(). Und fertig. Die muß nicht in $_SESSION gespeichert werden, weil PHP an die richtigen Session-Daten ja sowieso erst rankommt, wenn session_id() die aktuelle Session-ID kennt.

        also an meinen urls hängt nix dran ( kekse aus ) und meine daten sind überall sauber da. ( außer mein passwortproblem siehe weiter unten ;) )

        Das glaube ich nicht. Entweder sind bei dir Session-Cookies erlaubt, oder dein Keksabschalten funktioniert nicht richtig.

        Es gibt genau drei Möglichkeiten, eine Session-ID zum nächsten Skript weiterzureichen: Cookies, URL-Parameter oder als Formularfeld bei POST (und natürlich auch bei GET). Der URL-Parameter taucht in der URL auf.

        Wenn _kein_ Parameter in der URL (und an allen Links) auftaucht, und Sessions funktionieren, dann wird entweder ein Cookie benutzt (dann funktionieren einfache Links), oder es wird permanent mit POST ein Formular verschickt. Dann funktionieren normale Links NICHT mehr.

        - Sven Rautenberg

        --
        "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
        (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
        1. hi,

          Das glaube ich nicht. Entweder sind bei dir Session-Cookies erlaubt, oder dein Keksabschalten funktioniert nicht richtig.

          jupp, sorry. hast recht. habe jetzt erstens meinen login neu geschrieben ( er funzt jetzt fehlerfrei ) und habe mal ein bisschen mit meinen keks einstellungen rumgespielt. ich hatte zwar die kekse gesperrt, aber diese so winzig kleine häkchen bei sitzungskeksen zulassen übersehen ;)

          naja, nichts für ungut.

          danke an alle hilfen die ich hier heute finden konnte, bzw. die anregungen, die mich veranlasst haben, mein script neu zu schreiben ;)

          n8

          ronny