anpera.net
https://anpera.homeip.net/phpbb3/

Registratur
https://anpera.homeip.net/phpbb3/viewtopic.php?f=25&t=2427
Seite 1 von 3

Autor:  Azalea [ Di 04 Apr, 2006 17:43 ]
Betreff des Beitrags:  Registratur

Ich weiß von einigen Servern, dass diese eine Registratur benutzen.
Dort kommen alle User rein, die sich neu angemeldet haben und man kann deren Namen akzeptieren oder den Usern eine Nachricht schicken, mit der Bitte ihren Namen zu ändern.
Die bestätigten Namen kommen dann in eine Liste „akzeptierte Namen“ und die benachrichtigten User in die Liste „angemailte Namen“.
In der letzteren Liste kann man wählen, ob man den User umbenennen, akzeptieren, in den Kerker stecken oder löschen will.

Das Script dafür hab ich:
http://logd.comxtreme.info/source.php?url=/registratur.php

Doch leider reicht es nicht, es einfach nur zu verlinken (währe ja auch zu schön *seufz*).

Kann mir jemand bei dem Einbau helfen? Was und wie muss ich verändern?

Die Funktion mit dem einkerkern muss nicht sein, da ich nur einen Pranger bei mir hab und nirgends einen funktionierenden Kerker (bzw. den vom DS :P ) finde *drop*

Autor:  Eliwood [ Di 04 Apr, 2006 17:49 ]
Betreff des Beitrags:  Re: Registratur

Azalea hat geschrieben:
Ich weiß von einigen Servern, dass diese eine Registratur benutzen.
Dort kommen alle User rein, die sich neu angemeldet haben und man kann deren Namen akzeptieren oder den Usern eine Nachricht schicken, mit der Bitte ihren Namen zu ändern.
Die bestätigten Namen kommen dann in eine Liste „akzeptierte Namen“ und die benachrichtigten User in die Liste „angemailte Namen“.
In der letzteren Liste kann man wählen, ob man den User umbenennen, akzeptieren, in den Kerker stecken oder löschen will.

Das Script dafür hab ich:
http://logd.comxtreme.info/source.php?url=/registratur.php

Doch leider reicht es nicht, es einfach nur zu verlinken (währe ja auch zu schön *seufz*).

Kann mir jemand bei dem Einbau helfen? Was und wie muss ich verändern?

Die Funktion mit dem einkerkern muss nicht sein, da ich nur einen Pranger bei mir hab und nirgends einen funktionierenden Kerker (bzw. den vom DS :P ) finde *drop*


Du brauchst noch das Feld "namecheck", tinyint(4) oder so ähnlich.
$this->bbcode_second_pass_code('', 'ALTER TABLE `accounts` ADD `namecheck` tinyint(4) NOT NULL default '0'')

EDIT: Der Rest müsste von alleine gehn... Zumindest brauchte es damals, als ich es eingebaut hatte, nicht mehr.

Autor:  Azalea [ Di 04 Apr, 2006 18:48 ]
Betreff des Beitrags: 

Für die Seite mit den ungeprüften Namen geht das.
Doch wenn ich auf die Seite mit angemailten Namen will, kommt das hier:

Zitat:
SELECT a.age,a.imprisoned, a.acctid, a.name, a.laston, a.namecheckday, a.namecheck, su.login AS superusername FROM accounts a
LEFT JOIN accounts su ON a.namecheck = su.acctid
WHERE a.locked=0 AND (a.namecheck>0 AND a.namecheck < 16777215)
ORDER BY a.acctid ASC
Unknown column 'a.imprisoned' in 'field list'


Die aktzeptierten Namen tauchen auch nicht in der Liste der aktzeptierten Namen auf...

Autor:  Auric [ Di 04 Apr, 2006 19:03 ]
Betreff des Beitrags: 

Mal genauer hinsehen: Die fehlermeldung ist:
Zitat:
Unknown column 'a.imprisoned' in 'field list'


Das heisst also, das bei dir dals Feld imprisoned fehlt - allem anschein zufolge hast du also den Kerker Mod nicht so drin, wie der Autor.

