Login mit Hilfe von PHP und mySQL

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

  • Login mit Hilfe von PHP und mySQL

    Hallo zusammen!

    Ich habe noch eine kleine Bitte
    Ich habe auf meiner Seite ein Menü, und dort gibt es eine Hand voll Links, die nur angezeigt werden sollen, wenn ein Member eingelogged ist. Könnte mir da jmd mit dem Code helfen? Bisher habe ich noch nichts funktionierendes zusammen bekommen.

    Danke schonmal im vorraus!
    www.freshn.de

  • #2
    Du musst Gruppen einteilen zum beispiel Admin hat ne 2 und darf alles sehen und user hat die 1 und darf nicht alles sehen.

    Kommentar


    • #3
      Ne, es geht mir nicht um Gruppen innerhalb der registrierten Member, sondern darum, dass alle Member zb einen Link sehen und nicht-Member nicht.

      if member -> link wird gesehen
      else nicht

      so etwa
      www.freshn.de

      Kommentar


      • #4
        PHP-Code:
        if (logged_in()) {
          echo 
        'geheim';

        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          grüßt euch!

          da ich mich ebenfalls auf besagtes Tutorial beziehen möchte, aber
          keinen neuen thread dafür aufmachen wollte, häng ich mich hier unten
          mal ran.

          das tutorial habe ich auf meine seite angewandt und angepaßt was die
          datenbank angeht. es läuft so gesehn alles ordentlich nur hab ich gerade
          ein verständnisproblem, was den sicheren bereich angeht.

          wenn login.php implementiert ist und es nach dem einloggen auf die
          folgeseiten geht, steht doch am anfang immer ein include was auf die
          logged_in.php verweist. in dieser wird doch geprüft, ob derjenige, der
          sich auf dieser seite befindet eingeloggt ist oder nicht.
          logged_in.php includiert widerum die sessionhelper in der die funktion
          zur kontrolle steht.

          gesetzt den fall, ich komme nicht über den regulären login-weg
          auf eine geschützte seite sondern von außerhalb, zeigt mir die logged_in
          zwar an, daß ich nicht eingeloggt bin, aber das wars auch schon - die
          seite wird trotzdem angezeigt.
          nun war mein gedankengang, in die logged_in über den header
          befehl die login.php als ziel auszugeben, was natürlich nicht klappte,
          weil ja die sessionhelper vorher schon geladen wurde und somit die
          üblichen fehlermeldungen kommen.

          besteht die möglichkeit irgendwo anders über den "header" weg automatisch
          zurück zum login zu gelangen oder wird das im fall des tutorials kritisch?
          auf eine js weiterleitung wollte ich verzichten, da das ja nur zieht wenn
          es vom browser akzeptiert wird.


          danke fürs roman lesen - ich freue mich über jeden hinweis.
          Zuletzt geändert von berserc_inc.; 15.10.2007, 16:03.

          Kommentar


          • #6
            da ich mich ebenfalls auf besagtes Tutorial beziehen möchte, aber keinen neuen thread dafür aufmachen wollte, häng ich mich hier unten mal ran.
            Erster Pluspunkt! Willkommen.

            gesetzt den fall, ich komme nicht über den regulären login-weg auf eine geschützte seite sondern von außerhalb, zeigt mir die logged_in zwar an, daß ich nicht eingeloggt bin, aber das wars auch schon - die seite wird trotzdem angezeigt.
            Dann solltest du statt einer einfachen ausgabe wie echo "du bist nicht eingeloggt"; die Ausführung des Scriptes beenden. Z.B. mit die() oder exit;

            nun war mein gedankengang, in die logged_in über den header befehl die login.php als ziel auszugeben, was natürlich nicht klappte, weil ja die sessionhelper vorher schon geladen wurde und somit die üblichen fehlermeldungen kommen.
            Nein, dass sollte nicht der Grund für die Fehlermeldung sein. Vielmehr wirst du vermutlich irgendwo eine Ausgabe machen, die dort natürlich nicht hingehört.

            besteht die möglichkeit irgendwo anders über den "header" weg automatisch zurück zum login zu gelangen oder wird das im fall des tutorials kritisch?
            auf eine js weiterleitung wollte ich verzichten, da das ja nur zieht wenn es vom browser akzeptiert wird.
            Versuche das Problem dort zu beheben, wo es auftritt. Eine andere (frühere) Stelle zum redirect gibt es ohnehin nicht.

            danke fürs roman lesen - ich freue mich über jeden hinweis.
            Kurz und knapp hätte auch gereicht. Aber viel schlimmer war es den Roman zu zitieren, weil du andauernd mitten im Satz nen zeilenumbruch reingehauen hast, den kein Mensch braucht... (Punktabzug!)

            Kommentar


            • #7
              Gruß TobiaZ.

              An die Stelle des echos mit "nicht eingeloggt" wollte ich den header
              setzen - der bisher rummäkelte.
              Der Hinweis mit dem die bzw. exit ist aber auch cool - ich kann ja
              vorher die login.php includen und danach ein die/exit setzen.
              So könnte ich die headergeschichte umgehen.

              Ich habe die sessionhelper komplett übernommen und entsprechend
              an die hiesigen gegebenheiten bei mir angepaßt. trotzdem meckert
              header an der letzten zeile der sessionhelper rum, wo genau ein ?>
              steht. meine vermutung ist: da ja jede funktion werte an die
              "höheren" dateien zurückgibt, wird das ebenfalls von header
              bemängelt.
              Na gut - wenn die Meinung vertreten wird, daß die sessionhelper vom
              grundsatz her vor einem headerbefehl stehen kann und header nicht
              meckert, dann setz ich mich nochmal ran.


              um den Punktabzug in Frage zu stellen, muß ich als Typograph
              vehement Protest einlegen:

              Zeilenlänge: Die optimale Zeilenlänge hängt davon ab, welcher
              Typus von Lesetypografie (Willberg/Forssman 1997) für den Text
              zutrifft: Für „lineares Lesen“ (schöngeistige Literatur) beträgt sie
              60–70 Zeichen (Wortabstände eingeschlossen), für „informierendes
              Lesen“ 40–50 Zeichen und für „differenzierendes Lesen“ bis zu 80
              Zeichen (vgl. Willberg/Forssman 1997).


              Habt Ihr Euch schonmal gefragt, warum das Eingabefeld (in das ich
              diesen Text tippe) ohne manuelle Eingriffe in die Typo genau
              70 Zeichen in einer Zeile faßt?
              Genau... weil es angenehm zu lesen ist....

              Warum pochen so ziemlich alle "Master" bei hier geposteten Code-
              schnipseln auf Zeilenumbrüche im Quelltext?
              Genau... weil es angenehm zu lesen ist....

              Beides hat einen tieferen Sinn - und irgendeine höhere Gewalt fand
              das cool und meinte, daß es Menschen gibt, die das "brauchen".


              Dank Dir für die schnelle Antwort und angenehmen Abend.

              berserc_inc.
              Zuletzt geändert von berserc_inc.; 15.10.2007, 23:14.

              Kommentar


              • #8
                trotzdem meckert header an der letzten zeile der sessionhelper rum, wo genau ein ?> steht.
                Fehler gibt es nur wenn vor header / session_start Ausgaben irgendeiner Art gemacht wurden. Dazu gehört HTML genauso wie Leerzeichen außerhalb von PHP Tags. Auch UTF-8 Header können Probleme machen, dazu einfach die Suche konsultieren. Header selber (wie von session_start gehören nicht dazu.
                um den Punktabzug in Frage zu stellen, muß ich als Typograph
                Wir hattten diese Disskussion schon einmal und ich möchte in diesem Zusammenhang nochmals betonen das es für Menschen die schnell lesen können wesentlich einfacher ist längere Zeilen zu lesen. So hat man einen besseren Überblick und kann den Text schneller überfliegen, weil die nächste Zeile zum Beispiel schon bei der Rückbewegung der Augen gelesen werden kann. Wem das nicht gefällt empfehle ich das Browserfenster kleiner zu ziehen. Deine typografischen Einwände sind sicherlich berechtigt, sollten aber auf den Printbereich beschränkt werden. Wenn ich eine DIN A4 Seite nehme und auf den für Text freien Bereich hier im Forum über meinen Bildschirm lege wird die Breite fast ausgefüllt.
                Warum pochen so ziemlich alle "Master" bei hier geposteten Codeschnipseln auf Zeilenumbrüche im Quelltext? Genau... weil es angenehm zu lesen ist....
                Und auch das ist schlichtweg falsch. Text in [ CODE ] und [ PHP ] Tags wird hier nicht umgebrochen um evtl. Fehler die dadurch im Quelltext entstehen zu vermeiden. Der Benutzer wird daher aufgefordert auf eine normale Bildschirmbreite von 1024 Pixeln Rücksicht zu nehmen. Das hat mit Leserlichkeit an sich überhaupt nichts zutun.
                Zuletzt geändert von tontechniker; 15.10.2007, 23:36.
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #9
                  Tontechniker - DANKE!

                  der hinweis auf das penetrante leerzeichen war der ausschlaggebende punkt - ich hab das ding hinter der klammer nicht bemerkt und dauernd auf den kompletten code gestarrt ohne was zu finden. hab schon selber an mir und meinen rudimentären programmierkenntnissen gezweifelt :-(

                  ;-) ich laß es mal bei dem spaß und will kein böses blut bzgl typogeschichten - ich muß nur grinsen: allein die aussage, daß eine anpassung auf 1024 nicht im geringsten etwas mit leserlichkeit zu tun hat, sollte in ruhe bei einem bier nochmal überdacht werden - wenn man zwei ecken weiter denkt, wird man feststellen, daß es sehr wohl was mit leserlichkeit zu tun hat - nicht zuletzt weil quellcode "in schön" bei der fehlersuche und auch anderem kram einfach leckerer ist.
                  nettes thema - falsches forum!

                  vielen dank euch beiden für die schnelle und kompetente hilfe!

                  berserc_inc.
                  Zuletzt geändert von berserc_inc.; 16.10.2007, 13:26.

                  Kommentar


                  • #10
                    Huhu zusammen.

                    Auch ich habe ein "kleines Problem mit dem Tutorial von Mrhappyness.
                    Um dem Forum einen neuen Post zu ersparen füge ich mich hier gleich mal hinzu, und hoffe ihr könnt mir weiterhelfen.

                    Und zwar:

                    Ich habe das Tut bis auf ein paar Layoutveränderungen übernommen.
                    Dazu habe ich eine Regestrierung gebastelt, welche an sich auch funktioniert.
                    Die Regestrierung nimmt die Daten auf und sendet sie in die DB wo sie unter einer neuen ID gespeichert werden.
                    Jetzt kommt der Fehler den ich nicht zu definieren im stande bin.
                    Ich gehe zurück auf die login.php trage dort die Daten ein und drücke den Button.
                    Jedoch anstatt die Eingabe zu bestätigen sagt er jedes mal das die Daten ungültig sind...
                    Das Passwort wurde, genauso wie das Testpasswort von mrhappyness, auf der Regestrationsseite mit md5 verschlüsselt.

                    Könnt ihr mir helfen?

                    Codes poste ich hier noch keine da ich nicht wirklich weis was in diesem Fall relevant ist, und euch nicht unnötiger leserei aussetzen möchte *G*.
                    Ich werde diese natürlich nachtragen sobald ihr mir sagt wo ich anfangen kann zu suchen.

                    Grüsse Richard
                    Zuletzt geändert von Ritschie; 01.02.2009, 16:30.

                    Kommentar


                    • #11
                      Fange damit an, dass du in dem Script, welches die Formulardaten verarbeiten soll, Kontrollausgaben dieser machst (var_dump() bietet sich an).

                      Und stelle das error_reporting auf E_ALL (und display_errors auf on), sofern es das nicht bereits ist.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        vardup gibt folgendes aus:

                        bool(false)

                        weshalb weis ich nicht....

                        betroffene code teile sind:


                        aus der login.php
                        Zeile 29 - 36
                        PHP-Code:
                        if (isset($_POST['login']))
                        {
                            
                        $userid=check_user($_POST['username'], $_POST['userpass']);
                            if (
                        $userid!=false)
                                
                        login($userid);
                            else
                        echo 
                        'Ihre Anmeldedaten waren nicht korrekt!';

                        und aus der sessionhelpers.inc.php
                        Zeile 8 - 22
                        PHP-Code:
                        function check_user($name$pass)
                        {
                            
                        $sql="SELECT UserId
                            FROM users
                            WHERE UserName='"
                        .$name."' AND UserPass=MD5('".$pass."')
                            LIMIT 1"
                        ;
                            
                        $resultmysql_query($sql) or die(mysql_error());
                            if ( 
                        mysql_num_rows($result)==1)
                            {
                                
                        $user=mysql_fetch_assoc($result);
                                return 
                        $user['UserId'];
                            }
                            else
                                return 
                        false;

                        Kommentar


                        • #13
                          Original geschrieben von Ritschie
                          vardup gibt folgendes aus:

                          bool(false)
                          Die Funktion heisst var_dump.

                          Und var_dump von was soll false sein?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Entschuldigung
                            Tippfehler meinerseits^^


                            var_dump von $userid ist false, wenn ich mich einloggen versuche..

                            dies war meinerseits der effektivste wert welcher zur überprüfung stand

                            sorry das ich mich ein wenig ungeschickt anstelle ich bin noch nicht so weit mit meinen PhP kenntnissen und eigentlich noch am lernen^^
                            Zuletzt geändert von Ritschie; 01.02.2009, 17:39.

                            Kommentar


                            • #15
                              Ich sagte, dass du zuallererst die per Formular uebergebenen Werte kontrollieren sollst - ob diese einen Erwartungen entsprechen.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X