2011-08-25 10 views
0

現在、誰かがスペースキーを押して入力すると、次のページに移動しますが、何も検索しません - 検索を完全に防止したいです。これを達成する最良の方法は何ですか?私はスペースが使用されないようにしたくありません(つまり、どうすればこの問題を解決できますか?) - 私は空白で検索を許可したくありません。"スペース"がMySQLデータベースを検索するのを防ぐには?

+7

ストリップ空白? – Nobody

+1

いくつかのコードを表示する - あなたがこのあいまいなときは、誰も助けてくれません。 – Randy

+1

何ですか?私のクリスタルボールは現在修理のために店に入っています。 – Cyclone

答えて

5

empty条件でクエリの変数をラップ:

if(!empty(trim($_POST['searchterm'])) 
{ 
    // do search 
} 
+1

さらに、フォームがクライアント側で送信されないようにすることもできます。彼はjavascriptをタグ付けしたので、OPはこれを念頭に置いていたと思います。もちろん、サーバーサイドでもポリシーを実施する必要がありますが、それが不要な場合(トラフィックの99%を占めるはずです)の追加チェックが、それが存在するために、あまり害はない。 – Nobody

+0

クライアント側の検証のみがサイドステップで実行できます。バックエンドのチェックも必要です。 – HyderA

+2

@ gAMBOOKa:私のコメントを編集しましたが、もちろんそれは回避できますが、単に検索文字列として ""を渡すだけの努力をする価値はありますか?もちろん、セキュリティ上の問題があった場合は、サーバー側も確認する必要があります。 – Nobody

0

ただ、文字列を取り、最初と最後の空白をトリムと長さを確認してください。長さが0の場合は、フォームを送信しないでください。

+0

これは問題ありませんが、クライアント側のチェックのみに頼るべきではありません。 –

1

@AlienWebguyの回答に加えて、JavaScriptを使用してクライアント側の検証を行い、ページがバックエンドに到達するのを防ぐことができます。クライアント側で検証を行うことは間違いなく良い方法ですサーバー側。 submitonsubmit)イベントハンドラで

Live Demo

form.onsubmit = function(){ 
    if(input.value.replace(/^\s/,"").length === 0){ 
     return false; 
    } 
} 
+0

先頭と末尾のスペースをトリミングする必要はありません。文字列がスペースのみで構成されている場合は、すべての先頭スペースと後続スペースはありません。 – Ryan

+0

@minitech良い点があります。 – Loktar

+0

関連のある面白いhttp://blog.stevenlevithan.com/archives/faster-trim-javascript – HyderA

3

JavaScriptを使用してトリム先頭のスペース:

var searchField = document.getElementById('search'); // or whatever the id of the field is 
if(searchField.value.replace(/^\s+/, '').length === 0) { 
    return false; // or evt.preventDefault(). 
} 

ここでは、クライアント側の検証に依存しても大丈夫であるべきかの理由ユーザーが検索エンジンをだまそうとすると、空白のページが表示されても構わない。実際のサーバー側の問題は、これを可能にありますならば、同じチェック、サーバー側を実行します。

if(!isset($_REQUEST['search']) || !trim($_REQUEST['search'])) { 
    // Don't perform the search 
} 
+1

+1両方の答えを組み合わせる。 – Loktar

0

あなたはバックエンドにPHPでそれをprocecssingしている場合は、あなただけのtrim($input)を使用していますが、より良いユーザーのexperinceのためにすることができますJavaScriptを使用します。フォームバリデーターを設定して、空白以外のものがなければ送信しません。

<form onsubmit="return verify()"> 
    <input id="foo" name="foo" /> 
    <input type="submit" />c 
</form> 
<script type="text/javascript"> 
    function verify() { 
     if (document.getElementById("foo").value.match(/[^\s]/) == null) { 
     alert('only whitespace'); 
     return false; 
     } else { 
     alert('found substance'); 
     return true; 
     } 
    } 
</script> 
関連する問題