kostenloser Webspace werbefrei: lima-city


namen verbieten mit if schleife

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    senshi-network

    senshi-network hat kostenlosen Webspace.

    Hi, ich habe das problem das ich mit einer if schleife namen verbieten will. also alles was in [ ] ist soll geblockt werden.
    ich poste hier mal die if schleife wo ich nicht mit weiter gekommen bin...

    <?php
    if($name == 'System')
    {
    echo "<center><font color=red>Du kannst dich nicht  ".$name."  nennen ! </font></center>";
    }
    elseif($name == '[%]%')
    {
    echo "<center><font color=red>Du kannst dich nicht  ".$name."  nennen ! </font></center>";
    }
    else
    {
    echo "hi ^^";
    }
    ?>


    Das problem dabei ist das bei den % zeichen einfach ein belibiger text stehen kann und der den namen block sobald [ ] am anfang des namens ist.

    ich bekomm das i.wie nicht hin vieleicht kann mir da einer helfen!

    ich bendanke mich schonmal an alle :biggrin:

    Beitrag zuletzt geändert: 22.8.2011 12:44:54 von senshi-network
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Zunächst einmal: es gibt keine If-Schleife ;) Und zum Problem: eine einfache Lösung könnte z.B. darin bestehen, dass Du Dir ein Array deklarierst und mit den gesperrten Namen befüllst. Nun kannst Du mit in_array prüfen, ob der gewünschte Name in diesem Array enthalten ist und dementsprechend reagieren.
  4. Autor dieses Themas

    senshi-network

    senshi-network hat kostenlosen Webspace.

    uch drauf hab ich nicht geachtet :wall: :wall: :wall: es gibt ja nur while und for-schleifen und if ist ja für Anweisung :wall: :wall: :wall:

    Beitrag zuletzt geändert: 22.8.2011 14:10:05 von senshi-network
  5. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Du könntest das mit regulären ausdrücken machen.

    Siehe:
    PHP: preg_match
    Kleine Einführung zu regex
  6. Autor dieses Themas

    senshi-network

    senshi-network hat kostenlosen Webspace.

    thomasba schrieb:
    Du könntest das mit regulären ausdrücken machen.

    Siehe:
    PHP: preg_match
    Kleine Einführung zu regex


    ich verstehe den sinn von regulären ausdrücken nicht wie soll das funtionieren?
  7. Sofern ich das richtig verstanden habe kommt man hier mit regulären Ausdrücken nicht weiter. Diese prüfen ja auf ein Muster wie "darf keine Umlaute und kein @ enthalten", wohingegen hier wohl eine Liste mit Konstanten vorliegt, gegen die geprüft werden soll ("System", "Admin", "SYSDBA" oder solche Dinge).
  8. Autor dieses Themas

    senshi-network

    senshi-network hat kostenlosen Webspace.

    ihr verwirt mich jetzt total ich versteh garnichts mehr :spammer:
  9. Naja gib mal Beispiele wofür [%]% stehen könnte, bzw. erklär mal genauer, welche Namen ausgeschlossen werden sollen.
    Reguläre Ausdrücke können Muster untersuchen.
    Wenn zu willst das [irgendwas]irgendwas gesperrt wird, dann kannst du den regulären Ausdruck /\[[.*]\].*/ überprüfen.
    Wenn der passt, dann kannst du die Fehlermeldung ausgeben, wenn er nicht passt, dann ist er Name erlaubt.
  10. Autor dieses Themas

    senshi-network

    senshi-network hat kostenlosen Webspace.

    es klapt danke danke
  11. senshi-network schrieb:
    ...
    <?php
    if($name == 'System') {
      echo "<center><font color=red>Du kannst dich nicht  ".$name."  nennen ! </font></center>";
    } elseif($name == '[%]%') {
      echo "<center><font color=red>Du kannst dich nicht  ".$name."  nennen ! </font></center>";
    } else {
      echo "hi ^^";
    }
    ?>
    ... ich bekomm das i.wie nicht hin vieleicht kann mir da einer helfen! ...
    ... Das problem dabei ist das bei den % zeichen einfach ein belibiger text stehen kann ...
    dann gibt es - gott erbarme unser - kein 'elseif', sondern einfach nur
    if($name == 'System') {
      ...
    } slse {
      ...
    }
    oder habe ich von deinem logik nix mitbekommen?

    ja! und wegen <center> und <font> und '... color=red ...' gibt es noch eins auf die finger! warum wohl??

    thomasba schrieb:
    Du könntest das mit regulären ausdrücken machen...
    ja!!!! warum quälst den armen server von lima nicht ganz und gar zu tode???? kann das sein, dass wir von ihm genau wegen solchen ideen - so gut wie - nichts mehr sehen?
  12. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    hemiolos schrieb:
    thomasba schrieb:
    Du könntest das mit regulären ausdrücken machen...
    ja!!!! warum quälst den armen server von lima nicht ganz und gar zu tode???? kann das sein, dass wir von ihm genau wegen solchen ideen - so gut wie - nichts mehr sehen?


    Und wie soll er dann auf etwas wie das von ihm oben geschriebene „\[.*\].*“ prüfen? Klar, sowas könnte man mit strstr machen, aber mal ehrlich, ist das übersichtlicher? Zudem wird ein Nickname ja nicht jedesmal geprüft, sondern wohl nur beim Registrieren ;-)
  13. t*****b

    Erst einmal würde ich nicht überprüfen, ob "[%]%" im Name steht, sondern nur bestimmte Zeichen überprüfen.

    Also Statt verbiete [%]% solltest du erlaube A-Z, a-z, 0-9 usw. Und das dann einfach per Regex:

    [/code]
    if($name == "System") {
    ...
    } elseif(!preg_match('/^[0-9a-zA-Z]+$/', $name)) {
    echo "Geht nicht, unerlaubte Zeichen enthalten";
    } else {
    echo "alles OK";
    }
    [/code]

    Als weiteres denke ich, dass du eine Art "Kürzel" vor den Namen machen möchtest, wie zB "[Mod]Benutzername". Das würde ich aber nicht über den Usernamen machen sondern über ein extra Feld in der Datenbank.
  14. Autor dieses Themas

    senshi-network

    senshi-network hat kostenlosen Webspace.

    trueweb schrieb:
    Erst einmal würde ich nicht überprüfen, ob "[%]%" im Name steht, sondern nur bestimmte Zeichen überprüfen.

    Also Statt verbiete [%]% solltest du erlaube A-Z, a-z, 0-9 usw. Und das dann einfach per Regex:

    [/code]
    if($name == "System") {
    ...
    } elseif(!preg_match('/^[0-9a-zA-Z]+$/', $name)) {
    echo "Geht nicht, unerlaubte Zeichen enthalten";
    } else {
    echo "alles OK";
    }
    [/code]


    genau das hab ich auch gemacht funtioniert auch:biggrin:



    trueweb schrieb:
    Als weiteres denke ich, dass du eine Art "Kürzel" vor den Namen machen möchtest, wie zB "[Mod]Benutzername". Das würde ich aber nicht über den Usernamen machen sondern über ein extra Feld in der Datenbank.



    ja ich will die als kürzel nehmen die werden auch in ein seperaten feld eingetragen aber ich mache das damit man sich kein neuen account machen kann und sich einfach so wie ein mod etc nennen kann sonst denken alle das der ein mod ist :) und das wollen wir ja nicht:cookie:
  15. m**********n

    Warum so umständlich, ich würde doch am eheseten zur ersten Methode raten, zum einen aus Performancegründen, zum anderen, damit es übersichtlicher aussieht, also so:
    <?php
    $disallowedNames = array('System', '[%]%');
    function chekNames($name)
    {
    	if(in_array($name, $disallowedNames))
    	{
    		echo "<center><font color=red>Du kannst dich nicht  ".$name."  nennen ! </font></center>";
    	}
    	else
    	{
    		echo "hi ^^";
    	}
    }
    ?>

    Ich hab grad kein PHP drauf, ich weiß jetzt nicht, ob er Syntaxfehlerfrei ist.

    Mfg

    mator
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!