double opt in - Vefahren bei Registriervorgang

  • Hey,

    ja habe da anstatt varchar int verwendet. Mein Fehler. Nun wird der hash so in db angegeben

    Jedoch nach weiteren Tests kommt immernoch die Fehlermeldung : Keine Übereinstimmung!

    Wird die hashid in der url nicht erkannt oder wie ?Oder was läuft da schief ?

    Gruß,
    Stef

    • Offizieller Beitrag

    Das kann ich Dir nicht beantworten, da ich nicht weiß, wie Du die Links versendest!
    Du kannst mir ja mal einen Link senden, dann kann ich Dir sagen, ob Dein Script den Hash erkennen sollte oder nicht. Und vielleicht sogar warum.

    Gruß Arne

  • Hey,

    hier ist der Link der Registrationsseite : http://apple231.bplaced.net/Registriervorgang/registrieren.php
    (kenn deine email nicht)

    Ich sende es mit der mail() function als html-mail, habe es zwar mit php mailer probiert aber es hat nicht geklappt da ich nicht alle daten hatte und ich rufe doch nicht bei meinem email anbieter an, welchser pro minute 4 € verlangt um meinen port rauszubekommen. Ich werde ´mich in nächster Zeit nochmal daran setzen.

    Gruß,
    Stef

    • Offizieller Beitrag
    Zitat

    Ich sende es mit der mail() function als html-mail, habe es zwar mit php mailer probiert aber es hat nicht geklappt da ich nicht alle daten hatte und ich rufe doch nicht bei meinem email anbieter an, welchser pro minute 4 € verlangt um meinen port rauszubekommen.

    Es gibt dort auch E-Mail Support! Ausserdem wird sich das in den FAQ bzw. der Hilfe finden lassen.
    mail() ist bei Deinem Wissenstand absolutes NoGo!

    Zum Thema: Ich habe eben eine Registrierung durchgeführt. Schau bitte mal in die DB, was dort als Hashwert drin steht. E-Mail sende ich Dir gleich per PN!

    Da Du die E-Mail in der Session überträgst und nicht in der URL, befindet sich im QueryString auch kein $-Zeichen als Trenner.
    Daher steckt der Haswert nach dem explode() in $chek[0]. Für diesen Fall kannst Du aber auch das explode() komplett weglassen:

    PHP
    $check = !empty( $_SERVER['QUERY_STRING'] )? $_SERVER['QUERY_STRING']: null;


    Deine Abfrage müsstest Du dann dahingehend auch anpassen:

    PHP
    if ( $dsRow->hashid != $check ) { //...

    Nach den Anpassungen kann der Fehler nur noch an einem falschen Hashwert in der DB oder an dem Session-Parameter "useremail" liegen, den Du hoffentlich im Zuge des Debuggens kontrolliert hast?!

    Es gilt also jetzt folgendes zu prüfen:

    • Welcher Hashwert steht in der DB?
    • Was steckt in $_SESSION['useremail']?
    • Was gibt die DB-Query wirklich zurück?

    Gruß Arne

  • Hey,

    Ja da habe ich es versucht, aber die schicken mir nur links zu faq und sagen das ich anrufen soll. Und im FAQ habe ich ehrlich bis jetzt keine Zeit gehabt nachzuschauen mach ich diese woche oder heute/morgen nochmal.

    Deine Hashid lautet : 0f3f63bdf2199dc377059e6f5b48a61f
    in der Session steckt die eingegebene email von Formular, d.h. bei dir : -----

    Habe deine Änderungen durchgeführt und nochmal es getestet:

    Es kommt weiterhin die Fehlermeldung.

    Meine Hashid ist in db : 0ea4abb2a3ca3316259da3ff4d7c532a
    in der url : 0ea4abb2a3ca3316259da3ff4d7c532a
    die selbe eigentlich.

    Das ist die url zu meinem link : http://apple231.bplaced.net/Registriervorg…59da3ff4d7c532a

    Das script der Seite wo den urlhashwert mit dbhashwert vergleicht :

    Bei dir gehts ja. Aber warum jetzt nicht bei mir?

    Gruß,
    Stef

    Einmal editiert, zuletzt von Stef (12. September 2016 um 15:17)

    • Offizieller Beitrag

    Mach mal bitte folgende Kontrollausgaben und poste die:

    PHP
    var_dump( $_SERVER['QUERY_STRING'] );


    und

    PHP
    var_dump( $dsRow->hashid );


    btw. nimm bitte meine E-Mail aus dem Beitrag raus.
    Die ist zwar nicht geheim, aber Spammer sollen die nicht unbedingt so einfach finden ;)

  • Hey,

    var_dump( $_SERVER['QUERY_STRING'] ); gibt aus : string(32) "d1ef18526fd7f033d7c18fc0de5d9b68"

    var_dump( $dsRow->hashid ); gibt aus : string(32) "5304e2a2b72f1ff680c531d9607f0afa"

    Ok sorry. Hab es schon getan.

  • Ja sie heißt email.

    Da hast du recht.


    Dann muss es doch am Session liegen oder ? Weil bei der Abfrage sehe ich keine fehler..
    Villt. lasse ich die session weg und selektiere aus der db erstmal dann die email ,selektiere diese und pack diese in ne variable und dann nochmals diese verwenden um die hashid zu ermitteln mit bindParm.?

    Was hälst du davon ?

    • Offizieller Beitrag

    Nö,

    Du hast geschrieben, dass Du ne Testausgabe gemacht hast und die korrekte E-Mail drinnen steht.
    Die generierte Query hast Du auch ausgeben lassen, das stimmte scheinbar auch.

    Setz die Query mal in phpMyAdmin ab und schau, was da kommt.
    Wenn das alles passt, postest Du nicht den korrekten Code.

  • Hey,

    ja habe ich gemacht und da kommt die richtige email bis jetzt.

    doch ich poste den korrekten code.

    Aber das problem ist doch das das statement die erste hash id immer benutzt, warum passiert das ?


    EDIT:

    Habe jetzt alle Datensätze gelöscht. Nun klappt es nur beim ersten eintrag. Beim 2ten wieder nicht.

    Es gibt mir aus :

    tring(32) "3a92cd53875f4a4915ab8ef316cc182a" string(32) "3a92cd53875f4a4915ab8ef316cc182a" string(24) "meine email"

    Beim 2.ten mal :

    1. Hash aus db: string(32) "3a92cd53875f4a4915ab8ef316cc182a"
    2. Hash aus url: string(32) "c060a57bbe67d459dfe102a76dfd7bbf"

    5 Mal editiert, zuletzt von Stef (12. September 2016 um 17:10)