• Willkommen, Gast!
  • Montag, 01. Juni 2020, 17:10:02
Position: Home » Boardsolution » Boardsolution v1.4x » Zusätzlich Profilfelder ...
Antworten
Thema: Zusätzlich Profilfelder ... [Seite 1 ]

Kein neuer Beitrag MyOwnShadow , 07.02.2010, 19:26
Beitrag #1   

IP: n/a
Rang: * * * * * * *
Registrierung: 04.12.2007, 19:08
 

Forum-Gott mit 66 Punkte, 36 Beiträge
Hallo !

Ich habe, bzw. wollte, ein zusätzliches Profilfeld anlegen.
Und zwar möchte ich, dass die Telefonnummer eingegeben werden kann.

Da ich eine gewisse Plausibilitätskontrolle haben wollte, habe ich als Feldtyp eine 15 Zeichen
lange Zahl gewählt.
Effekt ist der, dass bei einer Zahl natürlich die führende Null verschwindet. Also, nicht geeignet
für Vorwahlen, die ja immer mit "0" beginnen.

Also bleibt nur ein reines Textfeld, aber hier sind ja wieder alle Zeichen zulässig.

Wäre zukünftig ein Telefonnummerntyp denkbar, der lediglich "0..9", +, /, " " erlaubt ?

Vielen Dank

 
Kein neuer Beitrag Nils , 07.02.2010, 21:21
Beitrag #2   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

MyOwnShadow hat folgendes geschrieben:
Da ich eine gewisse Plausibilitätskontrolle haben wollte, habe ich als Feldtyp eine 15 Zeichen
lange Zahl gewählt.
Effekt ist der, dass bei einer Zahl natürlich die führende Null verschwindet. Also, nicht geeignet
für Vorwahlen, die ja immer mit "0" beginnen.

Also bleibt nur ein reines Textfeld, aber hier sind ja wieder alle Zeichen zulässig.

Wäre zukünftig ein Telefonnummerntyp denkbar, der lediglich "0..9", +, /, " " erlaubt ?

Ein neuen Feldtyp braucht man dafür nicht. Für solche Fälle gibt es die Eingabeüberprüfung. Da kann
man einen regulären Ausdruck angegeben, dem die Eingabe entsprechen muss. Wenn du also nur die
genannten Zeichen erlauben möchtest, leg folgenden Ausdruck fest:
Code:
1
/^[0-9\+\/ ]+$/

So muss die Nummer min 1. Zeichen lang sein und muss aus 0-9, +, / und " " bestehen. Man könnte das
natürlich auch noch genauer festlegen. Aber ich denke da handelt man sich zu viele Probleme ein und
niemand weiß mehr was man eingeben muss, damit es akzeptiert wird :)
Du kannst ja auch noch einen Bearbeitungshinweis anzeigen, damit die Leute wissen, dass sie da nur
bestimmte Zeichen verwenden dürfen.

mfg Nils

 
Kein neuer Beitrag hans001 , 08.02.2010, 16:02
Beitrag #3   

IP: n/a
Rang: * * * * * * *
Registrierung: 12.03.2007, 20:13
 

Forum-Gott mit 81 Punkte, 51 Beiträge
Hallo!

Ich hätte dazu auch mal eine Frage.
Habe grade versucht ein zusätzliches Profilfeld einzurichten:

Feldtyp: Zahl; Feldlänge 9
Anzeigen: Userprofil
Pflichtfeld: Ja
Eingabe-Überprüfung: /^[2][01][\d][12][\d]{5}$/

Aber egal ob ich das Feld leerlasse, oder irgendwas reinschreibe, es wird immer akzeptiert.
Da sollte doch eigentlich eine Fehlermeldung kommen. Ich würde das wenn es funktioniert zukünftig
gerne bei der Registrierung abfragen, so daß nur die registriert werden, die eine richtige Zahl
eingeben..

Danke schon mal!

Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 08.02.2010, 16:03 von hans001.

 
Kein neuer Beitrag Nils , 08.02.2010, 16:42
Beitrag #4   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

momentan ist die Eingabeüberprüfung beim Typ "Zahl" nicht realisiert, hab ich grad gesehen. Werd
ich mit dem nächsten Update beheben. Nimm einfach als Typ "Text", das kommt im Prinzip auf das
gleiche heraus, nur das es anders gespeichert wird.