Autor:  Azalea [ Di 04 Apr, 2006 19:16 ]
Betreff des Beitrags: 

Auric hat geschrieben:
Mal genauer hinsehen: Die fehlermeldung ist:
Zitat:
Unknown column 'a.imprisoned' in 'field list'


Das heisst also, das bei dir dals Feld imprisoned fehlt - allem anschein zufolge hast du also den Kerker Mod nicht so drin, wie der Autor.



Jep, genau ^^
Wer lesen kann ist im Vorteil

Zitat:
Die Funktion mit dem einkerkern muss nicht sein, da ich nur einen Pranger bei mir hab und nirgends einen funktionierenden Kerker (bzw. den vom DS ) finde *drop*


:baeh:

Autor:  Auric [ Di 04 Apr, 2006 19:19 ]
Betreff des Beitrags: 

Ja da hast du also die Lösung: einfach "a.impisoned," entfernen, und es dürfte funktionieren!

zumindest soweit...

Autor:  Azalea [ Di 04 Apr, 2006 20:01 ]
Betreff des Beitrags: 

Jaaa.. ok.. aber wenn ich
$this->bbcode_second_pass_code('', ' $sql = 'SELECT a.age, a.acctid, a.name, a.laston, a.namecheckday, a.namecheck, su.login AS superusername FROM accounts a
LEFT JOIN accounts su ON a.namecheck = su.acctid
WHERE a.locked=0 AND (a.namecheck>0 AND a.namecheck < 16777215)
ORDER BY a.acctid ASC';')
rausnehme, dann kann das doch garnicht mehr funktionieren.
Und will ich jemandem wegen der Namensänderung eine Mail schicken, dann kommt
Zitat:
UPDATE accounts SET namecheck=1, namecheckday=4 WHERE acctid=3
Unknown column 'namecheckday' in 'field list'

Ich weiß, dass da ein Eintrag in der DB fehlt.. aber welcher?
Und das sind ja dann sicher nicht die einzigen...

Autor:  Talion [ Di 04 Apr, 2006 20:17 ]
Betreff des Beitrags: 

namecheckday muss noch dazu ; )
SMALLINT, UNSIGNED.. wenn ich mich jetz nich irre..

Autor:  Azalea [ Mi 05 Apr, 2006 15:37 ]
Betreff des Beitrags: 

Erstmal danke für die Hilfe ^^

Aber.. ähm.. hab ich schonmal erwähnt, das ich mich erst seit nem knappen Monat mit PHP befasse und von SQL noch garkeine Ahnung hab? :shock:

Naja.. deshalb währe ein konkreter Befehl ein bisschen hilfreicher ^^"

Autor:  Eliwood [ Mi 05 Apr, 2006 15:51 ]
Betreff des Beitrags: 

$this->bbcode_second_pass_code('', 'ALTER TABLE `accounts` ADD `namecheckday` tinyint(4) NOT NULL default '0'')

Autor:  Azalea [ Mi 05 Apr, 2006 17:32 ]
Betreff des Beitrags: 

Danke ^^

Aber irgendwie landen die akzeptierten User jetzt in der Liste der angemailten.. Und es wird auch nicht eingetragen, welcher Superuser die aktion ausgeführt hat *drop*

Autor:  Eliwood [ Mi 05 Apr, 2006 17:53 ]
Betreff des Beitrags: 

Azalea hat geschrieben:
Danke ^^

Aber irgendwie landen die akzeptierten User jetzt in der Liste der angemailten.. Und es wird auch nicht eingetragen, welcher Superuser die aktion ausgeführt hat *drop*


Ehrm, von wo hast du die Registratur?

Autor:  Talion [ Mi 05 Apr, 2006 17:58 ]
Betreff des Beitrags: 

namecheck darf auch kein TINYINT sein.. muss in unserer Version den Datentyp MEDIUMINT haben.. und UNSIGNED.

SQL:

$this->bbcode_second_pass_code('', 'ALTER TABLE `accounts` CHANGE `namecheck` `namecheck` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0'')

Autor:  Azalea [ Mi 05 Apr, 2006 18:07 ]
Betreff des Beitrags: 

Eliwood hat geschrieben:
Azalea hat geschrieben:
Danke ^^

Aber irgendwie landen die akzeptierten User jetzt in der Liste der angemailten.. Und es wird auch nicht eingetragen, welcher Superuser die aktion ausgeführt hat *drop*


Ehrm, von wo hast du die Registratur?



Argh.. da bringst du mich auf ne Idee.. *such*
Genau.. Ich hatte die ganze Zeit die Registratur der Dragonslayer Editon verwendet, ist ja klar, dass das nicht geht *selbst hau*

@ all
Danke, jetzt geht alles!
Ihr seid spitze :P

Autor:  Eliwood [ Mi 05 Apr, 2006 18:33 ]
Betreff des Beitrags: 

Talion hat geschrieben:
namecheck darf auch kein TINYINT sein.. muss in unserer Version den Datentyp MEDIUMINT haben.. und UNSIGNED.


Ob Tinyint oder mediumint, ist eigentlich egal, solange bestimmte grössen nicht überschritten werden.
Es kann auch int, bigint, oder varchar (Nicht empfehlenswert *g*) sein, solange das Feld die Zahl aufnehmen kann, ist alles in Ordnung.

Ob UNSIGNED oder SIGNED ist noch egaler, UNSIGNED heisst Vorzeichenlos - Also wenn ein Feld SIGNED ist, können Negative Werte eingetragen werden, bei UNSIGNED nicht.

Autor:  Talion [ Mi 05 Apr, 2006 19:51 ]
Betreff des Beitrags: 

Naja, eben, wenn ich eine AccountID (wie es bei unserer Version der Fall ist) da drin speichern will, sind die 3 Bytes Pflicht. Da reicht kein Tinyint.

Und das mit dem signed ist ebenfalls nicht egal. Zum Vergleich: Signed Tinyint hat nen Zahlenbereich von -128 / 127. Die Variante ohne Vorzeichen: 0-255. Sprich, man sollte sich den Datentyp grade bei Spalten in der Accounts sehr sorgfältig wählen. Da gibts in der Standardversion einiges zu optimieren und damit sowohl in der Geschwindigkeit als auch dem Platzbedarf einzusparen. Es ist ganz einfach so, dass MySQL mit schlankeren Tabellen besser umgehen kann.. logisch eigentlich.

EDIT:
Wo das schon grad so schön reinpasst und bestimmt einigen hilft *gg:
Nehmen wir die 'level'-Spalte. Wir haben 15 Level - wieso um alles in der Welt sollen wir hier 4 Bytes pro Account verwenden, obwohl uns 1 locker reicht? UNSIGNED TINYINT.
Genauso lässt sich bei anderen Werten verfahren. Attack und Defence: smallint ist mehr als genügend, Vorzeichen brauchts da auch nicht.
hitpoints und maxhitpoints: auch ein klarer Fall.
So könnte man die ganze Tabelle durchgehen, es fänden sich noch mehr als genug Einsparmöglichkeiten.

Autor:  Tidus [ Mi 05 Apr, 2006 21:39 ]
Betreff des Beitrags: 

also ic hdenke eliwood weiß was er sagt denn er ist der meisrer ;))))) *g*

Autor:  Talion [ Mi 05 Apr, 2006 21:48 ]
Betreff des Beitrags: 

Auch ein Meister kann sich mal irren ; )
Oder vielleicht hat er meine Aussageabsicht falsch verstanden.

Autor:  Eliwood [ Mi 05 Apr, 2006 21:52 ]
Betreff des Beitrags: 

Oder dem Eliwood ist es überhaupt ziemlich egal, wie MySQL welche Felder wie meint, solange es funktioniert :lol:

Aber Recht hab ich scho auch, wenn man noch Platz hat für die höchstmöglichste Grösse *g*

------------------------------------

Na gut, gewonnen :grml:

Autor:  Noel [ Fr 22 Sep, 2006 16:53 ]
Betreff des Beitrags: 

hab mal ne frage dazu^^... hab nämlich das prob das ich alle user akzeptieren/löschen/anmailen kann, nur mich selbst kann ich net freischalten... an was liegt das?

Seite 1 von 3 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/