0 レビュー
3 回答
php-IPアドレスは電子メール本文に渡されません
私のphpフォームは、送信者からIPアドレスを取得するように設定されています。 フォームはエラーなしで生成されます...受信したテスト電子メールですが、電子メールの本文にIPアドレスを渡しません。 私は何を間違えましたか? これがphpフォームです:
<?php
$owner_email='[email protected]';
//SMTP server settings
$host = '';
$port = '465';//"587";
$username = '';
$password = '';
$subject='My Website Design';
$user_email='';
$message_body='';
$message_type='html';
$max_file_size=50;//MB
$file_types='/(doc|docx|txt|pdf|zip|rar)$/';
$error_text='something goes wrong';
$error_text_filesize='File size must be less than';
$error_text_filetype='Failed to upload file. This file type is not allowed. Accepted files types: doc, docx, txt, pdf, zip, rar.';
$private_recaptcha_key='6LeZwukSAAAAACmqrbLmdpvdhC68NLB1c9EA5vzU'; //localhost
$use_recaptcha=isset( $_POST["recaptcha_challenge_field"]) and isset($_POST["recaptcha_response_field"]);
$use_smtp=($host=='' or $username=='' or $password=='');
$max_file_size*=1048576;
if($owner_email==''){
die('Attention, recipient e-mail is not set! Please define "owner_email" variable in the MailHanlder.php file.');
}
if(preg_match('/^(127\.|192\.168\.)/',$_SERVER['REMOTE_ADDR'])){
die('Attention, contact form will not work locally! Please upload your template to a live hosting server.');
}
if($use_recaptcha){
require_once('recaptchalib.php');
$resp = recaptcha_check_answer ($private_recaptcha_key,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
if (!$resp->is_valid){
die ('wrong captcha');
}
}
if(isset($_POST['name']) and $_POST['name'] != ''){$message_body .= '<p>Name: ' . $_POST['name'] . '</p>' . "\n" . '<br>' . "\n"; $subject.=$_POST['name'];}
if(isset($_POST['email']) and $_POST['email'] != ''){$message_body .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n" . '<br>' . "\n"; $user_email=$_POST['email'];}
if(isset($_POST['company']) and $_POST['company'] != ''){$message_body .= '<p>Company: ' . $_POST['company'] . '</p>' . "\n" . '<br>' . "\n";}
if(isset($_POST['topic']) and $_POST['topic'] != ''){$message_body .= '<p>Topic: ' . $_POST['topic'] . '</p>' . "\n" . '<br>' . "\n";}
if(isset($_POST['ipaddress']) and $_POST['ipaddress'] != ''){$message_body .= '<p>IP Address: ' . $_POST['ipaddress'] . '</p>' . "\n" . '<br>' . "\n";}
if(isset($_POST['message']) and $_POST['message'] != ''){$message_body .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";}
if(isset($_POST['stripHTML']) and $_POST['stripHTML']=='true'){$message_body = strip_tags($message_body);$message_type='text';}
try{
include "libmail.php";
$m= new Mail("utf-8");
$m->From($user_email);
$m->To($owner_email);
$m->Subject($subject);
$m->Body($message_body,$message_type);
//$m->log_on(true);
// Function to get the client ip address
function get_client_ip_server() {
$ipaddress = '';
if ($_SERVER['HTTP_CLIENT_IP'])
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if($_SERVER['HTTP_X_FORWARDED'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if($_SERVER['HTTP_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if($_SERVER['HTTP_FORWARDED'])
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if($_SERVER['REMOTE_ADDR'])
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
if(isset($_FILES['attachment'])){
if($_FILES['attachment']['size']>$max_file_size){
$error_text=$error_text_filesize . ' ' . $max_file_size . 'bytes';
die($error_text);
}else{
if(preg_match($file_types,$_FILES['attachment']['name'])){
$m->Attach($_FILES['attachment']['tmp_name'],$_FILES['attachment']['name'],'','attachment');
}else{
$error_text=$error_text_filetype;
die($error_text);
}
}
}
if(!$use_smtp){
$m->smtp_on( $host, $username, $password, $port);
}
if($m->Send()){
die('success');
}
}catch(Exception $mail){
die($mail);
}
?>
わからない
0
レビュー
答え :
解決策:
if(isset($_POST['ipaddress']) and $_POST['ipaddress'] != '')
{$message_body .= '<p>IP Address: ' . $_POST['ipaddress'] . '</p>'
to
{$message_body .= '<p>IP Address: ' .get_client_ip_server() . '</p>'
わからない
0
レビュー
答え :
解決策:
get_client_ip_server()
ifステートメントで!empty()を試してください
function get_client_ip_server() {
$ ipaddress ='';
if(!empty($ _ SERVER ['HTTP_CLIENT_IP']))
$ ipaddress = $ _SERVER ['HTTP_CLIENT_IP'];
else if(!empty($ _ SERVER ['HTTP_X_FORWARDED_FOR']))
$ ipaddress = $ _SERVER ['HTTP_X_FORWARDED_FOR'];
else if(!empty($ _ SERVER ['HTTP_X_FORWARDED']))
$ ipaddress = $ _SERVER ['HTTP_X_FORWARDED'];
else if(!empty($ _ SERVER ['HTTP_FORWARDED_FOR']))
$ ipaddress = $ _SERVER ['HTTP_FORWARDED_FOR'];
else if(!empty($ _ SERVER ['HTTP_FORWARDED']))
$ ipaddress = $ _SERVER ['HTTP_FORWARDED'];
else if(!empty($ _ SERVER ['REMOTE_ADDR']))
$ ipaddress = $ _SERVER ['REMOTE_ADDR'];
そうしないと
$ ipaddress='不明';
$ipaddressを返します。
}
わからない
0
レビュー
答え :
解決策:
手順は初心者には複雑すぎます。重要度の低いデータを取得するために、シンプルに保ちます。たとえば、ipを取得するには
$ip = $_SERVER['REMOTE_ADDR'];
ipが必要な場所で$ip
を使用します。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。