2012-10-01 98 views
0

我想创建一个广告表单的答复,用户点击一个广告,并可以发送电子邮件,但我不希望用户真正看到他们是哪个地址发送它,而不是电子邮件地址可以从基于用户名的数据库中获取PHP - 基于数据库查询电子邮件到电子邮件地址

我试过这段代码,但似乎无法得到它的工作,任何帮助表示赞赏!

$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][email protected]([-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; 
+1

什么具体不起作用? – user1477388

回答

2

不要使用ereg函数。他们已被弃用,并有严重的问题。改用preg。

要回答你的问题,这应该是简单的

$to = $email1; 

或更好,但跳过这个阶段,做

$email1 = $row['email1']; 

随着'单引号,你这是在强迫PHP治疗$email1作为一个字符串,而不是一个变量。因此您要尝试发送到名为$email1的地址,而不是$email1变量的内容。

+0

+1好。我没有注意到单引号内的变量。 – Travesty3

+0

谢谢你这么多,这是现在工作! – neeko