0

送信ボタンをクリックすると、if else ステートメントが実行されます。ユーザーテーブルのフィールド「完了」で、値が6以上の場合はメールを送信する必要があり(このコードがあります)、そうでない場合はエラーを表示するか、エラーページにリダイレクトする必要があります(作成できます)。これは私の試みですが、値が6の場合でもエラーメッセージが表示されます

$usr_email = 'usr_email';
$user_name = 'user_name';
{
$sqltest = "SELECT complete From users where user_id =
".intval($_SESSION['user_id']);
}
if (isset($_POST['doSend'])) {

function getOne($query){
    $res = mysql_query($query);
    if (!$res) {
        trigger_error("db: ".mysql_error()." in ".$query);
        return FALSE;
    }
}
    if ($row = mysql_fetch_row($res)) {
        return $row[0];
    }

$isSending = getOne($sqltest);
$isSending === false;
if($isSending >= 6){
require_once "Mail.php";

$from = "<xxx>";
$to = "$usr_email";
$subject = "Hi";
$body = hello ";

$host = "ssl://smtp.gmail.com";
$port = "465";
$username = "xxx";
$password = "xxx";

$headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject);
$smtp = Mail::factory('smtp',
    array ('host' => $host,
        'port' => $port,
        'auth' => true,
        'username' => $username,
        'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
} else {
    header ("Location: error.php");
}
}
}
4

4 に答える 4

2

周りにフォームがないように見えますか?これはどう:

<p align="center">
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
    <input name="doSend" type="submit" id="doSend" value="Submit Application">
</form>
</p>

@your コメント: 6 より高くても? このような?

$isSending = getOne(9);
于 2012-04-18T19:24:05.097 に答える
2

変化する

<p align="center">
    <input name="doSend" type="submit" id="doSend" value="Submit Application">
</p>

<form name="input" action="myaccount.php" method="post">
    <input name="doSend" type="submit" id="doSend" value="Submit Application">
</form>

else外側のifステートメントに を追加する必要があります。

$isSending = getOne($sqltest);
$isSending === false;
if($isSending >= 6){
    require_once "Mail.php";

    $from = "<xxx>";
    $to = "$usr_email";
    $subject = "Hi";
    $body = hello ";

    $host = "ssl://smtp.gmail.com";
    $port = "465";
    $username = "xxx";
    $password = "xxx";

    $headers = array ('From' => $from,
        'To' => $to,
        'Subject' => $subject);
    $smtp = Mail::factory('smtp',
        array ('host' => $host,
            'port' => $port,
            'auth' => true,
            'username' => $username,
            'password' => $password));

    $mail = $smtp->send($to, $headers, $body);

    if (PEAR::isError($mail)) {
        echo("<p>" . $mail->getMessage() . "</p>");
    } else {
        echo("<p>Message successfully sent!</p>");
    }
}
else
    header ("Location: error.php");
于 2012-04-18T19:25:11.087 に答える
0

すべてではないにしてもほとんどのブラウザーでは、送信ボタンは <form/> にない場合は何もしません。そうでない場合は、入力タグをフォームでラップすると機能します。

于 2012-04-18T19:21:00.243 に答える
0

関数定義は、2 番目のifステートメントの前で終了します。

function getOne($query){
    $res = mysql_query($query);
    if (!$res) {
        trigger_error("db: ".mysql_error()." in ".$query);
        return FALSE;
    }
}
if ($row = mysql_fetch_row($res)) {
    return $row[0];
}

次のようにする必要があります。

function getOne($query){
    $res = mysql_query($query);
    if (!$res) {
        trigger_error("db: ".mysql_error()." in ".$query);
        return FALSE;
    }
    if ($row = mysql_fetch_row($res)) {
        return $row[0];
    }
}

現在のところ、SQL クエリから取得した値が返されることはありません。

于 2012-04-18T20:51:24.227 に答える