2017-12-30 7 views
1

私はissetと空を使用する方法が混乱しています、私は単純なAPIを記述しようとしていますが、paramが見つからないとエラーを返す必要がありますヌル。PHPの空の空の文字列をキャッチしません

下記の私の声明は間違っていますか?

$email= isset($_POST['email']) ? mysqli_real_escape_string($mysqli, $_POST['email']) : ''; 
if(empty($email)) { 
    echo 'email cannot be empty!' 
} 
+0

ここで、 '$ email'変数はありますか? –

+0

https://stackoverflow.com/questions/4559925/why-check-both-isset-and-empty –

+0

@HastaDhana typo申し訳ありません –

答えて

0

私は、あなたがnull $email値をチェックしようとしていると思います。代わりにifステートメントの$fnameをチェックする必要があります。

+0

fnameはちょうどタイプミスです –

0

に変更$email

$email= isset($_POST['email']) && !empty($_POST['email']) ? mysqli_real_escape_string($mysqli, $_POST['email']) : ''; 

ので$_POST['email']が含まれていない空の値。

0

emptyはすでにそれをしないので、あなたが実際に、issetemptyの両方を使用する必要はありません。次のコードスニペットに

if(false === input_filter(INPUT_POST, FILTER_VALIDATE_EMAIL)) { 
    echo "error message"; 
} 

$email = input_filter(INPUT_POST, FILTER_SANITIZE_EMAIL); 
// to do somethink with email... 
1

を使用してみてください。

変数が存在しない場合、警告は生成されません。つまり、 のempty()は、本質的には!isset($ var)|| $ var == falseです。

詳細はここにある: http://php.net/manual/en/function.empty.php

だからあなたのコードは、例えば、このようになります:

if (empty(trim($_POST['email']))) { 
    echo "Email cannot be empty!\n"; 
    // you should add return or raise exception here 
    // or even exit 
    exit; 
} 

$email = trim($_POST['email']); 

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    echo "Your email {$email} is invalid\n"; 
    // you should add return or raise exception here 
    // or even exit 
    exit; 
} 

$email = mysqli_real_escape_string($email); 
+0

私は2回エコーする必要があります。それはfnameかlnameですか? –

+0

@felleciaWenメソッドでこのロジックを分離し、どのフィールドとどのように検証する必要があるか(ルールのセット)を伝えることができます。本当にシンプルなものを探している場合はbitを、次にyesの場合は各フィールドを個別に検証する必要があります。一方、いくつかの変数がループ内で設定されているかどうかを確認することができます。 – Axalix

+0

私は結合されていないことができ、空であり、同じエラーmsgを返しますか?彼らは基本的に同じことです、空白は、ユーザーにプロンプ​​トする、設定されてフロントエンドの開発者にプロンプ​​トすることです。あなたはポイントを得ることを願っています。 –

0

が不足しているすべてのフィールドをチェックするために、この方法を試してください。

$required_fields = array('email', 'name', 'password'); 
$err_msgs=array(); 
foreach($required_fields as $field) { 
    if(empty($_POST[$field])){ 
    err_msgs[]= $field . ' cannot be empty!'; 
    } 
    } 

    if (!empty($err_msgs)) { 
    echo json_decode($err_msgs); 
    } 

編集:Axを読み込んだ後にisset()を削除しました。アリックスの答え。

関連する問題