2012-10-01 4 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을 치료하기 위해 PHP를 강요하고있는 ' 작은 따옴표로

$email1 = $row['email1']; 

을 수행해야합니다 문자열이 아닌 변수로 사용됩니다. 따라서 $email1 변수의 내용이 아닌 $email1이라는 주소로 보내려고합니다.

+0

+1 잘 잡습니다. 나는 작은 따옴표 안에서 변수를 발견하지 못했습니다. – Travesty3

+0

고맙습니다. 지금이 작업 중입니다 !! – neeko

관련 문제