Ansonsten, du brauchst nicht überall [ ... ] verwenden. Nur wenn es mehrere Alternativen bzw.
Ranges gibt, macht das Sinn. Folgendes ist das gleiche:
Code:
1
/^2[01]\d[12]\d{5}$/


hans001 hat folgendes geschrieben:
Aber egal ob ich das Feld leerlasse, oder irgendwas reinschreibe, es wird immer akzeptiert.
Da sollte doch eigentlich eine Fehlermeldung kommen. Ich würde das wenn es funktioniert zukünftig
gerne bei der Registrierung abfragen, so daß nur die registriert werden, die eine richtige Zahl
eingeben..

Hast du das Feld wirklich als Pflichtfeld eingestellt? Denn dann ist es immer ein Fehler, wenn das
Feld leer ist...

Aber den Sinn verstehe ich noch nicht ganz. Willst du damit dafür sorgen, dass sich nur bestimmte
Leute (die eben eine gültige Eingabe kennen) registrieren können? Wenn ja, wieso schaltest du die
User nicht manuell frei? :)

mfg Nils

 
Kein neuer Beitrag hans001 , 09.02.2010, 19:54
Beitrag #5   

IP: n/a
Rang: * * * * * * *
Registrierung: 12.03.2007, 20:13
 

Forum-Gott mit 81 Punkte, 51 Beiträge
Hallo Nils,

Danke für die Antwort!
War mein erster Ausdruck dieser Art. Ich wußte nicht daß man die Klammern da weglassen kann.
Ich hab da glaube ich zu kompliziert gedacht..
Was ich machen will ist folgendes: Ich habe einen geschützen Bereich im Forum, für den nur Leute
Zugriff haben sollen, die eine gültige Matrikelnummer haben.
Ich habe keine Lust die Leute da immer manuell freizuschalten. Deshalb hab ich ein externes Skript
geschrieben, das die Matrikelnummer + Nickname + Passwort überprüft, und dann in der Datenbank einen
anderen Wert für die Usergruppe reinschreibt (Ich habe schon mal eine Frage dazu gestellt).
Jetzt hätte ich das aber gerne etwas "professioneller" Also so daß die Überprüfung Boardseitig
erfolgt.
Das bei der Registrierung zu machen ist natürlich Quatsch da hab ich falsch gedacht. Weil sich ja
sonst kein Nicht-Student anmelden kann.
Ich hab mir das jetzt so gedacht: Freiwilliges Feld im Profil für die Matrikelnummer. Wenn
ausgefüllt und richtig (Ich überprüfe nur die Struktur) --> Änderung der Usergruppe in der Datenbank.
Ist das ohne allzugroßen Aufwand machbar? Ich weiß leider nicht wo ich da was ändern muß..
Vielleicht wärs auch einfacher, dafür kein zusätzliches Feld im Admin-Bereich zu definieren,
sondern einfach ein zusätzliches Eingabefeld im Profil-Template einzubauen..

Danke nochmals!

Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 09.02.2010, 19:58 von hans001.

 
Kein neuer Beitrag Nils , 09.02.2010, 20:15
Beitrag #6   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

hans001 hat folgendes geschrieben:
Ich hab mir das jetzt so gedacht: Freiwilliges Feld im Profil für die Matrikelnummer. Wenn
ausgefüllt und richtig (Ich überprüfe nur die Struktur) --> Änderung der Usergruppe in der Datenbank.
Ist das ohne allzugroßen Aufwand machbar? Ich weiß leider nicht wo ich da was ändern muß..

Das geht auch ohne den Umweg über die Usergruppe. Und zwar könntest du unter Zeile 686/687 der
src/auth.php:
PHP:
1
2
if(!$user->is_loggedin())
  return false;

folgendes einfügen:
PHP:
1
2
3
$matnr = $user->get_profile_val('add_matnr');
if(preg_match('/^2[01]\d[12]\d{5}$/',$matnr))
  return true;

(Natürlich davon ausgehend, dass dein Feld "matnr" heißt)
Dann haben automatisch alle User Zugriff zu allen internen Foren, bei denen dieses Feld richtig
ausgefüllt ist. Falls es nur für bestimmte Foren gelten soll, kann man das ja dort noch
einschränken (die Foren-ID ist dort in $fid vorhanden).

