Ergebnis 1 bis 7 von 7

Thema: User-Nick verschwindet O.O

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer
    Registriert seit
    03.01.2007
    Beiträge
    272

    Pfeil User-Nick verschwindet O.O (+kpl.Anleitung)

    Hallo, Ihr Lieben,
    meine neueste Fehlermeldung:

    einer meiner User, eher mäßig aktiv, bewegt sich regelmäßig "als geist", ohne Nick auf der Seite. in den letzten Tagen hab ich ihm den Nick öfter mal von Hand eingetragen.

    Nun habe ich beim letzten Mal die Möglichkeit, den Nickname im Userprofil zu ändern, abgeschafft, so daß dieser jetzt nur noch angezeigt wird.

    heute war der Nick des Users wieder leer. O.O
    Weiß einer, wie das geht?
    und wie das zu verhindern ist?

    Schööne Feierei euch allen!

  2. #2
    Hast du nur das Eingabefeld für den Nicknamen ausgebaut und das Update der Datenbank drin gelassen?

    Gruß

    EarlofMidnight
    Charmante-Lose / Mini-Zocker / ColaCodes4Lose
    Du brauchst Webspace für dein VMS--> PN

  3. #3
    Erfahrener Benutzer
    Registriert seit
    03.01.2007
    Beiträge
    272

    Pfeil

    hmm, erstmal ja....
    was muß ich da noch alles rausschmeißen?

    PHP-Code:
    if (!isset($_POST['nickname']))        $_POST['nickname']    = "";
    .
    und
    .
    //Nickname ändern beginn !
    if ($_POST['aendern'] == 'Jetzt ändern!') {
        if (isset (
    $_POST['nickname'])) {
    $nickname mysql_real_escape_string(ucfirst($_POST['nickname']));
    $nickname strip_tags($nickname);
    $nickname substr($nickname,0,18);
    $nickname_check =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$nickname."'");
    $nickname_check2 =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$nickname."'AND uid=".$_SESSION['uid']."");

        if (
    mysql_num_rows($nickname_check)) 
            if (
    mysql_num_rows($nickname_check2)) {

            }else{
    $change 'Dieser Nickname ist schon vergeben!<br>';
            }else{
    db_query("UPDATE ".$db_prefix."_userdaten SET nickname = '".$nickname."' WHERE uid=".$_SESSION['uid']."");
            }
            }
        } 
    is das alles, was dazu gehört?

    hmmm...
    aber um ohne Maske auf die DB zuzugreifen, ist wohl doch etwas.. hmm... kriminelle Energie nötig, oder?

  4. #4
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    eigentlich nicht, ist mit dem entsprechenden browser & addons überhaupt kein problem, gabs ja schon mal mit html code in den nicknames:
    http://www.designerscripte.net/showthread.php?t=5325

    nur ist da natürlich noch nichts vorgesehen, wenn der nickname nur aus einem leerezichen besteht oder so, entweder macht man da noch eine abfrage rein:
    PHP-Code:
    //Nickname ändern beginn !
    if ($_POST['aendern'] == 'Jetzt ändern!'
        {
        if (isset (
    $_POST['nickname'])) {
        
    $nickname mysql_real_escape_string(ucfirst($_POST['nickname']));
        
    $nickname strip_tags($nickname);
        
    $nickname substr($nickname,0,20);
        
    $nickname trim($nickname); //entfernt leerzeichen am anfang und am ende
        
    if(strlen($nickname)<3){
          
    $change .= 'Der Nickname muss mindestens 3 Zeichen lang sein!<br>';
        }else{
        
    $nickname_check =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$nickname."'");
        
    $nickname_check2 =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$nickname."'AND uid=".$_SESSION['uid']."");
            if (
    mysql_num_rows($nickname_check)) 
                if (
    mysql_num_rows($nickname_check2)) {
                    
                }else{
                
    $change .= 'Dieser Nickname ist schon vergeben!<br>';
                }
            else
                {
            
    db_query("UPDATE ".$db_prefix."_userdaten SET nickname = '".$nickname."' WHERE uid=".$_SESSION['uid']."");
                }
            }
        }
        } 
    oder du entfernst die funktion ganz, dazu das input feld im html code ganz entfernen oder auf readonly="readonly"setzen, und den teil:
    PHP-Code:
    //Nickname ändern beginn !
    if ($_POST['aendern'] == 'Jetzt ändern!'
        {
    ...
    ...
    ...
            
    db_query("UPDATE ".$db_prefix."_userdaten SET nickname = '".$nickname."' WHERE uid=".$_SESSION['uid']."");
                }
            }
        }
        } 
    komplett löschen.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  5. #5
    Erfahrener Benutzer
    Registriert seit
    03.01.2007
    Beiträge
    272
    oki, danke erstmal,
    ich hab im UserProfil die Funktion jetzt ganz entfernt und geschrieben, bei Änderungswünschen sollen die User bitte nen Admin kontaktieren.

    kann ich die Funktion für die "mindest drei sichtbare Zeichen" direkt bei der Anmeldung einbaun? wie müßte das dann aussehen?

  6. #6
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    jo, das macht natürlich sinn, da auch eine abfrage dahingehend einzubauen.
    wobei ich da empfehlen würde, das ganze per regulärem ausdruck zu überprüfen, mag zwar für php-anfänger etwas verwirrend aussehen, brignt aber in dem falle am meisten, da es auch die meisten möglichkeiten bietet:

    datei: content/intern/anmelden.php

    zwischen:
    PHP-Code:
    if ($schnittstelle['anfragen_tag'] != and $schnittstelle['anfragen_tag'] <= $s_verbrauch$error 'Die Schnittstellenanfragen sind für heute verbraucht!!!<br>';

    ... 
    //hier einfügen ...

    // User mit der Datenbank abgleichen
        
    if (!$error) { 
    folgendes einfügen:
    PHP-Code:
    if(!preg_match('/^[a-z0-9]{3,20}$/iD'$_POST['nickname']) ){
      
    $error.= 'Bitte nur Buchstaben und Ziffern verwenden! [a-z,A-Z,0-9]<br>';

    dieses suchmuster /^[a-z0-9]{3,20}$/iD erkläre ich jetzt noch schnell, denke sollte aber so in etwas schon den erwartugnen entsprechen:
    erlaubt sind im nickname alle buchstaben von a bis z, aber nur die englischen, also nicht ß,ä,ü,ö, wobei die groß/kleinschreibung keine rolle spielt. zusätzlich sind alle ziffern erlaubt (der username kann auch nur aus ziffern bestehen), und es müssen mindestens 3 zeichen sein, aber maximal 20.

    wenn der eingegebene nickname dem nicht entspricht, wird eben die fehlermeldung angezeigt, am besten noch im html code hinter "nickname" noch schreiben, dass 3-20 zeichen sein müssen oder so.

    varianten:

    /^[a-z0-9]{3,20}$/iD
    die 3 und die 20 geben mindest bzw. maximal länge an, können je nach bedarf angepasst werden

    /^[a-z0-9][a-z0-9_-]{1,18}[a-z0-9]$/iD
    jetzt sind auch strich (-) und unterstrich (_) erlaubt, aber nur in der mitte, also das erste und das letzte zeichen müssenbuchstabe bzw. zahl sein
    (nun statt 3,20 je 2 weniger)

    /^[A-Z][a-z]{2,19}$/D
    der erste buchstabe muss groß sein, alle anderen klein (bietet sich an beim überprüfen von "echten" namen)

    und genau diese überprüfung kann man dann auch im userprofil durchführen, falls man die änderung zulässt.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 18.10.2009, 11:21
  2. Inhalt verschwindet ohne Grund
    Von seg98 im Forum Support zum VMSone
    Antworten: 4
    Letzter Beitrag: 27.04.2009, 18:41
  3. Betteln mit nick?
    Von Hardy im Forum [HD] Programmieren
    Antworten: 6
    Letzter Beitrag: 19.03.2007, 13:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •