2013-06-21 3 views
0

나는 서명자가 내 사이트의 백 오피스에서 그 사람에게 서명하도록 허락하는 PHP 스크립팅으로 청원 웹 사이트를 만들었습니다. 내가 성취하고자하는 것은 메일 기능을 스크립트에 추가하여 서명자 정보는 물론 타임 스탬프, IP 주소 및 사용자 에이전트 ID를 내 이메일 주소로 이메일로 보냅니다. 이것에 대한 도움이 있으면 대단히 감사하겠습니다. 나는 PHP에 익숙하지 않고 어떻게 코드를 작성하는지 스스로 가르친다.이미 존재하는 PHP 스크립트에 기능을 추가하기 위해 메일 추가하기

<?php 
include('database/config.php'); 
include('database/database.php'); 

$err = ''; 

if(isset($_POST['submit'])){   

    $first = addslashes(trim($_POST['first'])); 

    $last = addslashes(trim($_POST['last'])); 

    $glvar = addslashes(trim($_POST['glvar'])); 

    $ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; 
    //echo $ip; 

    if(($first!='')&& ($last!='')&& ($glvar!='')){ 

     $database = new Database(HOST, DATEBASE, USERNAME, PASSWORD); 

     $allUsers = $database->select('user','glvar_id','*',"glvar_id = '".$glvar."'"); 
     //echo $ip;  

     $checkglvar = 0;    
    $checkglvar = count($allUsers); 

     $userData = array(    
      'first_name' => $first, 
      'last_name' => $last,    
      'glvar_id' => $glvar,  
      'ip' => $ip,   

     );  

     if(!$checkglvar) {   

      $database->insert('user',$userData); 

      mail("[email protected]", "Subject", "message"); 

      header('location:thank-you.html');  

     } else $err.='<p style="color:red">Ooops! You have already signed the petition</p>';   

    } else {  

     if($first=='') $err.='<p style="color:red">Your First Name is empty</p>'; 

     if($last=='') $err.='<p style="color:red">Your Last Name is empty</p>'; 

     if($glvar=='') $err.='<p style="color:red">Your GLVAR ID is empty</p>'; 

    } 

} 
+0

'mail()'함수를 사용합니다. – DevZer0

+0

저는이 기능을 가지고 있습니다. 그러나 타임 스탬프, IP 주소 및 사용자 에이전트 ID로 전자 메일 설정을 정의하는 방법은 무엇입니까? – user2507414

답변

0
mail("[email protected]", "Subject", "message"); 

당신은 "주제"와 "메시지"를 만들 수 있습니다으로 분리되어 당신이 원하는 무엇이든합니다. 전자 메일의 "To :", "Subject Line", "전자 메일 내용"의 3 가지 필드로 생각하십시오.

그래서 당신은 이메일로 발송하는 변수를 만들 수 있습니다 좋아 :

$message = "IP: $ip" . PHP_EOL; 
$message .= "TIME: " . date('Y-m-d H:i:s'); 
$message .= "UserAgent: $glvar_id" . PHP_EOL; 

mail("[email protected]", "Subject of email", $message); 

이것은처럼 보이는 이메일을 보내 것 : 그런데

Subject: Subject of email 
Contents: 
IP: 127.0.0.1 
Time: 2013-06-21 12:30:12 
UserAgent: whatever-this-id-looks-like 

, 나는 아무 생각이 무엇을 사용자 에이전트 ID를 의미하므로 UserAgent로 $ glvar_id를 사용했지만 올바른지 의심 스럽습니다.

0

헤더 기능이있는 메일 기능을 사용하는 방법입니다. 헤더가 \r\n

$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
'Reply-To: [email protected]' . "\r\n" . 
'X-Originating-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 
0

date() 기능 대신 time()으로 시간 소인이 필요하면 사람이 읽을 수있는 날짜 또는 유닉스 시간 소인이 필요한지 확실하지 않습니다. 다른 형식에 대한 date() 문서를 확인하십시오. 그리고 "\ n"은 개행 문자입니다 (당신이 알지 못하는 경우를 대비해서).

코드에서 헤더를 보내지 않았습니다. 위 코드 ("From : [email protected]")의 네 번째 매개 변수는 보낸 사람 필드를 전자 메일에 추가하여받은 편지함에서 더 잘 보이게합니다.

+0

나는 당신의 스크립팅을 따른다. 그러나 나는 아직도 이것에 아주 새로운 것이고, 그들의 이름과 glvar ID를 추가하는 방법을 혼란스럽게한다. 이 모든 것을 도와 주셔서 감사합니다. – user2507414

관련 문제