• Ich habe mir ein Registrierungsscript geschrieben mit verschickung eines Aktivierungslinks.

    Der Link wird verschickt, nur wenn ich in der mail den Link anklick, öffnet sich n Browserfenster mit folgender Meldung

    404 - Datei oder Verzeichnis wurde nicht gefunden.

    Die gesuchte Ressource wurde m�glicherweise entfernt oder umbenannt, oder sie steht vor�bergehend nicht zur Verf�gung.



    Das ist der Inhalt der EMail den ich an den User, der sich registriert verschicke.
    also ich hänge an http://www.nicolas-pecher.com/aktivierung.php noch die variable username mit dem Usernamen des Registrierten an.

    PHP
    $text = "Hallo $username! <br />Bitte aktiviere noch deinen Account, dann kann es losgehen.<br /><br />
              <strong>Aktivierungslink:</strong><br /><br />http://www.nicolas-pecher.com/aktivierung.php?username=$username";




    Am Server hab ich eine PHP Datei namens aktivierung.php. Diese Datei holt sich erstmal die Variable Username aus der URL, prüft ob der Username mit einem Usernamen in der Datenbank übereinstimmt, wenn ja, wird der status des Users auf aktiviert gesetzt.

    Nur dazu kommt es gar nicht :/

    Wie muss ich die Parameter URL schreiben?

    Mit freundlichen grüßen

  • Ich nehme mal an, dass du mit dieser Aktivierung die email-Adresse als existierende Addy die auch dem Besucher der sich damit registriert gehört verfizieren willst. Da macht dein Vorgehen aber wenig Sinn.
    Jeder User der einmal weiß wie die Aktivierung funktioniert, und dazu reicht ja ein Blick auf den zugeschickten Aktivierungslink, weiß sofort wie er sich mit mit beliebig vielen Fantasie-emails anmelden und direkt aktivieren kann.
    Außerdem kannst du dann User nicht mehr über ein boolean-aktiviert-flag in der user-tabelle sperren, weil sie einfach nur den Aktivierungslink nochmal aufrufen müssen, und schon sind sie wieder aktiviert.

    Du solltest dir lieber eine weitere Tabelle `user_aktivierung` (oder wie auch immer benannt) erstellen. Wenn sich ein neuer Benutzer registriert wird eine Zeile in die Tabelle geschrieben mit der id des neu angelegten Users (also dem primary key aus deiner usertabelle) und einem zufällig erstellten aktivierungscode.
    Der Link der an den User verschickt wird sieht dann halt z.b. so aus: aktivierung.php?id=42&code=94a27815z46v2
    Auf der aktivierung.php wird dann überprüft ob `user_aktivierung` einen Eintrag hat mit der user_id und dem aktivierungscode, falls ja wird der user aktiviert und der eintrag in `user_aktivierung` gelöscht.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Hm stimmt daran hab ich nicht gedacht.

    Ich könnte ja einfach den usernamen noch mit md5 oder sha1 verschlüsseln und die Zeichen, die aus der verschlüsselung entstehen sieht der User dann beim Link hinten dran.
    Nur reicht es dann, auf der aktivierungs Seite den mit md5 verschlüsselten Usernamen mit dem Username aus der Datenbank zu vergleichen? Weil noch ne Tabelle macht das ganze wieder etwas aufwendiger :/

  • Hm stimmt daran hab ich nicht gedacht.

    Ich könnte ja einfach den usernamen noch mit md5 oder sha1 verschlüsseln und die Zeichen, die aus der verschlüsselung entstehen sieht der User dann beim Link hinten dran.
    Nur reicht es dann, auf der aktivierungs Seite den mit md5 verschlüsselten Usernamen mit dem Username aus der Datenbank zu vergleichen? Weil noch ne Tabelle macht das ganze wieder etwas aufwendiger :/

    Das wäre nur unbedeutend besser. Es gilt das gleiche: Sobald jemand weiß, dass du bei der Aktivierung so vorgehst, kann er sich immernoch selber den md5/sha1 Hash aus seinem Usernamen erstellen und sich nach Belieben selber aktivieren.
    Ich würde dir weiterhin zu meinem Vorschlag raten, so ein Aufwand ist eine zusätzliche Tabelle ja nun nicht. Und damit bist du auf der sicheren Seite.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook