Thread Author: jan
Thread ID: 2570
Thread Info
Es gibt 25 Beiträge zu diesem Thema, und es wurde 7423 mal angesehen.
Wer ist hier? 1 Gäste

 Thema drucken
3 Monate names änderung Sperre
jan
Hallo alle,

ich habe mal das für jemanden gebastelt und dachte mir das würden villeicht auch noch andere haben wollen.
dieser Mod ist dafür da das die User nur 1 mal in 3 monaten ihren namen ändern dürfen.

hier die daten die ihr ändern müsst.

rst musst ihr eine neue datenbank spalte anlegen leichteste art das hier ....

1. Adminbereich -> Systemadmin -> Panels
2. Neues Panel anlegen
3. Panelnamen festlegen
4. bei Panel-Content kommt folgendes hin: dbquery("ALTER TABLE ".DB_USERS." ADD user_name_date INT( 10 ) UNSIGNED NOT NULL");
5. Admin-Passwort eingeben und auf VORSCHAU klciken, nicht auf Speichern
6. sollte keine Fehlermeldung kommen, dann ist das Feld angelegt



dann öfnet ihr die datei (root/edit_profile.php)
und sucht nach

Code 

echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' maxlength='30' class='textbox' style='width:200px;' /></td>\n";



das ersetzt ihr mit

Code 

if ($user_data['user_name_date'] <= time()) {


echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' maxlength='30' class='textbox' style='width:200px;' /></td>\n";
} else {
echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' class='textbox' style='width:200px;' readonly/><br>Darf nur alle 3 Monate geändert werden.</td>\n";

}




(noch ein Großer fehler drin nicht benutzen...) oder mit (Zeigt an wann man wieder ändern darf und es ist nicht mehr in einer textbox, so kann man es nicht mehr umgehen.)

Code 


if ($user_data['user_name_date'] <= time()) {
echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' maxlength='30' class='textbox' style='width:200px;' /></td>\n";
} else {
echo "<td class='tbl'>".$user_data['user_name']."<br />Darf am ".showdate('longdate', $user_data['user_name_date'])." wieder geändert werden.</td>\n";
}






dann öfnest ihr die datei (root/includes/update_profile_includet.php)
da suchst ihr

Code 

  $result = dbquery("UPDATE ".DB_USERS." SET user_name='$user_name',".$new_pass.$new_admin_pass."user_email='$user_email', user_hide_email='$user_hide_email'".($set_avatar ? $set_avatar : "").$db_values." WHERE user_id='".$user_data['user_id']."'");



und fügt direckt danach das ein.

EDIT: so müsste es besser gehen ;)

Code 

$time = time()+7776000;
if ($user_name != $userdata['user_name']) {
$result = dbquery("UPDATE ".DB_USERS." SET user_name_date='$time' WHERE user_id='".$user_data['user_id']."'");
}




so und nun müsste es nur möglich sein wenn es 3 monate (90tage) her war.

ich hoffe es können ein paar User gebrauchen :D
über ein featback würde ich mich freuen ;)
Lg Jan
Bearbeitet von jan am 05.04.2010 um 16:20
www.agitelo.de/sig.png
 
SC-Ad-Bot
 
gh0st2k
Nette Sache, ich hab es jetzt nicht getestet, aber du kannst ja mal versuchen das ganze als Profilfeld zu verwirklichen. Es muss ja nichts sichtbar sein, aber so kannst du das ganze auch ohne manuelle Eingriffe in den Code und die Datenbank verwirklichen.
 
jan
naja so leicht ist das nicht mit einem profilfeld.

da der User name nur über den die edit_profile.php geändert wird.
und es dazu keine profil feld gibt.
Und weil es ein Pflichtfeld auch.

um es in ein Profilfeld zu machen müsste man noch viel mehr an dem code verändern.

und da finde ich es so 1000 mal leichter.

aber danke für deine idee die ist zwar sinnvoll nur leider komplizierter umzusetzen und denn nutzer würde das auch nur verwirren.

Lg Jan
www.agitelo.de/sig.png
 
Kevin
Jaa ich habe das auch testen dürfen und bin völlig begeistert.

Es klappt alles super danke noch einmal Jan ;)

super arbeit :P

Nur eine Verbesserungs Idee habe ich. Und zwar steht dort ja nun "Darf nur alle 3 Monate geändert werden."

Ich würde es gut finden das der User auch sehen kann an welchem Tag er ihn wieder ändern kann sprich so

Darf nur alle 3 Monate geändert werden. Die nächste Änderung kannst du am 03.Juli 2010 vornehmen.

Das wäre super wenn das noch rein kann.

Und eine Kleinigkeit würde ich selber noch haben und zwar das die User die in der Gruppe 4 z.B. sind den Namen immer ändern können.

Das müsste ich mit diesen Code machen

Code 

if ( iMEMBER && checkgroup( 4) )
  {
     hier der Code für diese Gruppe rein
  }



Aber wie intgriere ich den anderen Code in den Code mit rein ? Kann ja da nicht mit If beginnen oder ?

Ansonsten super arbeit.

LG Kevin
Bearbeitet von Kevin am 03.04.2010 um 16:14
 
emblinux
Ein Netter Hack, jedoch mit einem kleinen Haken. Du benutzt ein Input-Feld, welchem du nur sagst, das es nur Lesbar ist. Das lässt sich leider relativ simpel umgehen. Auf der dt. Supportseite gab es mal ein oder zwei Beiträge evtl. sogar einen Mod, der das etwas besser löst. (V6 oder V7, sollte eigentlich egal sein) Diesen kannst du ja als Vorbild nehmen und das mit der 3-Monats-Sperre einbauen.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Kevin
Wie meinst du das Dirk ?

also mir hat Jan das geschrieben und nun hier rein geschrieben.

Änderbar ist es sobald man den Namen ändert nicht mehr. Erst nach der Zeit die man einstellt wieder.

Das Feld kann man zwar anklicken aber nichts raus löschen bzw ändern.

LG Kevin
 
ObiWan
Man könnte es auch so lösen, ohne dem readonly:

Code 


if ($user_data['user_name_date'] <= time()) {
echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' maxlength='30' class='textbox' style='width:200px;' /></td>\n";
} else {
echo "<td class='tbl'>".$user_data['user_name']."<br />Darf nur alle 3 Monate geändert werden.</td>\n";
}



Was emblinux meint ist glaub ich, das man die seite nur auf dem PC abspeichern braucht. Das readonly entfernt und das glaub ich so irgendwie dann umgehen kann. Bin mir aber nicht sicher ...
Bearbeitet von ObiWan am 04.04.2010 um 12:51
PHP-Fusion World - Hier gibts massig Spiele und Stuff für deine Community
Bei WBB World: PHPFWBB 1.x.x Schnittstelle (eine Registrierung, problemloses einloggen auf beiden Systemen)
... und vieles mehr.
 
gh0st2k
Man kann die readonly Beschränkung umgehen. Du brauchst dort ja nicht zwingend ein Textfeld. Falls du doch unbedingt eins nutzen willst, musst du die Zeitüberprüfung beim Updaten der Tabelle nochmal durchführen.

Das ganze ist sehr wohl über ein Profilfeld möglich. Die Profilfelder werden immer dort auch aufgerufen, wo man seinen Benutzernamen ändern könnte. Klar ist, dass du die Eingabemaske an der Stelle nicht so einfach ändern kannst. Aber eine einfache Meldung beim Versuch den Nicknamen zu ändern/speichern reicht ja durchaus.

Der Vorteil ist ganz klar, dass nichts am Code der Dateien geändert werden muss. Warum Verwirrung? Gebe dem Feld einen guten Namen und der Admin wird damit weniger Probleme haben als mit Codeänderungen, die nach einem Update eventuell wieder verloren gehen.
 
Kevin
Okay verstehe aber den muss der User ja zugriff auf meinem FTP haben sonst geht das ja Schlecht Wink

Aber wird er dann schon sagen was er meint.

Gut ich werde den Code dann mal so einfügen Wink

Kannst du mir vllt helfen mit dem Code von oben das die Sperre nur für Normale Mitglieder drine ist und für Mitglieder in der Gruppe 4 z.b. nicht ?

LG Kevin
 
gh0st2k
[geshi=php]
if ($user_data['user_name_date'] <= time() || checkgroup(4)) {
echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' maxlength='30' class='textbox' style='width:200px;' /></td>\n";
} else {
echo "<td class='tbl'>".$user_data['user_name']."<br />Darf nur alle 3 Monate geändert werden.</td>\n";
}[/geshi]
 
Kevin
Okay cool danke gh0st2k

Klappt alles bestens Smile und umgehen kann man es nun auch nicht sieht zu mind danach aus da das Feld nur als Text dargestellt wird nach einer änderung.

Und die Gruppen Mitglieder können ihn immer ändern so wie ich es wollte.

Danke noch mals nun muss das nur noch mit der Datums ausgabe dargestellt werden also wann er ihn wieder ändern kann. Kann mir da jemand helfen ?

LG Kevin
Bearbeitet von Kevin am 04.04.2010 um 13:39
 
jan
Zitat ObiWan schrieb:
Man könnte es auch so lösen, ohne dem readonly:

Code 


if ($user_data['user_name_date'] <= time()) {
echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' maxlength='30' class='textbox' style='width:200px;' /></td>\n";
} else {
echo "<td class='tbl'>".$user_data['user_name']."<br />Darf nur alle 3 Monate geändert werden.</td>\n";
}



Was emblinux meint ist glaub ich, das man die seite nur auf dem PC abspeichern braucht. Das readonly entfernt und das glaub ich so irgendwie dann umgehen kann. Bin mir aber nicht sicher ...



das geht glaube ich nicht ...
wegen der zeit eintragung.

Code 

$time = time()+7776000;
if ($user_name != $userdata['user_name']) {
$result = dbquery("UPDATE ".DB_USERS." SET user_name_date='$time' WHERE user_id='".$user_data['user_id']."'");
}



also denke ich geht dein vorschlag nicht :S

(erster beitrag EDIT: habe da einen falschen code gehabt !)


@Kevin
das mit der zeit wann er wieder ändern darf mach ich später muss nun zu meiner oma ;) ist ja oster :P

Lg Jan
Bearbeitet von jan am 04.04.2010 um 13:50
www.agitelo.de/sig.png
 
Kevin
Ja Jan das ist kein Problem Smile

Familie geht vor razz Aso und allen die das jetz lesen Frohe Ostern Smile

LG Kevin
 
ObiWan
Zitat jan schrieb:
Zitat ObiWan schrieb:
Man könnte es auch so lösen, ohne dem readonly:

Code 


if ($user_data['user_name_date'] <= time()) {
echo "<td class='tbl'><input type='text' name='user_name' value='".$user_data['user_name']."' maxlength='30' class='textbox' style='width:200px;' /></td>\n";
} else {
echo "<td class='tbl'>".$user_data['user_name']."<br />Darf nur alle 3 Monate geändert werden.</td>\n";
}



Was emblinux meint ist glaub ich, das man die seite nur auf dem PC abspeichern braucht. Das readonly entfernt und das glaub ich so irgendwie dann umgehen kann. Bin mir aber nicht sicher ...



das geht glaube ich nicht ...
wegen der zeit eintragung.


Wieso geht das nicht? Du hast das doch in deinem ersten Post auch so angegeben? :P
Bearbeitet von ObiWan am 04.04.2010 um 18:51
PHP-Fusion World - Hier gibts massig Spiele und Stuff für deine Community
Bei WBB World: PHPFWBB 1.x.x Schnittstelle (eine Registrierung, problemloses einloggen auf beiden Systemen)
... und vieles mehr.
 
jan
jaa ich brauche aber die variable user_name aus der inputt dings oder sehe ich das jetzt falsch :S

Lg Jan
www.agitelo.de/sig.png
 
Kevin
Also Jan so wie gh0st2k mir das geschrieben hat und das die Benutzer aus der Gruppe 4 den immer ändern können ist das Super ... also das Feld ist weg danach und man sieht nur den namen als reinen Text.

Wenn ich mich jetz nicht irre ^^

LG Kevin
 
emblinux
Zitat ObiWan schrieb:

Was emblinux meint ist glaub ich, das man die seite nur auf dem PC abspeichern braucht. Das readonly entfernt und das glaub ich so irgendwie dann umgehen kann. Bin mir aber nicht sicher ...


Man braucht dazu die Seite nicht abspeichern. Es gibt da Tools wie Web-Developer bzw. Firebug, mit dem man das zur Laufzeit ändern kann. Deshalb ist das, was ghost geschrieben hat schon der Weg in die richtige Richtung.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
jan
hallo,
habe oben mal wieder eine verbesserung gemacht weiß aber nicht ob sie Funktioniert.

Lg Jan

EDIT: ist getestet und funktioniert.
Bearbeitet von jan am 05.04.2010 um 15:37
www.agitelo.de/sig.png
 
Kevin
Jaa funktioniert nun Super und das Problem von Dirk ist somit auch behoben. Das Feld zeigt nun nur noch den direkten namen ohne Feld Smile

Super arbeit Jan Dickeslachen bin sehr zufrieden ^^
 
F34R
Ich habe eine kleine Frage dazu.
Ich wollte eigentlich das meine User gar nicht den Benutzernamen ändern können. Weißt jemand evt. dafür den Code? Habe schon einen Eintrag auf der dt. Fusion-Seite gefunden, aber dann bekomme ich nur 'n Error.

Wäre toll wenn Ihr mir helfen würdet.
 

Springe ins Forum:

 Ähnliche Themen 

TEST
Thema Forum Antworten Letzter Beitrag
PD_Warning automatische Sperre bei 100 Punkte + Admin PN Allgemeine Support Fragen 8 17.10.2013 um 14:13
Design-Link änderung Gemischtes 8 20.09.2011 um 17:27
namens änderung für member deaktivieren Allgemeine Support Fragen 2 18.09.2010 um 21:35
Php datei Änderung Allgemeine Support Fragen 3 21.01.2010 um 02:33
User namens änderung Allgemeine Support Fragen 3 26.12.2009 um 21:25
PHPFusion DE NSS