Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Form Questions /

Registrations Activation


Go to End
Reply


19 Posts   1526 Views

Avatar
FireDevil

Community Member, 12 Posts

30 August 2013 at 12:49am

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 ;-)

Avatar
Devlin

Community Member, 217 Posts

30 August 2013 at 1:12am

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) ) {
// ...
}

Avatar
FireDevil

Community Member, 12 Posts

30 August 2013 at 2:51am

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

Go to Top