2012-02-15 8 views
0

によって(トリック)の代わりにstrlenを、フォームの操作、我々はISSETたとえば、ユーザ

<input class="k_nip_3" name="k_nip" placeholder="" type="text" value="" /> 

フォームを作成し、我々はルール(最小5文字)を作成します。

if (IsSet($_POST['k_nip'][4])) // now corect* 

しかし、我々のユーザーです私たちのフォームを巧みに操作します。

作成して送信します。

<input class="k_nip_3" name="k_nip[5]" placeholder="" type="text" value="aa" /> 

そして

IsSet($_POST['k_nip'][5]) 

はこれを受け入れます。

この状況を避けるにはどうすればよいですか?

+0

strlen()に問題がありますか? –

+1

その限界のためにその巧妙なトリックではなく、その貧しい代替。その速度差があなたのサイトに影響を及ぼすなら、あなたはもっと大きな問題を心配する必要があります。 –

答えて

3

だから、賢いユーザーと

if (isset($_POST['k_nip']) && strlen($_POST['k_nip']) >= 5) 
+2

元のポスターがstrlenを使いたくない理由がわかりません。 – crush

+0

IsSetはstrlenより高速です。http://stackoverflow.com/questions/6955913/isset-vs-strlen-a-fast-clear-string-length-calculation そして、このトリックで試したところ、配列に問題が見つかりました –

+0

私は彼が第5要素のテストを探していると思う: 'isset($ _ POST ['k_nip'] [5])&& strlen($ _ POST ['k_nip'] [5])> = 5)'それ以外の方法であなたの答えに同意する、それを行う良い方法はありません。 – phatskat

1

と間違っているものを、あなただけ徹底的に、それをオールド・ファッションドの方法を検証しなければなりません。マイクロオプティマイジングには向かない。