0

ユーザーが広告をクリックしてメールを送信できる広告フォームへの返信を作成しようとしていますが、送信先のアドレスをユーザーに実際に見せたくありません。広告のユーザー名に基づくデータベース

私はこのコードを試しましたが、うまく動作しないようです。

$username = $_SESSION['username'];

$sql = "SELECT * FROM user WHERE username=:username";
$q = $conn->prepare($sql);
$q->bindParam(':username', $username, PDO::PARAM_STR);
$q->execute();
$row = $q->fetch(PDO::FETCH_ASSOC);

$email1 = $row['email']; 

 $to='$email1';
$messageSubject='Message subject';
$confirmationSubject='Confirmation message subject';
$confirmationBody="Confirmation message body";
 $email='';
  $body='';
$displayForm=true;
if ($_POST){
$email=stripslashes($_POST['email']);
$body=stripslashes($_POST['body']);
// validate e-mail address
$valid=eregi('^([0-9a-z]+[-._+&])*[0-9a-z]+@([-0-9a-z]+[.])+[a-z]{2,6}$',$email);
$crack=eregi("(\r|\n)(to:|from:|cc:|bcc:)",$body);
if ($email && $body && $valid && !$crack){
  if (mail($to,$messageSubject,$body,'From: '.$email."\r\n")
      && mail($email,$confirmationSubject,$confirmationBody.$body,'From: '.$to."\r\n")){
    $displayForm=false;
4

1 に答える 1

2

ereg 関数を使用しないでください。それらは推奨されておらず、重大な問題があります。代わりに preg を使用してください。

あなたの質問に答えるには、これは単純なはずです

$to = $email1;

またはさらに良いことに、その段階をスキップして実行します

$email1 = $row['email1'];

一重引用符を使用すると、 'PHP が変数としてではなく、文字列として処理するように強制さ$email1れます。したがって、変数$email1の内容ではなく、という名前のアドレスに送信しようとしています。$email1

于 2012-10-01T14:46:35.507 に答える