mark: passwort abfrage

schönen guten morgen..
bin noch recht neu in php
habe mal ne kleine frage

vor disem script hiet steht ein formular mit den eingabefeldern
mpguest=username
mpdoor=passwort
funktioniert alles so weit
habe in einer datenbank die sachen gespeichert
nur weiß ich nicht wie die abfrage aussehehn muss

$mpguest == $mpuser_sql && $mppass == $mppass_sql
das hier ist zu wenig kann man sich trotzdem einlogen mit keinem namen oder mit eienm nicht vorhandenen in der datenbank
daz einzige was kunktioniert ist ich kann mich nicht einloggen wenn ich einen namen aus den datenbank nehme aber ein falsches passwort nehme dann geht es... wie kann ich die abfrage erweiter das es funst???

<?
$mpguest = $_POST['mpguest'];
$mpdoor = $_POST['mpdoor'];

$mppass = md5($mpdoor);

$select_log = mysql_query("select * from mp_master where mpuser='$mpguest'");

while($row_log = mysql_fetch_array($select_log))
   {
      $mpuser_sql = $row_log[0];
      $mppass_sql = $row_log[1];
   }

if($mpguest == $mpuser_sql && $mppass == $mppass_sql)
{
    session_start();
    session_register("SESSION_pass");
    $SESSION_pass = $mppass_sql;
}
mark

  1. schönen guten morgen..
    bin noch recht neu in php
    habe mal ne kleine frage

    vor disem script hiet steht ein formular mit den eingabefeldern
    mpguest=username
    mpdoor=passwort
    funktioniert alles so weit
    habe in einer datenbank die sachen gespeichert
    nur weiß ich nicht wie die abfrage aussehehn muss

    $mpguest == $mpuser_sql && $mppass == $mppass_sql
    das hier ist zu wenig kann man sich trotzdem einlogen mit keinem namen oder mit eienm nicht vorhandenen in der datenbank
    daz einzige was kunktioniert ist ich kann mich nicht einloggen wenn ich einen namen aus den datenbank nehme aber ein falsches passwort nehme dann geht es... wie kann ich die abfrage erweiter das es funst???

    <?
    $mpguest = $_POST['mpguest'];
    $mpdoor = $_POST['mpdoor'];

    $mppass = md5($mpdoor);

    $select_log = mysql_query("select * from mp_master where mpuser='$mpguest'");

    while($row_log = mysql_fetch_array($select_log))
       {
          $mpuser_sql = $row_log[0];
          $mppass_sql = $row_log[1];
       }

    if($mpguest == $mpuser_sql && $mppass == $mppass_sql)
    {
        session_start();
        session_register("SESSION_pass");
        $SESSION_pass = $mppass_sql;
    }
    mark

    ich muss ja eigentlich nur wissen ob $mpuser_sql und $mppass_sql
    leer sind aber wie schreibe ich das in die abfrage???
    so geht es nicht:

    $mpuser_sql !="" && $mppass_sql !=""

    wie kann ich da noch machen?

    mark

    1. Hello,

      ich muss ja eigentlich nur wissen ob $mpuser_sql und $mppass_sql
      leer sind aber wie schreibe ich das in die abfrage???
      so geht es nicht:

      $mpuser_sql !="" && $mppass_sql !=""

      In der Datenbank dürfen keine leeren Datansätze stehen; dafür musst Du sorgen.
      Und als zusätzliche Hürde überprüft man dann noch die Anmeldeparameter bei der Anmeldung. Selbst wenn dann mal ein leerer Datensatz in die Tabelle gerutscht sein sollte (was ja schon ein schwerer Fehler ist) kann dann keine Abfrage darauf gemacht werden.

      if (isset($_POST['mpguest'] and isset($_POST['mpdoor']))
        {
          $mpguest = trim(stripslashes($_POST['mpguest']));
          $mpdoor =  trim(stripslashes($_POST['mpdoor']));
        }
        else
        {
          ## Fehlermeldung, dass was fehlt
          exit;
        }

      if((strlen($mpguest)==0) or (strlen($mpdoor)==0))
        {
          ## Fehlermeldung, dass was fehlt
          exit;
        }

      ## und hier dann so weiter, wie vorhin beschrieben.
        ## MySQL_escape_string() nicht vergessen!

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hello,

        ich muss ja eigentlich nur wissen ob $mpuser_sql und $mppass_sql
        leer sind aber wie schreibe ich das in die abfrage???
        so geht es nicht:

        $mpuser_sql !="" && $mppass_sql !=""

        In der Datenbank dürfen keine leeren Datansätze stehen; dafür musst Du sorgen.
        Und als zusätzliche Hürde überprüft man dann noch die Anmeldeparameter bei der Anmeldung. Selbst wenn dann mal ein leerer Datensatz in die Tabelle gerutscht sein sollte (was ja schon ein schwerer Fehler ist) kann dann keine Abfrage darauf gemacht werden.

        if (isset($_POST['mpguest'] and isset($_POST['mpdoor']))
          {
            $mpguest = trim(stripslashes($_POST['mpguest']));
            $mpdoor =  trim(stripslashes($_POST['mpdoor']));
          }
          else
          {
            ## Fehlermeldung, dass was fehlt
            exit;
          }

        if((strlen($mpguest)==0) or (strlen($mpdoor)==0))
          {
            ## Fehlermeldung, dass was fehlt
            exit;
          }

        ## und hier dann so weiter, wie vorhin beschrieben.
          ## MySQL_escape_string() nicht vergessen!

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        danke schön vielen vielen dank

        kann ich hier sowas schreiben??

        if($select_log and (mysql_num_rows($select_log)==1))
          {
              session_start();
              $_SESSION['sess_id'] = session_id();
              $_SESSION['pass'] = $mppass_sql;
              $_SESSION['login'] = time();

        $query ='1';
        ----> $_SESSION['query'] = $query;

        }

        if ($_SESSION['query']=='1')

        {
        echo"passwortgeschützter bereich"
        }
        geht das so oder ist das schlecht?

  2. Hello,

    <?
      ## wenn get_magic_quotes_gpc == true ist, stipslashes verwenden,
      ## aber auf jeden Fall die Escapes für MySQL durchführen:

    $mpguest = mysql_escape_string(stripslashes($_POST['mpguest']));
      $mpdoor =                     (stripslashes($_POST['mpdoor']));

    ## dann benötigt man nicht vorher die mysql_escape_string-Funktion...
      $mppass = md5($mpdoor);

    $select_log = mysql_query("select * from mp_master where mpuser='$mpguest'
                                 and mppass = '$mppass' ");

    if($select_log and (mysql_num_rows($select_log)==1))
      {
          session_start();
          $_SESSION['sess_id'] = session_id();
          $_SESSION['pass'] = $mppass_sql;
          $_SESSION['login'] = time();
      }

    So ungefähr geht das auch. Man sucht einen Datensatz, bei dem Logiiname und Passwort zueienander passen. Es muss genau einen geben. Das setze natürlich voraus, dass es den Anmeldenamen nicht mehrfach in der Tabelle gibt.

    Außerdem solltst Du sesseio_register() und seine Brüder nicht mehr verwenden, sondern die Direkzuweisung an ein  Element des Array $_SESSION vornehmen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      <?
        ## wenn get_magic_quotes_gpc == true ist, stipslashes verwenden,
        ## aber auf jeden Fall die Escapes für MySQL durchführen:

      $mpguest = mysql_escape_string(stripslashes($_POST['mpguest']));
        $mpdoor =                     (stripslashes($_POST['mpdoor']));

      ## dann benötigt man nicht vorher die mysql_escape_string-Funktion...
        $mppass = md5($mpdoor);

      $select_log = mysql_query("select * from mp_master where mpuser='$mpguest'
                                   and mppass = '$mppass' ");

      if($select_log and (mysql_num_rows($select_log)==1))
        {
            session_start();
            $_SESSION['sess_id'] = session_id();
            $_SESSION['pass'] = $mppass_sql;
            $_SESSION['login'] = time();
        }

      So ungefähr geht das auch. Man sucht einen Datensatz, bei dem Logiiname und Passwort zueienander passen. Es muss genau einen geben. Das setze natürlich voraus, dass es den Anmeldenamen nicht mehrfach in der Tabelle gibt.

      Außerdem solltst Du sesseio_register() und seine Brüder nicht mehr verwenden, sondern die Direkzuweisung an ein  Element des Array $_SESSION vornehmen.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      coool danke....
      und wie kann ich jetzt quasi auf den nachfolgenden seiten prüfen ob er noch eingeloggt ist?
      damit ich quasi diese abfrage nicht auf jeder seite schreiben muss??

      if($mppass_sql == ???)
      {
          echo $content;
      }

      oder wie mache ich das jetzt?

      und wozu brauch ich das?

      $_SESSION['login'] = time();

      1. Hello,

        if($select_log and (mysql_num_rows($select_log)==1))
          {
              session_start();
              $_SESSION['sess_id'] = session_id();
              $_SESSION['pass'] = $mppass_sql;
              $_SESSION['login'] = time();      ## das sollte man vorher in eine Variable

        $_SESSION['lastclick'] = time();  ## packen, damit auch in beiden dasselbe drinsteht

        }

        So ungefähr geht das auch. Man sucht einen Datensatz, bei dem Logiiname und Passwort zueienander passen. Es muss genau einen geben. Das setze natürlich voraus, dass es den Anmeldenamen nicht mehrfach in der Tabelle gibt.

        coool danke....

        bitte.

        und wie kann ich jetzt quasi auf den nachfolgenden seiten prüfen ob er noch eingeloggt ist?
        damit ich quasi diese abfrage nicht auf jeder seite schreiben muss??

        Du prüfst als erstes, ob ein Cookie für session_name() bzw den Sessionnamen, den Du benutzt gesendet wurde

        $sessionnname = ... ;

        if (isset($_COOKIE[$sessionname]) and strlen($_COOKIE[$sessionname]==32)
          {
            session_start();
          }

        ## von hier ab sind die Sessionvraiablen vorhanden

        if (isset($_SESSION['login']) and ($_SESSION['login'] > 0))      ## ist er überhaupt angemeldet?
          {
            ## hier kann man dann noch prüfen, wie lange der Surfer schon angemeldet ist.
            if (isset($_SESSION['lastclick'])
                and ($_SESSION['lastclick']-($_SESSION['login']) <= MAXWAIT))
            {
              ## alles OK
              $_SESSION['lastclick'] = time();
              ## weitermachen lassen

        }
            else
            {
              ## Session zwangslöschen und
              ## Neuanmeldung anfordern.
            }

        }

        Mal Dir auf jeden fall ein Bild, was wann zu prüfen ist in welcher Reihenfolge.
        Es empfiehlt sich aber, die Rechte in der DB jedes Mal zu prüfen. Dann kann man die nämlich auch während einer Session des Users ändern und beim nächsten Click gelten diese bereits.

        Also müsstest Du die Verfahren noch etwas modifizieren.

        Außerdem solltest Du dich entscheiden, ob Du Cookies vorschreiben willst. Sonst wäre es ja Quatsch, danach zu Fragen. Ich würde das aber empfehlen.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau