2012-01-23 27 views
0

私は、ユーザーがsubmitをクリックした後にhtmlフォーム入力を入力した場合に見えるラフなPHPスクリプトを持っています。私はisset()とis_string()を動作させるのに問題があります。私がisset()を使用すると、フォーム入力が空白のままであってもフォームは電子メールで送信されますが、フォーム入力が埋められていてもis_string()はエラーメッセージをスローします。私が== NULLを使用している場合のみ動作します。現時点では、私は入力がPHPに慣れていないので、これが機能しない理由を理解しようとしているので、入力を検証するつもりはありません。php isset()is_string()が動作しない

$subject = "Feedback from Your Website."; 
$email = ($_POST['email']); 
$name = ($_POST['name']); 
$message = ($_POST['feedback']); 

if (isset($_POST["name"])) 
{ 
    //send message 
    mail($subject, $name, $email, $message); 
} 

else 
{ 
    //error message 
    echo "Please do not miss out any fields"; 
} 

私も試してみました:

if (isset($_POST["name"], $_POST['email'])) 
{ } 

if (isset($name, $email)) 
{ } 

if (is_string($name || $email)) 
{ } 

をしかし、すべてが失敗した、これまでのすべてのことが、働いては、次のとおりです。

if ($name == NULL || $email == NULL || $message == NULL) 
{ } 

事前にありがとうございます。

+0

たぶんますprint_r($ _ POST)を記述する必要が

はあなた – jap1968

+0

は、すべての4つの答えのミックスのように見えることができますあなたの問題の完全なイメージを与えます! – Alfabravo

答えて

3

empty()を使用してください。この関数は、変数が空であるか、または設定されていない場合はTRUEを返し、そうでない場合はFALSEを返します。

if (empty($_POST["name"]) || empty($_POST["email"]) || empty($_POST["feedback"])) 
{ 
    //error message 
    echo "Please do not miss out any fields"; 
} 
else 
{ 
    //send message 
    mail($subject, $name, $email, $message); 
} 
+0

そこに構文エラーがあります。 – TimWolla

+0

はい私は私がそれを見た後に質問を編集した最後に引用符を入れたことに気付きました。 – Yokocapolo

+0

ありがとう、これは私が間違っていたことを今理解するトリックでした。 – Yokocapolo

3

is_string($name || $email)$name || $emailbooleanにキャストし、booleanstringではありませんので、動作していません。

+0

ああ、ありがとう、覚えているだろう。 – Yokocapolo

0

どうすればいいですか空()あなたはte php manualで機能の詳細を確認できます。

+0

私はポストを読むのが一番良いと思っています!issetは空ではなくむしろですが、私はそれに感謝します。 – Yokocapolo

1

issetは配列に値が作成されているかどうかをチェックします。常にフォームには常に空白か同じフィールドがあるので、そこにいることになります。あなたの内容を確認する必要があります

+0

次回は心に留めてくれてありがとう。 – Yokocapolo

2

isset()関数は、フォームを送信した後にTrue値を返します。実際には、あなたのフィールドはあなたのターゲットファイルに送られています。あなたのコードはemmialを送信します。あなたが必要なものについて、あなたは以下のコードを使用する必要があります。

if (isset($_POST["name"]) && $_POST["name"] != '') { 
    // do something 
} 
1

ISSETを()$ _POST [「メール」]が設定されているので、trueを返します。それは単に空です。フォームを送信すると、フォームのすべての変数が設定されます。あなたはこの

if (isset($_POST["email"]) && $_POST["email"] != '') 
関連する問題