Aktivierungslink, aber wie?

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

  • Aktivierungslink, aber wie?

    Hi!

    Ich habe in diesem Forum schon eine Menge zum Thema Aktivierungslink gefunden, aber so wirklich geholfen hats mir leider nicht.

    MySQL Tabelle:
    - id
    - nick
    - mail
    - pw
    - time
    - code (Hier wird der vorher generierte Aktivierungscode gespeichert.)
    - code2 (True/False, ob Aktivierungscode richtig war. Später ist mir aufgefallen, dass ich dieses Feld eigentlich garnicht brauche, da ich einfach folgendes machen könnte: wenn 'code' == leer, Aktivierung == true; Hinterher ist man immer schlauer.)

    Theoretisch ist das mit der Freischaltung klar. Wenn ich dafür ein Text-Input nehme, funktioniert es auch, aber ich möchte die benutzerfreundliche Variante: den Link!

    Falls jemand ein ausführliches Tutorial zu dem Thema kennt, bitte lass es mich wissen. Ansonten wäre es nett, wenn mir jemand gut/genau erklären könnte, wie das geht.

    Also, wie schon gesagt, theoretisch könnte ich sicher folgen, nur fällt mir (momentan) nichts ein

    Hocke schon seit zwei Tagen dran. Wäre euch sehr dankbar!

    Gruß, Carapau
    Lasst euch nicht lumpen, hoch den Humpen!

  • #2
    Hmm. Wenn es mit dem Input feld kein Problem ist, warum ist dann der Link ein Problem?

    Ein Inputfeld wird über ein Formular abgeschickt, d.H du hast die Variable in bsp. $_POST["code"] stehen die du wiederum mit dem in der Datenbank vorhandenen Code vergleichen kannst.

    Der Link

    http://www.deinedomain.de?code=sdf45wW234

    wird mit $_GET["code"] ausgelesen und damit genauso verfahren wie mit $_POST und dem Formular.

    Oder verstehe ich dich falsch?
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Ahhh langsam klingelts

      Also du meinst, ich solle in der Mail an den User den Link schicken:

      www.domain.de/index.php?seite=code=$code

      und dann, beim Überprüfen teile ich den Link in 2 Teile: $url + $code ,
      dann vergleiche ich $code mit 'code' aus der DB und ich habs

      Aber ich glaub du meinst es etwas anders..

      Denkste so reichts?

      Gruß,
      Carapau
      Lasst euch nicht lumpen, hoch den Humpen!

      Kommentar


      • #4
        Ich meine es allerdings anders

        www.domain.de/index.php?seite=code=$code

        Is nich dein ernst???

        Wenn du an eine Domain ein ?code=12345 anhängst (kannste gerne ausprobieren ) gibt dir php mit

        PHP-Code:
        echo $_GET["code"]; 
        einfach 12345 zurück.. Das ist dir hoffentlich klar

        Dein Hauptscript schaut nach ob der Accout aktiviert wurde und lässt somit das Login zu oder nicht.

        Du Scriptest einfach eine php datei die nur für die Aktivierung zuständig ist und nichts weiter macht.

        Dem Aktivierungslink schiebst du 2 Variablen unter.. Email + Code, dieser sieht dann so aus

        Code:
        [url]http://www.domain.de?email=ich.bin@email.de&code=12345[/url]
        Das Script liest nun anhand der übergebenen Emailadresse ( $_GET["email"] ) den Aktivierungscode aus und vergleicht diesen mit dem in $_GET["code"] übergebenen Code.

        Wenn eine Übereinstimmung da ist löschst du den Aktivierungscode einfach aus der DB.

        Dein Hauptscript kann dadurch abfragen ob der Account schon Frei- oder nocht nicht Freigeschaltet wurde.

        Es gibt 100000% elegantere Lösungen aber danach hat niemand gefragt

        So long.........
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Jetzt, wo ichs lese, schäm ich mich :P
          Ich versuchs nachher/morgen mal mit Konzentration.
          Kannst ja noch was zu deinen eleganteren Wegen sagen
          Lasst euch nicht lumpen, hoch den Humpen!

          Kommentar


          • #6
            Das können wir mal versuchen wenn du mit den einfachen und doch effektiven wegen nicht klar kommst
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              Tut mir leid, wenn ich wieder nerve, aber ich kriegs einfach nicht gebacken.

              Ich habe insgesamt 3 Datein für die Anmeldung/Aktivierung:
              1. anmeldung.php - Das normale Formular
              2. anmeldung2.php - Auswertung des Formlulars, Aktivierungsmail wird generiert und abgeschickt.
              3. code.php - soll freischalten.

              Der Link:
              PHP-Code:
              www.domain.de/code.php?email=mail@mail.de&code=754c51c711dad63623ada8c7496af740 
              Die Mail kommt wunderbar an, nur wenn ich auf den Link klicke kommt folgende Fehlermeldung:

              Parse error: parse error, unexpected T_VARIABLE in /srv/www/htdocs/user11/html/test/code.php on line 4
              Ob es an meinen 4 Stunden Schlaf/Tag liegt weiss ich nicht, aber ich komm nicht drauf, was in Line 4 falsch sein soll bzw was ich generell falsch mache.

              Hier die code.php:

              PHP-Code:
              <?php
              include ("includes/global.php")

              $mail $HTTP_GET_VARS['email'];
              $code $HTTP_GET_VARS['code'];

              $anfrage "UPDATE anmeldung SET code2='1' WHERE mail=$mail AND code=$code";
              $ergebnis mysql_query($anfrage);

              if (
              $ergebnis) echo "Freigeschaltet!";
              else 
              "Konnte nicht freischalten, weil: ".mysql_error();
              ?>
              Lasst euch nicht lumpen, hoch den Humpen!

              Kommentar


              • #8
                was fehlt am Zeilenende beim include Befehl ?
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  RICHTIG das ";"

                  HTTP_GET_VARS solltest du nicht mehr benutzen. Nimm lieber $_GET
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Ok, es liegt tatsächtlich an zu wenig Schlaf

                    Warum ist $_GET besser? Hab ich schonmal gehört, dass einer meinte ich solle $_POST statt $HTTP_POST_VARS nehmen, aber ich habs mir halt so angewöhnt :/

                    Danke nochmal an euch!
                    Lasst euch nicht lumpen, hoch den Humpen!

                    Kommentar


                    • #11
                      Öhm warum zeigt der nur 'ne leere Seite an?
                      Lasst euch nicht lumpen, hoch den Humpen!

                      Kommentar


                      • #12
                        $_GET ist besser als $HTTP_GET_VARS

                        $_GET ist laut php.net neuer als $HTTP_GET_VARS

                        im zweifelsfall einfach mal www.php.net schauen hilft
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar


                        • #13
                          Original geschrieben von carapau
                          Öhm warum zeigt der nur 'ne leere Seite an?
                          Was kommt denn bei $ergebnis raus?
                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Kommentar


                          • #14
                            Also was $ergebnis machen soll ist dir sicher klar.
                            Habs mal mit echo versucht auszugeben: nichts!
                            Ich versteh die Welt nicht mehr. Freu mich schon drauf, wenns denn endlich mal klappt

                            PHP-Code:
                            <?php
                            include ("includes/global.php");

                            $mail $_GET['email'];
                            $code $_GET['code'];

                            $anfrage "UPDATE anmeldung SET code2='1' WHERE mail=$mail AND code=$code";
                            $ergebnis mysql_query($anfrage);

                            if (
                            $ergebnis) echo "Freigeschaltet!";
                            else 
                            "Konnte nicht freischalten, weil: ".mysql_error();

                            echo 
                            $ergebnis;
                            ?>
                            So ist es jetzt. Hab mir die Tabelle ebenfalls mal ausgeben lassen und da ist das Feld, das auf 1 gesetzt werden soll, immer noch auf 0.
                            Irgendetwas stinkt hier gewaltig *Holmes-Blick aufsetz*
                            Lasst euch nicht lumpen, hoch den Humpen!

                            Kommentar


                            • #15
                              PHP-Code:
                              or die (mysql_error()) 
                              in die query einbauen
                              Der Programmierer ist der Vormund des Anwenders.

                              Kommentar

                              Lädt...
                              X