Seite 1 von 1

Registrierung von weiteren Usern durch Kunden?

Verfasst: So 2. Aug 2020, 13:05
von r_kempf
Schönen Sonntag,
wir arbeiten gerade an einem Mitgliederbereich und haben eine Verständnisfrage zur Kundenverwaltung:
Kann ein eingeloggter Kunde über ein Registrierungsformular weitere User mit jeweils eigener ID anlegen?
Im eingeloggten Zustand kann er ja nur seine eigenen KV-Felder ändern, die über <we:sessionField name="ID" type="hidden"/> zugeordnet werden.

Jetzt soll er aber eigene Kunden (Member) in seinem Login-Bereich anlegen können. Die Frage ist also, wie wir einen neuen Kunden(Member) mit neuer ID im eingeloggten Zustand eines Kunden in der KV speichern können.

Bei saveRegisteredUSer im <we:sessionField name="ID" type="hidden"/> steht ja immer die ID des derzeit eingeloggten Kunden!
Es müsste aber die neue ID sein. Wie kommen wir an eine neue, frische ID ran, um den Kunden(Member) speichern zu können?

Danke für alle Hinweise!
Regina

Re: Registrierung von weiteren Usern durch Kunden?

Verfasst: So 2. Aug 2020, 13:35
von NilSole
Hallo,

spontaner Einfall (ungetestet): wenn du das Session Feld ID auf 0 setzt, sollte wE eine neue (fortlaufende) ID generieren.

Es könnte aber sein, dass du dann den aktuellen Kunden bearbeitest...

Schöne Grüße
Nils

Re: Registrierung von weiteren Usern durch Kunden?

Verfasst: So 2. Aug 2020, 13:54
von r_kempf
Hallo Nils,
erstmal vielen Dank für Deine Antwort am Sonntag :-)

Das Problem ist:
<we:sessionField name="ID" type="hidden"/>
ergibt:
<input name="s[ID]" type="hidden" value="7" />

7 ist die ID des Hauptkunden. Das Formular würde also seine Daten überschreiben.

Das value müsste vor dem Absenden leer sein, wie im ausgeloggten Zustand:
<input name="s[ID]" type="hidden" value="" />

WE füllt das aber automatisch aus der Session und ich weiss nicht, wie man das manipulieren kann.

Grüße
Regina

Re: Registrierung von weiteren Usern durch Kunden?

Verfasst: So 2. Aug 2020, 14:07
von NilSole
Kein Problem,

zwei Dinge:
1. Du kannst einfach <input name="s[ID]" type="hidden" value > in dein Template schreiben, das wird dann auch so ausgegeben.
2. Habe im Code nachgeschaut. So läuft das wahrscheinlich auch nicht. Wenn ein Kunde eine Session offen hat wird da auch geprüft ob der eine ID hat. Wenn ja, wird kein neuer Kunde erstellt.
Eventuell könnte man die $_SESSION['webuser']['ID'] unsetten und dann könnte ein neuer Kunde erstellt werden...
Vielleicht könntest du das Formular an eine andere Seite senden, wo du den Hauptkunden zu Beginn quasi aus der Session schmeißt.

Edit: saveRegisteredUser sollte changesessiondata="false" gesetzt haben, sonst ist man glaube ich danach als neuer Kunde angemeldet...

Schöne Grüße

Re: Registrierung von weiteren Usern durch Kunden?

Verfasst: So 2. Aug 2020, 14:44
von r_kempf
Ja, soweit war ich eben auch, aber stimmt, mit
<input name="s[ID]" type="hidden" value="" />
wird nichts gespeichert.

Schade, für einen Mitgliederbereich wäre es schön, wenn es eine einfache Möglichkeit gäbe.

Puhh, das wird komplizierter als ich dachte. Nach dem Ausloggen und Formularübergabe an neue Seite, muss er sich dann ja auch wieder einloggen. Aber Danke erstmal, jetzt weiss ich erstmal, was nicht geht...

Re: Registrierung von weiteren Usern durch Kunden?

Verfasst: So 2. Aug 2020, 17:43
von r_kempf
ID killen funktioniert wunderbar mit unset.
Speichert aber den Kunden immer noch nicht:

Code: Alles auswählen

<?php
unset($_SESSION['webuser']['ID']);
?>
<we:saveRegisteredUser register="true"/>
<we:ifWritten formname="saveUser" type="customer">
<div class="alert alert-success" role="alert">Ein neuer Benutzer wurde erfolgreich angelegt!</div>
</we:ifWritten>
Mein Formular auf der Seite vorher sieht so aus:

Code: Alles auswählen

<we:form name="saveUser" action="\$action" method="get">
<input name="s[Forename]" value=""/>
<input name="s[Surname]" value=""/>
<input name="s[Username]" value=""/>
<input name="s[email]" value=""/>
<we:sessionField type="password" name="Password" value=""/>
<input name="s[ID[" type="hidden" value="" />
<input name="absenden" type="submit" class="btn btn-grad btn-block" value="Benutzerkonto anlegen">
</we:form>
Muss da vor saveRegisteredUser noch was gekillt werden?

Re: Registrierung von weiteren Usern durch Kunden?

Verfasst: So 2. Aug 2020, 18:30
von NilSole
Folgendes scheint zu funktionieren. Hier wird die Hauptsession kurz zwischengespeichert und freigemacht für den neuen Kunden.

Code: Alles auswählen

<we:sessionStart/>
<?php
$oldsession = $_SESSION['webuser'];
unset($_SESSION['webuser']);
?>
<we:saveRegisteredUser register="true" changesessiondata="false"/>
<we:ifWritten formname="saveUser" type="customer">
<div class="alert alert-success" role="alert">Ein neuer Benutzer wurde erfolgreich angelegt!</div>
	<we:else/>
	Nope
</we:ifWritten>
<?php
$_SESSION['webuser'] = $oldsession;
?>
Hier hattest du einen Klammerfehler bei der ID gemacht. Eventuell solltest du das aber eher per Post senden und nicht Get.

Code: Alles auswählen

<we:sessionStart/>
<we:form name="saveUser" action="\$action" method="get">
<input name="s[Forename]" value=""/>
<input name="s[Surname]" value=""/>
<input name="s[Username]" value=""/>
<input name="s[email]" value=""/>
<we:sessionField type="password" name="Password" value=""/>
<input name="s[ID]" type="hidden" value="" />
<input name="absenden" type="submit" class="btn btn-grad btn-block" value="Benutzerkonto anlegen">
</we:form>

Re: Registrierung von weiteren Usern durch Kunden?

Verfasst: Mo 3. Aug 2020, 10:39
von r_kempf
Merci Nils :-)
Klappt wunderbar!!! Und der Hauptkunde merkt vom unset nichts!

Schönen Wochenstart!
LG Regina