mfg Nils

 
Kein neuer Beitrag hans001 , 09.02.2010, 23:48
Beitrag #7   

IP: n/a
Rang: * * * * * * *
Registrierung: 12.03.2007, 20:13
 

Forum-Gott mit 81 Punkte, 51 Beiträge
Hallo!

Danke erstmal!

Zur Info:
Ich habe deinen Hack noch NICHT eingebaut. Wollte erstmal testen ob die
Überprüfung deines geänderten regulären Ausdrucks bei den zusätzlichen Profilfeldern funktioniert.


1.
Bei der Gelegenheit habe ich den Feldnamen auf matnr geändert, den ich gestern matrikelnr genannt
hatte.
Als ich dann auf "Zurück zum board" geklickt habe, gabs erstmal ne Fehlermeldung.
Soweit ich das überblicke, wird bei einer Änderung des Feldnamens die Spalte add_feldname in der
Tabelle bs_profiles nicht mitgeändert.
Ich hab die Spalte dann manuell per phpmyadmin auf den neuen Namen geändert, und den db cache neu
berechnen lassen. Danach ging wieder alles. Ich hab das dann nochmal getestet (Profilfeld gelöscht,
neu erstellt, Feldnamen geändert) --> gleiches Ergebnis.

2.
Als ich dann in mein Profil gegangen bin, um das neue Feld auszuprobieren ist mir folgendes
aufgefallen:
(Die Felder email, Geburtstag und ICQ sind ausgefüllt)
Gebe ich jetzt eine korrekte Matrikelnummer ein, wird das Profil geändert.
Gebe ich eine falsche ein, kommt -wie gewünscht- die Meldung: "Fehler: Der Wert des Feldes
"Matrikelnummer" ist nicht gültig."

Soweit also alles richtig.
Jetzt kommts: Wenn das Feld ICQ LEER ist, und ich eine falsche Matrikelnummer eingebe, kommt eine
Fehlermeldung:

The profile-field "add_icq" does not exist!
Call-trace:
  • /fws\error\handler.php in line 192
    [ Method: FWS_Error_Handler::get_error_message() ]
  • Unknown [ Method: FWS_Error_Handler::handle_error() ]
  • /fws\helper.php in line 286
    [ Function: trigger_error() ]
  • /src\user\data.php in line 72
    [ Method: FWS_Helper::error() ]
  • /src\user\current.php in line 313
    [ Method: BS_User_Data::get_profile_val() ]
  • /front\module\userprofile\sub_infos.php in line 75
    [ Method: BS_User_Current::get_profile_val() ]
  • /front\src\submodulecontainer.php in line 69
    [ Method: BS_Front_SubModule_userprofile_infos::run() ]
  • /front\module\userprofile\module.php in line 94
    [ Method: BS_Front_SubModuleContainer::run() ]
  • /fws\document\renderer\html\default.php in line 452
    [ Method: BS_Front_Module_userprofile::run() ]
  • /front\src\renderer\html.php in line 282
    [ Method: FWS_Document_Renderer_HTML_Default::content() ]
  • /fws\document\renderer\html\default.php in line 370
    [ Method: BS_Front_Renderer_HTML::content() ]
  • /fws\document.php in line 449
    [ Method: FWS_Document_Renderer_HTML_Default::render() ]
  • /index.php in line 73
    [ Method: FWS_Document::render() ]


Das Feld add_icq in der bs_profiles ist aber definitiv da. Ich hab gerade nochmal geschaut. :confused:

Ich hab bisher keine hacks oder sonstiges umgebaut. Ist ein komplett jungfräuliches 1.41
Der Fehler tritt sowohl auf meiner Testinstallation (xampp) auf, als auch in meinem richtigen board..
Dieser Beitrag wurde insgesamt 3 mal editiert. Das letzte Mal 09.02.2010, 23:51 von hans001.

 
Kein neuer Beitrag Nils , 10.02.2010, 10:10
Beitrag #8   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

