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


Reply


19 Posts   1518 Views

Avatar
FireDevil

Community Member, 12 Posts

29 August 2013 at 3:34am

Edited: 29/08/2013 3:43am

EDIT: Man bin ich blöd ich kann keine Meldung bekommen wenn meine Url Falsch ist meine locale URL ist ja nur http://localhost,
habe aber in meinem E-mail versand http://localhost.com drin stehen

habe das .com weg gemacht und bekomme diese aussage :
Array ( [url] => /silverstripe2.4/Activate [email= => demo@localhost.com] => [email=demo@localhost.com]demo@localhost.com

=> 4150e5cd33b8a93adf2bc469982fff556c220706 )

Avatar
Devlin

Community Member, 217 Posts

29 August 2013 at 3:43am

Edited: 29/08/2013 3:48am

Na dann is ja alles ok...

Wie gesagt in der ActivateForm() Methode gibt's so einige unbekannte Variablen.

Und das Director::redirectBack() würde ich durch ein Director::redirect($URL) mit einer festen Ziel-URL ersetzen, da wenn der Link aus einer E-Mail kommt, man nicht sicher sein kann ob eine vorherige Seite existiert.

Avatar
FireDevil

Community Member, 12 Posts

29 August 2013 at 3:46am

Jo soweit ist jetzt alles klar nur will ich keine feste URL aus dem ganz einfachen grund wenn jemand versucht den link zu verändern komt ja bei aufruf ne fehlermeldung ich bin noch nicht dahinter gekommen wie ich alle meine Links auf die startseite leiten kann und dort meine meldung kommt.

Avatar
Devlin

Community Member, 217 Posts

29 August 2013 at 3:54am

Das mit der hardgecoded URL kannst du umgehen, wenn du Director::absoluteBaseURL() statt http://localhost/ schreibst. Dann brauchst du dich auf'm Produktivserver auch nicht mehr darum kümmern.

ich bin noch nicht dahinter gekommen wie ich alle meine Links auf die startseite leiten kann und dort meine meldung kommt

Na das gleiche System nur nicht auf einer Unterseite sonder direkt in die Page Klasse. Dann entweder die Methode wieder über das Template aufrufen oder über den Weg den ich vorgeschlagen habe mit dem Methodennamen in der URL.

http://doc.silverstripe.org/framework/en/topics/controller

Avatar
FireDevil

Community Member, 12 Posts

29 August 2013 at 5:02am

Hallo Devlin,

muss dich wohl leider nochmal stören, ich hab mittlerweile rausgefunden wie ich daten eintragen kann doch wie überschreibe ( update ) ich sie jetzt.

Ich hab es so probiert

$Code = 0;
$Status = 'aktiv';
$Member = new Member();
$Code->saveInto($Member);
$Status->saveInto($Member);
$Member->write();

Doch da bekomm ich nur eine Fehlermeldung das die funktion saveInto kein Object sei kannst du mir vielleicht nochmal auf die sprünge helfen.

Vielen Dank

Avatar
Devlin

Community Member, 217 Posts

29 August 2013 at 6:08am

Edited: 29/08/2013 6:15am

die funktion saveInto kein Object sei
Die Variable $Code hat keine Methode saveInto ($Code->saveInto()), da du ihr den Wert 0 zugewiesen hast ($Code = 0).

SilverStripe ist streng Objektorientiert. Du solltest auf jedenfall die Grundlagen drauf haben:
http://de3.php.net/manual/de/language.oop5.basic.php

So ungefähr sollte es ausschauen, wenn du einem bestehenden Member eine Variable übergeben möchtest.

// get member
$email = Convert::raw2sql($_GET['Email']);
$member = DataObject::get_one($class = 'Member', $where = "Email = '$email'");

if( !empty($member) ) {
// update data
$member->Code = 0;
$member->Status = 'aktiv';

// write data
$member->write();
}

http://doc.silverstripe.org/framework/en/2.4/topics/datamodel#data-handling
http://doc.silverstripe.org/framework/en/2.4/reference/dataobjectdecorator

Avatar
FireDevil

Community Member, 12 Posts

29 August 2013 at 7:01am

Edited: 29/08/2013 7:02am

Hallo Devlin,

Jo werde mich wohl doch noch etwas weiter bilden müssen da merkt man mal man kann nicht alles wissen ;-)

habe jetzt mal deinen Code eingebaut und einge sachen durch getestet aber es geht dennoch nicht
Hier nochmal mein Code Komplett:

function ActivateForm() {

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.';
} elseif($_GET['Email'] = DataObject::get_one('Member', 'Email')) {
return 'Fehler: E-mail Adresse nicht vorhanden.';
} elseif(!$_GET['Code'] = DataObject::get_one('Member', 'Code')) {
return 'Fehler: Code exestiert nicht.';
} else {
// get member
$email = Convert::raw2sql($_GET['Email']);
$member = DataObject::get_one($class = 'Member', $where = "Email = '$email'");

if(!empty($member)) {
// update data
$member->Code = 0;
$member->Status = 'aktiv';
// write data
$member->write();
}
}
}

wenn ich die URL dann abschicke läuft alles ganz normal durch, bekomme keinerlei Fehler Meldung und wenn ich die datenbank überprüfe wurde nichts geändert vielleicht weißt du woran es liegen könnte?

Vielen Dank

PS: Was mich mal interessieren würde warum eigentlich Convert::raw2sql bei den E-mail's

Avatar
Devlin

Community Member, 217 Posts

29 August 2013 at 7:29am

Tut mir leid, aber das ist dein Job das herauszufinden.

Was mich mal interessieren würde warum eigentlich Convert::raw2sql bei den E-mail's

"All Input is Evil"