Jump to:

2011 Posts in 1436 Topics by 620 members

Form Questions

SilverStripe Forums » Form Questions » Registrations Activation

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1 2 3
Go to End
Author Topic: 1243 Views
  • FireDevil
    Avatar
    Community Member
    12 Posts

    Re: Registrations Activation Link to this post

    Hallo Devlin,

    Ich Danke dir recht Herzlich für deinen ganzen Ratschläge und habe es endlich komplett zum Laufen gebracht, hier mal mein kompletter Code:

    function ActivateForm() {
    // Prüfung der Datenübergabe
    if(!isset($_GET['Email'])) {
    return 'Fehler: Unvollständige Daten übergeben - E-mail fehlt.';
    } elseif(!isset($_GET['Code'])) {
    return 'Fehler: Unvollständige Daten übergeben - Code fehlt.';
    } else {
    // Auslesen der Daten
    $Email = Convert::raw2sql($_GET['Email']);
    $member = DataObject::get_one($class='Member', $where="Email='$Email'");
    // Prüfung der Daten in der Datenbanktabelle ( Member )
    if($_GET['Email'] != $member->Email) {
    return 'Fehler: Email exestiert nicht.';
    } elseif($_GET['Code'] != $member->Code) {
    return 'Fehler: Code exestiert nicht.';
    } else {
    // Prüfung der Datenübereinstimmung
    if($_GET['Email'] != $member->Email AND $_GET['Code'] != $member->Code) {
    return 'Fehler: Email oder Code nicht korrekt.';
    } else {
    // Daten überschreiben
    if($member) {
    // update data
    $member->Code = 0;
    $member->Status = 'aktiv';
    // write data
    $member->write();

    return 'Erfolgreich: Sie können sich nun Einloggen';
    } else {
    return 'Fehler: Aktivierung Fehlgeschlagen, bitte wenden sie sich an den <a href="support">Support</a>';
    }
    }
    }
    }
    }

    Das ganze hat nur einen Hacken ich habe das ganze ja dann ausreichend durch getestet und stoße auf einen kleinen Fehler und bekomm dabei die Krise.

    Hier mal die zeile um die es geht:

    if($_GET['Email'] != $member->Email) {
    return 'Fehler: Email exestiert nicht.';
    }

    wenn ich das mit einer Email durchlaufe die exestiert geht alles wunderbar dann habe ich mal eine Email benutzt die es nicht gibt und bekomme dieses Fehler:

    [Notice] Trying to get property of non-object
    GET /silverstripe2.4/Activate?Email=demo@localhost.de&Code=4150e5cd33b8a93adf2bc469982fff556c220706

    Line 38 in D:\Homepages\xampp\htdocs\Projekte\silverstripe2.4\mysite\code\ActivatePage.php

    Ich habe vieles durch probiert und begreife es einfach nicht wieso da ein Fehler entsteht vielleicht kannst du mir ja nochmal auf die Sprünge helfen bitte.

    Vielen Dank

    PS: Vielleicht hast ja auch so noch ein paar Verbesserungs vorschläge ;-)

  • Devlin
    Avatar
    Community Member
    215 Posts

    Re: Registrations Activation Link to this post

    if($_GET['Email'] != $member->Email) {

    Du musst checken ob DataObject::get_one() ein Objekt zurückgegeben hat. Denn wenn das Kriterium in $where nicht erfüllt werden kann, dann liefert eine DataObject::get_one() ein NULL zurück -- also kein Objekt dessen Variable du aufrufen könntest.

    Außerdem kannst du den Check $_GET['Email'] != $member->Email weglassen, da du sie schon als Kriterium in der Datenbankabfrage hast -- und wenn diese Abfrage eine Ergebnis zurückgibt, dann ist die Bedingung eh erfüllt.

    $member = DataObject::get_one($class = 'Member', $where = "Email='$Email'");
    if( !empty($member) ) {
    // ...
    }

  • FireDevil
    Avatar
    Community Member
    12 Posts

    Re: Registrations Activation Link to this post

    Hallo Devlin,

    Vielen Dank für die Antwort jetzt klappt alles wie ich es will, wollte die abfrage mit drin haben um eine fehlermeldung mit ausgeben zu lassen sonst würde man mir ja den Support zu spammen so weiß der User dann gleich woran er ist.

    Wünsch noch einen schönen Tag

    1243 Views
Page: 1 2 3
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.