2

小さなメールからテキストへのスクリプトを書いていますが、「doMail()」関数をifステートメントでラップするたびに失敗するか、関数内でmail()関数をラップすると失敗するようですif ステートメントも失敗します。

ただし、条件を削除すると、魅力的に機能しますか? 私は何をすべきですか、そしてこれの原因は何ですか?

編集:「...失敗しました」とは、「何かがうまくいかなかった!」とエコーすることを意味します。コードに従っている必要があるのと同じように。

コードは次のとおりです。

<?php
error_reporting(E_ALL);
session_start();
if (!$_SESSION['doesExist'] == true) 
    {
        echo "Session doesn't exist!";
        die();
    }

if (!isset($_POST['num']) || !isset($_POST['carrier']) || !isset($_POST['msg'])) 
    {
        echo "Failed!";
        die();
    }

$num = $_POST['num'];
$car = $_POST['carrier'];
$msg = $_POST['msg'];
$subject = '';
$head = 'From: admin@google.com' . "\r\n";

switch ($car)
    {
        case "att":
            $num .= "@txt.att.net";
            break;
        case "verizon":
            $num .= "@vtext.com";
            break;
        case "tmobile":
            $num .= "@tmomail.net";
            break;
    }

function doMail($toNum, $sub, $message, $headers)
    {
        if(mail($toNum, $sub, $message, $headers))
            {
                echo "Done!";
            }
        else
            {
                echo "Something went wrong!";
            }
    }

doMail($num, $subject, $msg, $head);

?>
4

1 に答える 1

1

どうやらこのコメントによると、mail()関数はのブール値の代わりに空の文字列を返す可能性があり、空の値が考慮されるため、条件ステートメントのTRUEように評価されます。FALSEFALSE

于 2013-02-16T23:15:43.867 に答える