hans001 hat folgendes geschrieben:
1.
Bei der Gelegenheit habe ich den Feldnamen auf matnr geändert, den ich gestern matrikelnr genannt
hatte.
Als ich dann auf "Zurück zum board" geklickt habe, gabs erstmal ne Fehlermeldung.
Soweit ich das überblicke, wird bei einer Änderung des Feldnamens die Spalte add_feldname in der
Tabelle bs_profiles nicht mitgeändert.
Ich hab die Spalte dann manuell per phpmyadmin auf den neuen Namen geändert, und den db cache neu
berechnen lassen. Danach ging wieder alles. Ich hab das dann nochmal getestet (Profilfeld gelöscht,
neu erstellt, Feldnamen geändert) --> gleiches Ergebnis.

Hätte ich es doch gestern gleich dazu sagen sollen. Mir ist der Fehler nämlich auch gestern
aufgefallen :)
Trotzdem danke.

hans001 hat folgendes geschrieben:
Jetzt kommts: Wenn das Feld ICQ LEER ist, und ich eine falsche Matrikelnummer eingebe, kommt eine
Fehlermeldung:
...
Das Feld add_icq in der bs_profiles ist aber definitiv da. Ich hab gerade nochmal geschaut. :confused:

Gibt es das denn mit dem Namen "icq" in bs_user_fields?

mfg Nils

 
Kein neuer Beitrag hans001 , 10.02.2010, 11:18
Beitrag #9   

IP: n/a
Rang: * * * * * * *
Registrierung: 12.03.2007, 20:13
 

Forum-Gott mit 81 Punkte, 51 Beiträge
Nils hat folgendes geschrieben:

Gibt es das denn mit dem Namen "icq" in bs_user_fields?

mfg Nils


Ja das ist drin. Mich wundert halt, daß der Fehler nur auftritt, wenn in der Feldüberprüfung der
reg.Ausdruck
drin steht..

OK, ich hab gerade rausgefunden woran es liegt. Der Field-Type für ICQ steht auf int.
Wenn man das auf varchar (Hab im Admin-Bereich den Feldtyp auf "Text" gestellt) ändert, geht alles..

Und noch ne andere Frage, ich habe je momentan eine Usergruppe die für das interne Forum
freigeschaltet ist.
Nämlich die, die über das externe Skript freigeschaltet wurden. Was mache ich dann mit denen? Wenn
ich deine Modifikation einbaue hab ich dann ja normale user und eben die Gruppe, die in das Forum
reinkommen. Soll ich diese Gruppe dann abschaffen und alle zu normalen usern machen (Und alle
müssen dann ihre Nummer im Profil eintragen)?
Anhänge:
Unbenannt3.png 6.458 Bytes 2 Downloads
Dieser Beitrag wurde insgesamt 2 mal editiert. Das letzte Mal 10.02.2010, 14:13 von hans001.

 
Kein neuer Beitrag Nils , 10.02.2010, 17:14
Beitrag #10   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
hans001 hat folgendes geschrieben:
Ja das ist drin. Mich wundert halt, daß der Fehler nur auftritt, wenn in der Feldüberprüfung der
reg.Ausdruck
drin steht..

OK, ich hab gerade rausgefunden woran es liegt. Der Field-Type für ICQ steht auf int.
Wenn man das auf varchar (Hab im Admin-Bereich den Feldtyp auf "Text" gestellt) ändert, geht alles..

Sorry, das verstehe ich nicht. Wenn du bei dem Feld ICQ einen regulären Ausdruck festlegst und der
Typ "Zahl" ist, kommt der Fehler. Wenn der Typ "Text" ist nicht? Das ist bei mir nicht so..

hans001 hat folgendes geschrieben:
Und noch ne andere Frage, ich habe je momentan eine Usergruppe die für das interne Forum
freigeschaltet ist.
Nämlich die, die über das externe Skript freigeschaltet wurden. Was mache ich dann mit denen? Wenn
ich deine Modifikation einbaue hab ich dann ja normale user und eben die Gruppe, die in das Forum
reinkommen. Soll ich diese Gruppe dann abschaffen und alle zu normalen usern machen (Und alle
müssen dann ihre Nummer im Profil eintragen)?

Im Prinzip ists egal. Funktioniert ja beides zusammen. D.h. wenn einer schon in der Gruppe ist,
brauch er halt nich mehr das Feld richtig ausgefüllt haben.

mfg Nils

 
Kein neuer Beitrag hans001 , 10.02.2010, 17:40
Beitrag #11   

