problem mit Login mit Hilfe von PHP und mySQL

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

  • #46
    Auch wenn ich nicht Happy bin:

    $userpass = $HTTP_POST_VARS[md5 ("UserPass")];

    sollte wohl

    $userpass = md5 ($HTTP_POST_VARS['UserPass']);

    sein.

    Kommentar


    • #47
      Auch wenn du nicht Happy bist aber ich bins jetzt denn es ist wohl noch immer zu warm hier bei mir

      aber hab da noch ang nee Änderung am Script vorgenommen ich schreibs jetzt mal hier mit rein weils irgendwie dazu passt. Ich hab noch ein Feld userlevel in der Spalte um den Usern Zahlen von 1-x zu zordnen. Ich wollte das jetzt dann so unterbinden das man die Links sieht. Allerdings habe ich jetzt einen zweiten User in die Spalte eingetragen mit Berechtigung 3 und ich habe 1. Allerdings seh ich jetzt die 1er Links und auch noch die 3 weil da wohl ein zweiter User drin steht Ich muß da irgendwo nenn denkfehler gemacht ham

      PHP-Code:
      <?
                  $abfrage = "SELECT * FROM users";
      $ergebnis = mysql_query($abfrage);
        while($ausgabe = mysql_fetch_array($ergebnis)){ if($ausgabe[userlevel]=="1"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">User eintragen</a>";}
                                if($ausgabe[userlevel]=="2"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">Link
                      eintragen</a>";}
                                if($ausgabe[userlevel]=="3"){echo "Pech";};?>

      Kommentar


      • #48
        hä?

        wenn du 1 hast, bekommst du nen link gezeigt,
        der zweite user sollte pech gezeigt bekommen.

        was läuft jetzt falsch?

        Kommentar


        • #49
          Ja klar ich hab eins bekomme auch den Link gezeigt aber zusätzlich sehe ich auch noch den dreier (also Pech) wenn ich den User mit der 3 aus der DB lösche sind auch die Links weg.

          Vielleicht muss ich das mit der Session aus dem Login noch zusammen hängen. Oder weiß jemand nee andere möglichkeit das bestimmt links nur den Usern mit der entsprechenenden Level Nummer gezeigt werden ?

          Kommentar


          • #50
            ist doch logisch!

            du hast doch ne whileschleife da!

            beim ersten durchlauf wird der link für dich angezeigt, und beim zweiten wird pech für den anderen angezeigt. somit siehst du alles.

            mach mal

            SELECT userlevel FROM users where UserName = username
            (anpassen)

            Kommentar


            • #51
              kann man da jetzt auch noch cookoes einbauen??

              Kommentar


              • #52
                Original geschrieben von TobiaZ
                ist doch logisch!

                du hast doch ne whileschleife da!

                beim ersten durchlauf wird der link für dich angezeigt, und beim zweiten wird pech für den anderen angezeigt. somit siehst du alles.

                mach mal

                SELECT userlevel FROM users where UserName = username
                (anpassen)
                So ich hab das mal prbiert so wie du es vorgeschlagen hast:

                PHP-Code:
                <?
                            $abfrage = "SELECT userlevel FROM users WHERE UserName = username ";
                $ergebnis = mysql_query($abfrage);
                  while($ausgabe = mysql_fetch_array($ergebnis)){ if($ausgabe[userlevel]=="1"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">User eintragen</a>";}
                                          if($ausgabe[userlevel]=="2"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">Link
                                eintragen</a>";}
                                          if($ausgabe[userlevel]=="3"){echo "Pech";};?>
                Ich denke mal du meintes das "username" nach UserName sollte vielleicht die Variable aus dem Loginscript sein ? Das hab ich dann zumindest mal probiert aber dann war überhauptnix zu sehen:

                PHP-Code:
                <?
                            $abfrage = "SELECT userlevel FROM users WHERE UserName='".$name."'";
                $ergebnis = mysql_query($abfrage);
                  while($ausgabe = mysql_fetch_array($ergebnis)){ if($ausgabe[userlevel]=="1"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">User eintragen</a>";}
                                          if($ausgabe[userlevel]=="2"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">Link
                                eintragen</a>";}
                                          if($ausgabe[userlevel]=="3"){echo "Pech";};?>
                @tobi1986m

                klar kannst cookies einbauen nur warum ist halt die Frage

                Kommentar


                • #53
                  was steht in $name?

                  mach mal
                  PHP-Code:
                  echo $abfrage
                  direkt nach $abfrage=...

                  btw: check_user liefert dir die id des users, nimm doch einfach die
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #54
                    $name muss dann der UserName (!) sein, mit dem du gerade eingeloggt bist.

                    Kommentar


                    • #55
                      Ich weiß net was TobiaZ mir damit erklären wollte.

                      Hab mal die Abfrage gemacht:

                      PHP-Code:
                      SELECT userlevel FROM users WHERE UserName='' 
                      Das kam raus.

                      Ich wollte ja nur erreich das der Link nur an gezeigt wird wenn der User der sich eingeloggt hat (dein Loginscript) z.B. das userlevel (Feld userlevel) 1 hat und der die das Userlevel 3 hat sieht es z.b nicht:

                      PHP-Code:
                      <?
                                  $abfrage = "SELECT userlevel FROM users WHERE UserName='".$name."'";
                                  echo $abfrage;
                      $ergebnis = mysql_query($abfrage);
                        while($ausgabe = mysql_fetch_array($ergebnis)){ if($ausgabe[userlevel]=="1"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">User eintragen</a>";}
                                                if($ausgabe[userlevel]=="2"){echo "<a href=\"".$seitenurl.$seitenpfad."usereintragen.php\">Link
                                      eintragen</a>";}
                                                if($ausgabe[userlevel]=="3"){echo "Pech";};?>
                      EDIT:

                      hab gleichzeitig geschrieben wie TobiaZ geantwortet hat. Ja in mrhappiness Loginscript wird der Username ja in der Variablen $name gespeichert. Wie ich ja schon mal geschrieben habe wenn ich die Abfrage so gemacht habe mit der Varibeln $name drin hat es gleich garnichts angezeigt.
                      Zuletzt geändert von Brecherle; 04.08.2003, 11:07.

                      Kommentar


                      • #56
                        ich speicher gar nix in$name, das nehm ich nur innerhalb von check_user

                        in der login.php kriegst du ja mittels $userid=check_user(...) die userid geliefert, probier mal
                        Code:
                        SELECT userlevel
                        FROM users
                        WHERE UserId=$userid
                        bzw., wenn er eingeloggt ist:
                        PHP-Code:
                        $sql="SELECT userlevel
                        FROM users
                        WHERE UserSession='"
                        .session_id()."'"
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #57
                          Happy ich bin fröhlich .

                          Das erste hatte ich schonausprobiert das ging nicht. Aber deine zweite Version mit der Session ID die klappt einwandfrei

                          Kommentar


                          • #58
                            Muss ich doch noch mal dich fragen ob du weißt was ich da ändern müsste um das der User sein Passwort in der DB ändern kann . Habe nämlich dein Script soweit erweitert das man ja User anlggen kann per Formular und nun soll man auch die Daten ändern können dabei kann der Admin alle ändern und der einzelne User je nach Userlevel bzw. nur sich ändern.

                            Das ist das Formular wo der User seine Daten eingibt:

                            PHP-Code:
                            <?

                                $abfrage = "select * from users where";
                                $abfrage .= " UserID = '$update' LIMIT 1";

                                $ergebnis = mysql_query($abfrage) or die (mysql_error());
                                $row = mysql_fetch_assoc($ergebnis) or die(mysql_error());
                            ?>


                            <table width="60%" class="haupt"><form action="userupdate.php" method="post">
                                <tr>

                                    <td colspan="2" class="toptitle">Bitte Daten eingeben:&nbsp;<td>
                                </tr>
                                <tr>
                                    <td class="title">Username:</td>
                                    <td><input class="textfeld" type="text" size="20" name="UserName" value="<? echo $row['UserName'] ?>"><td>
                                </tr>
                                <tr>
                                    <td class="title">Userpass:</td>
                                    <td><input class="textfeld" type="password" size="20" name="UserPass" value="<? echo $row['UserPass'] ?>"></td>
                                </tr>
                                <tr>
                                    <td class="title">E-Mail:</td>
                                    <td><input class="textfeld" name="UserMail" size="20" value="<? echo $row['UserMail'] ?>"></td>
                                </tr>
                            <tr>
                                    <td class="title">Vor-Nachname:</td>
                                    <td><input class="textfeld" type="text" size="20" name="name" value="<? echo $row['name'] ?>"><td>
                                </tr>
                                <tr>
                                    <td class="title">Userlevel (1-10):</td>
                                    <td><input class="textfeld" type="text" size="20" name="userlevel" value="<? echo $row['userlevel'] ?>"><td>
                                </tr>
                                <tr>
                                    <td></td>
                                    <td><input type="hidden" size="10" name="UserID" value="<? echo $row['UserID'] ?>"><td>
                                </tr>
                            <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                </tr>

                                <tr>
                                    <td>&nbsp;</td>
                                    <td><input class="button" type="submit" name="eintrag" value="Abschicken" class="button"> <input
                                    type="reset" name="loeschen" value="Löschen" class="button"></td>
                                </tr></form>
                            </table>
                            Ich denk aber mal das daran nix falsch ist denn er ändernt alle Daen nur die des Passwortes irgendwie nicht
                            Darum jetzt hier mein SQL Anweisung um die Daten zu aktualisieren:

                            PHP-Code:
                            <?
                              $aendern = "UPDATE
                                            users
                                        SET
                                            UserName = '".$UserName."',
                                            UserPass = '".md5 ('$UserPass')."',
                                            UserMail = '".$UserMail."',
                                            name = '".$name."',
                                            userlevel = '".$userlevel."'
                                        WHERE
                                            UserID = '".$_POST['UserID']."'";

                            $update = mysql_query($aendern) or die(mysql_error()) ?>
                            Also wie gesagt er ändert mir alles nur nicht das Passwort. Muss ich da vielleicht noch was beachten bei der MD5 Sache ? ich habs jetzt so angedacht das der User einfach im Passwort feld das alte Passwort rauslöscht und sein neues ändert. Aber ich denke hier liegt das Problem wohl denn im Formular zeige ich die MD5 Verschlüsselung aus der Datenbank an. Ich müsste da jetzt wohl noch ein weiteres Feld machen neues Paswort oder so ? Denn wenn der doch dann das Passwort nicht ändert sondern die Zahl drin stehen lässt setzt das Update doch die Zahlen in die Datenbank und verschlüsselt die dabei neu oder ?

                            Kommentar


                            • #59
                              passwort ändern:

                              - user meldet sich an => du hast seine userid
                              - user gibt sein altes passwort ein
                              - user gibt sein neues passwort ein
                              - user gibt sein neues passwort nochmal ein (zur bestätigung und gegen den dibfällerdoivel)

                              wenn die beiden neuen passwortangaben identisch sind machst du das hier:
                              Code:
                              UPDATE users
                              SET userpass=MD5($neuespasswort)
                              WHERE userid=$dieiddesusershalt AND userpass=md5($altespasswort)
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar


                              • #60
                                Mh, von der Idee her okay aber mögen tut er das nicht

                                Das ist das stück formular:
                                PHP-Code:
                                <tr>
                                        <
                                td class="title">Altes Passwort:</td>
                                        <
                                td><input class="textfeld" type="password" size="20" name="userpassalt" ></td>
                                    </
                                tr>
                                    <
                                tr>
                                        <
                                td class="title">Neues Passwort:</td>
                                        <
                                td><input class="textfeld" type="password" size="20" name="userpassneu" ></td>
                                    </
                                tr
                                und das dann der Update teil:

                                PHP-Code:
                                <?
                                  $aendern = "UPDATE
                                                users
                                            SET
                                                UserName = '".$UserName."',
                                                UserPass = '".MD5 ('$userpassneu')."',
                                                UserMail = '".$UserMail."',
                                                name = '".$name."',
                                                userlevel = '".$userlevel."'
                                            WHERE
                                                UserID = '".$_POST['UserID']."'
                                              AND
                                                UserPass = '".MD5 ('$userpassalt')."'";

                                $update = mysql_query($aendern) or die(mysql_error()) ?>
                                Aber ein Update im Bereich Passwort macht er nicht.

                                Kommentar

                                Lädt...
                                X