0

私はいくつかのプログラミングに問題があります。顧客がカフェのウェブサイトでカフェのテーブルを注文すると、カフェのオーナーが入って注文を承認または拒否できます。次に、ボードを注文した顧客は、電子メールが承認または拒否されたことを示す電子メールを受信する必要があります。

<?php

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
mysql_query("SET NAMES utf8");
mysql_query("SET character_set_results='utf8&#8242;");

function escapeAddr($addr) {
    $check = preg_match('/(.*)<(.*)>/', $addr, $a);
    if ($check) $addr = '=?UTF-8?B?'.base64_encode($a[1]).'?= <'.$a[2].'>';
    return $addr;
}
function mail_utf8($to, $subject='no subject', $message='', $from='', $cc='', $bcc='') {
$to = $email;
$subject = "subject";
$message = "message" ;
$from = escapeAddr($from);
$header = 'From: '.$from.PHP_EOL
            . 'Return-Path: '.$from.PHP_EOL
            . 'Reply-To: '.$from.PHP_EOL
            . 'MIME-Version: 1.0'.PHP_EOL
            . 'Content-type: text/plain; charset=UTF-8'.PHP_EOL
            . 'X-Mailer: PHP/'.phpversion().PHP_EOL
            . 'Content-Transfer-Encoding: 8bit'.PHP_EOL;
    if ($cc!='') $header .= 'Cc: '.escapeAddr($cc).PHP_EOL;
    if ($bcc!='') $header .= 'Bcc: '.escapeAddr($bcc).PHP_EOL;
    $header .= PHP_EOL;
    return mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header);
}

$g_id = ( isset( $_GET['id']) && is_numeric( $_GET['id']) ? (int)$_GET['id'] : FALSE);
if( !$g_id) {
    echo 'Error'; // ID not currect
}
else {
    $query = mysql_query("SELECT email FROM $tbl_name WHERE id=$g_id");
    $row = mysql_fetch_assoc($query);
    $email = $row['email'];

    if( mail_utf8($email, 'Table', 'message', 'no-reply@email.com')) {
        echo 'Accepted'; 
    }
    else
    {
        echo 'Error';
    }
}
?>

もちろん、所有者は、注文を承認または拒否できるようにログインする必要があります。拒否または承認するために押すフォームですが、<a hrefリンクなので、パスを使用しましたaccept.php?Id=

メールは、注文に一致するメールに送信する必要があります。

4

2 に答える 2

1

一部のサーバーでは、設定によっては、php メーラーが動作しない場合があります。メールを送信するには SMTP クラスが必要かもしれません。

于 2012-04-14T18:39:36.703 に答える
0

最初に、2 番目の Mysql-Query の Html-Character がそこにある必要はありません。これを ' に置き換えます。次に、メール ヘッダーから Content-Transfer-Encoding を削除してみてください。3 番目の、しかし些細な理由: $tbl_name が設定されているか? $from-variable のアドレスが正規表現の正しい形式であることは確かですか?

于 2012-04-14T18:25:57.417 に答える