IP: n/a
Rang: * * * * * * *
Registrierung: 12.03.2007, 20:13
 

Forum-Gott mit 81 Punkte, 51 Beiträge
Nils hat folgendes geschrieben:

Sorry, das verstehe ich nicht. Wenn du bei dem Feld ICQ einen regulären Ausdruck festlegst und der
Typ "Zahl" ist, kommt der Fehler. Wenn der Typ "Text" ist nicht? Das ist bei mir nicht so..


Nein.
wenn in für das Feld Matrikelnummer im Adminbereich ein reg. Ausdruck drin ist (bei der
Eingabeüberprüfung)
und
das Feld icq leer ist im Profil (hier ist keine Überprüfung)
und
man dann im Feld Matrikelnummer im Profil eine falsche Nummer eingibt, auf die der reg. Ausdruck
nicht passt

dann kommt die Fehlermeldung von oben.
Und die konnte ich abstellen, indem ich icq einfach auf Text (varchar) gestellt habe.

Ich habe absolut keine Ahnung was das miteinander zu tun haben könnte. Der einzige Unterschied zu
den anderen add_irgendwas Feldern ist eben, daß das icq Feld auf int stand..
Dieser Beitrag wurde insgesamt 2 mal editiert. Das letzte Mal 10.02.2010, 17:51 von hans001.

 
Kein neuer Beitrag Nils , 10.02.2010, 18:32
Beitrag #12   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Ah, ok. Das ist bei mir auch so. Das eine hat aber mit dem anderen nichts zu tun, wie ich gerade
mal nachschaut habe. Der Grund ist, dass der Feld-Typ "Zahl" bei einem ungültigen (z.B. leer) Wert
NULL als Wert für die DB zurückgibt. Der Typ "Text" tut das nicht. Das ist auch soweit alles
richtig. Der Fehler liegt bei der Speicherung im "laufenden Programm". Denn dort bewirkt das
Speichern von NULL das das ganze Feld (add_icq) als nicht mehr vorhanden gilt.

Öffne mal die src/user/data.php und änder Zeile 90:
PHP:
1
$this->_data[$name] = $value;

in:
PHP:
1
$this->_data[$name] = $value === NULL ? '' : $value;

Das behebt das Problem. Vielen Dank für den Hinweis. Das hätte ich so schnell vermutlich nich
gefunden :)

mfg Nils

 
Kein neuer Beitrag hans001 , 10.02.2010, 18:58
Beitrag #13   

IP: n/a
Rang: * * * * * * *
Registrierung: 12.03.2007, 20:13
 

Forum-Gott mit 81 Punkte, 51 Beiträge
Ich hab zu danken! :-)
Der "Service" hier ist echt erstklassig!


Abonnieren Druckansicht
Antworten

n/a n/a 1     (Anzeige: 1 – 13; insgesamt: 13) n/a n/a
User in diesem Thema: 0 Registrierte, 0 Versteckte, 1 Gast, 0 Bots
Keine
Legende: Administratoren, User, Moderatoren
Themenaktionen:
Beiträge verschieben

Toggle Ähnliche Themen zu „Zusätzlich Profilfelder ...“
  Antworten Aufrufe Themeneröffnung Letzter Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  Zusätzliche Profilfelder 4 4377 23.06.2011, 17:07
Von: othiede
23.06.2011, 22:23
Von: othiede Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  User Profilfelder 2 10240 13.03.2009, 19:34
Von: Kevin
13.03.2009, 20:40
Von: Kevin Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  [BS 1.40 beta] Zusätzliche Profilfelder nach ... 3 3479 11.01.2009, 03:22
Von: Hendriks_Island
11.01.2009, 10:02
Von: Nils Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  selbst angelegte Profilfelder in Mitgliederli ...   Seiten 1 2 ] 18 8466 28.06.2008, 13:25
Von: wolmon6
01.07.2008, 14:15
Von: wolmon6 Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  Zusätzliche Profilfelder als Mussfeld und in ... 4 1050 23.10.2006, 17:46
Von: Husar
29.10.2006, 15:15
Von: Husar Zum letzten Beitrag
  • 0.206371 Sek., 11 DB-Zugriffe, 1.727 MiB
  • Powered by Boardsolution v1.46