2

入力した名前をphpでエコーアウトする入力ボックスがあります。問題は、ユーザーがスペースを押すと空白文字がエコーアウトされることです。私は検索しましたが、絶対的な答えは見つかりませんでした。入力フィールドに絶対に何かがある場合に使用することは知ってい!emptyますが、スペースがある場合は null が機能するはずです。

入力に空白がある場合にエコーが発生しないようにする方法は?

if (!empty($name['name']) || null ) {
    echo 'Your name is '.$name;

}
{

//do nothing 

}
4

3 に答える 3

3

関数の呼び出しempty()は、設定されていない、null、空の文字列、ブール値の false、または 0 の場合に true になります。それでも、条件文で重いロジックを避けるのが好きです... トリミングを引き出して、テストの前に文字列を準備します。

$nameString = empty($name['name'])?null:trim($name['name']);
if(!empty($nameString){
    //go to town here
}

事前に狂信者をなだめるために、印刷する前にユーザー入力をエスケープする必要があることも付け加えておく必要があります。そうすれば、XSS から保護できます。より安全にするために、これを試してみてください:

$nameString = empty($name['name'])?null:trim($name['name']);
$nameString = htmlentities($nameString, ENT_QUOTES);
if(!empty($nameString){
    //go to town here
}

ただし、補足として...htmlentities()呼び出しはSQLインジェクションから保護されないため、このデータがデータベースに入る場合は、より多くの作業を行う必要があります-質問はあなたが他のことをしていることを示していないため.画面に出力すると、SQL インジェクションの議論は別の日に延期できます。

于 2012-07-15T17:33:28.993 に答える
0

empty() の使用には注意してください。ユーザーが「0」を入力すると、TRUE が返されます。

strlen() を使用したい場合があります

于 2012-07-15T17:36:44.733 に答える
0

スペースがあるかどうかを確認したい場合は、次のようにします。

if ($name['name'] != null && trim($name['name']) != "" && !strpos(trim($name['name']), " "))
{
    // work with $name['name']
}
else
{
    // nothing
}
于 2012-07-15T17:23:27.577 に答える