Belirli bir gruplama (PHP) varsa görmek için bir dize denetleme?

4 Cevap php

durum: Bir kullanıcının bir kullanıcı adı ve parola girer. Şimdi kullanıcı Game_Admin denilen bir kullanıcı adı girer. Böylece site ve aldatmaca diğerleri bir kafa güç olmanın taklit etmeye çalışır.

Şu anda My Boy Özellikleri için komut kontrol günlüğü, ve zaten var olmadığını görmek için. Benim soru nasıl bir oyuncu bizim örneğimizde karakter belirli bir gruplama i tekrarını durdurmak için çalışıyorum gruplaşma "Yönetici" olduğu girerse görmek için kontrol hakkında gitmek yok. Yani kelime Yönetici Hiç (myAdminaccount, pizzaAdmin, GreatestAdmin) olup olmadığını görünür. Ben bir karakter her kullanıcı adı karakteri üzerinden aramak için bir tür bir döngü kullanabilirsiniz ya da başka bir kolay yolu olurdu merak ediyorum?

Önerileriniz için size herkesten daha Nitekim bu durum hakkında gitmek için birçok yol vardır. Ben bu konuyu yazın eğer onay kullanmaya karar başkaları için iyi bir referans olabilir umuyoruz. Ben test etmek için hepsini koyarak ve benim seçeneklerini tartı ama benim için en iyi çalışır çözüm bulduk inanıyorum ben :)

4 Cevap

Bir kullanıcı işaretleri kadar zaman form gönderimini kabul etmeden önce bir kara karşı adınızı kontrol, öneririm. Eğer off-the-raf yazılımı kullanıyorsanız muhtemelen bu destekler.

PHP Test strpos() form doğrulama gerçekleşir zaman:

$badlist = Array(
  'admin',
  'staff',
  'official'
);

foreach($badlist as $badword){
  if (strpos(strtolower($_POST['username']), $badword)!==FALSE)
    die('fail');
}

Umarım ki olur :)

Bunu yapmanın birçok yolu vardır. Ben kullanmak stripos (harf duyarsız) olacaktır:

$findme    = 'admin';
$mystring = 'This is a fake string';

$pos1 = stripos($mystring, $findme);

// Nope, 'admin' is not in $mystring
if ($pos1 === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
}

Harf duyarsız dize eşleştirme için stristr bakabilirsiniz:

<?php
  $string = 'TehAdmin';
  if(stristr($string, 'admin') === FALSE) {
    echo '"admin" not found in string';
  } else {
    echo '"admin" found in string';
  }
  // outputs: "admin" found in string
?>

Ekstra eğlence için, kullanmak str_ireplace boş bir dize ile admin tekrarlarını yerine yapabilirsiniz:

<?php
$string = str_ireplace("admin", "", $string);
?>

http://www.php.net/manual/en/function.str-ireplace.php

bir dize başka, stristr () ve preg_match () kullanmak için ortak olanlar varsa iyi belirlemek için çeşitli işlevlerinden birini kullanabilirsiniz.

$input = 'Game_Admin';

if ( FALSE !== stristr( $input, 'admin' ) )
{
  // whatever
}

if ( preg_match( "/admin/i", $input ) )
{
  // whatever
}

Ben kendi adınızın altdizgelerin göre kullanıcılara roller atanabilir görünen endişeleniyorum rağmen. Yani bu konuda büyük bir yol değil. Bu rolleri ve veritabanında tanımlanmış izinleri var ve bu iyi.