2014-10-06 5 views
0

등록이 완료되면 이메일을 보내야하는 PHP 스크립트가 있습니다. 이것은 누군가가 이메일을 등록하고 누군가를 보내면 곧바로 작동합니다. 그러나, 나는 때때로 한 시간 후에 같은 이메일을받는 것을 알아 챘다. 때때로 그것은 심지어 주일 전에받은 등록에 대한 이메일을 갑자기 내게 보냅니다. 당신이 테이블에서이 개 기록을 얻는 경우phpmail이 두 번 이메일을 전송합니다.

$key=$_GET[key]; 
    if(isset($key) || !empty($key)){ 
     $query1=mysql_query("SELECT * FROM registration WHERE value='$key'"); 
     while($question_list = mysql_fetch_array($query1)){ 
      $num_questions=mysql_num_rows($query1); 
      $title= $question_list['title']; 
      $firstname=$question_list['firstname']; 
      $lastname=$question_list['familyname']; 
      $dateofbirth=$question_list['dob']; 
      $gender=$question_list['gender']; 
      $nationality=$question_list['nationality']; 
      $email=$question_list['email']; 
      $to = "[email protected]"; 
      $subject = "Registration"; 
      $message = "Hello! Registration, see below."."\n"; 
      $message.="\n"; 
      $message.="Title: "; 
      $message.=$title."\n"; 
      $message.="First Name: "; 
      $message.=$firstname."\n"; 
      $message.="Last Name: "; 
      $message.=$lastname."\n"; 
      $message.="Gender: "; 
      $message.=$gender."\n"; 
      $message.="Date of Birth: "; 
      $message.=$dateofbirth."\n"; 
      $message.="Nationality: "; 
      $message.=$nationality."\n"; 
      $message.="Email Address: "; 
      $message.=$email."\n"; 
      $message.="Telephone: "; 
      $message.=$telephone."\n"; 
      $from = "[email protected]"; 
      $headers = "From:" . $from; 
      mail($to,$subject,$message,$headers); 
     } 
    } 
+0

'$ key = $ _ GET [key]'어디에서 상수'key'를 정의 했습니까? 아니면'$ _GE [ 'key']'를 의미 했습니까? 주의, 당신의 스크립트는 SQL injection에 열려 있습니다. – DanFromGermany

답변

2
그래서 당신의 메일 한 번만

을 보낼 것

"SELECT * FROM registration WHERE value='$key' LIMIT 0,1" 

에 SQL 쿼리를 변경

다음 보내는 끝날 것 질문 목록 하나의 메일 두 번.

관련 문제