2009-08-09 20 views
1

状況:ユーザーがユーザー名とパスワードを入力しました。ユーザーはGame_Adminという名前のユーザー名を入力します。したがって、サイトの主力となり、他人を欺くことを真似しようとする。文字列をチェックして、特定のグループが存在するかどうかを確認します(PHP)?

現時点では、ログインスクリプトで長さの特性がチェックされていて、それがすでに存在するかどうかが確認されます。私の質問どのようにプレイヤーが私たちの例ではグループの私は重複を停止しようとしているグループの文字の特定のグループを入力するかどうかを確認するチェックに行く "管理者"です。したがって、Adminという単語が(myAdminaccount、pizzaAdmin、GreatestAdmin)であるかどうかが表示されます。私は文字で各ユーザー名の文字を検索するために何らかの種類のループを使用するのか、それとも簡単な方法ですか?

あなたのご意見は皆さん本当にこのような状況については多くの方法があります。私はこの話題がチェックの場合にタイプを使用することを決定した他の人のための良いリファレンスになることを願っています。私がテストにそれらすべてを入れて、私のオプションを計量が、私は私のために最高の作品解決策を発見したと信じて:)

答えて

1

ユーザーがサインアップしたときに、フォーム提出を承認する前に、ユーザー名をブラックリストと照合することをお勧めします。市販のソフトウェアを使用している場合は、おそらくこれをサポートしています。 PHP strpos()

テストフォームの検証が行われます。

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

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

希望に役立つこと:)

+0

助けてくれてありがとうAL、確かにこの方法は、私が探していたものとまったく同じようです。 – Jesse

1

は大文字と小文字を区別しない文字列マッチングのためのstristrを見てください午前:

<?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 
?> 

余分な娯楽のために、あなたは空の文字列で管理者の出現を置き換えるためにstr_ireplaceを使用することができます。

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

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

+0

をSTR-ireplaceは、私が使用することができコミカルなギャグもよいが、それはまさに私ではありませんをatmでした探していますが、この素晴らしい方法に感謝します。 – Jesse

1

これを実行する方法はたくさんあります。私はstripos(大文字と小文字を区別しない)を使用します:1つの文字列が他のが含まれているかどうかを判断するために

$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'"; 
} 
+0

私はstripos()が文字列に現れるかどうかを調べるだけなので、このアプリケーションではstripos()が優れていると思います。 stristr()はすべての出現を探しますので、その動作が必要ない場合は不要に遅くなります。 – danieltalsky

0

だけでなく、あなたはいくつかの機能のいずれかを使用することができますが、stristr()とするpreg_match()は、使用する一般的なものです。

$input = 'Game_Admin'; 

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

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

私はあなたのユーザー名の部分文字列に基づいてユーザーに役割を割り当てられているように見えますが、これはこれについての素晴らしい方法ではありません。データベースで役割と権限を定義する方がよいでしょう。

+0

彼らは実際に役割を割り当てているわけではなく、単にソーシャルエンジニアに偽装しようとしている人を止めたいだけです。 – Amber

+0

ああ、私はそれを得る。私はそのニュアンスを見逃しました。 –

関連する問題