2016-08-24 11 views
-3

私のPHPの連絡フォームが正しく動作していて、後続の電子メールに送信者のIPアドレスを含むすべての情報が出力されます。フォームが生成する電子メールに送信者の都市と州を受け取るためにPHPフォームをコーディングするのに問題があります。連絡先フォームの市/州のスニペットが必要

私はいくつかのコードスニペットを試しましたが、私が得られる最も多くのものは、フォームの上にあるWebページの都市と州の出力です。代わりに電子メールでそれが必要です。無料のサービスを探しています。

PHPフォーム

<?php 
include 'contact_config.php'; 
session_start(); 
error_reporting (E_ALL^E_NOTICE); 

$post = (!empty($_POST)) ? true : false; 

if($post) 
{ 
include 'functions.php'; 

$name = stripslashes($_POST['name']); 
$email = trim($_POST['email']); 
$level = stripslashes($_POST['level']); 
$age = stripslashes($_POST['age']); 
$drums = stripslashes($_POST['drums']); 
$referral = stripslashes($_POST['referral']); 
$city = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); 
$subject = " Website Inquiry"; 
$message = " 

Name: ".$_POST['name'] 
." 

E-mail Address: ".$_POST['email'] 
." 

Level: ".$_POST['level'] 
." 

Age: ".$_POST['age'] 
." 

Drums: ".$_POST['drums'] 
." 

Referral: ".$_POST['referral'] 
." 

Message: ".$_POST['content'] 
." 

City: ".$_POST['city'] 
." 

IP Address: ". $_SERVER['REMOTE_ADDR']; 

$error = ''; 

// Check name 

if(!$name) 
{ 
$error .= 'Please enter your name.<br />'; 
} 

// Check email 

if(!$email) 
{ 
$error .= 'Please enter an e-mail address.<br />'; 
} 

if($email && !ValidateEmail($email)) 
{ 
$error .= 'Please enter a valid e-mail address.<br />'; 
} 

if(isset($_SESSION['captcha_keystring']) && strtolower($_SESSION['captcha_keystring']) != strtolower($_POST['captcha'])) 
{ 
$error .= "Incorrect captcha numbers.<br />"; 
} 

if(!$error) 
{ 

$mail = mail(WEBMASTER_EMAIL, $subject, $message, 
"From: ".$name." <".$email.">\r\n" 
."Reply-To: ".$email."\r\n" 
."X-Mailer: PHP/" . phpversion()); 

if($mail) 
{ 
echo 'OK'; 
} 

} 
else 
{ 
echo '<div class="notification_error">'.$error.'</div>'; 
} 

} 
?> 
+0

'$ _POST ['city']'ではなく '$ city'を使用します。あなたがそれを出力できるなら、それを送ることができるはずです。 – chris85

+2

_「無料サービスを探しています」_間違った場所では、私たちは無料のコーディングサービスではありません。 – Epodax

+0

Stackoverflowコーダーは、無料と有料の両方のロケーションサービスについて議論するこの問題の助けとなりました。しかし、ほとんどのすべての投稿は、場所の出力をフォームを含むWebページに送信し、フォームによって生成された電子メールは送信しませんでした。 – Lenny

答えて

0

あなたのコードのこの部分を見てみましょう。

$message = " 

Name: ".$_POST['name'] 
." 

E-mail Address: ".$_POST['email'] 
." 

Level: ".$_POST['level'] 
." 

Age: ".$_POST['age'] 
." 

Drums: ".$_POST['drums'] 
." 

Referral: ".$_POST['referral'] 
." 

Message: ".$_POST['content'] 
." 

City: ".$_POST['city'] 
." 

IP Address: ". $_SERVER['REMOTE_ADDR']; 

あなたは新しい変数に変数をconcattingています。 $ _POST ['state']やこれらのフィールドの呼び出し方法をこの大きな変数に追加するだけです。すでに$ _POST ['city']が追加されています。

メールに表示されていない場合は、送信しているフィールドの名前が異なります。

+0

意味ですか? 市: "$ _ POST ['city'] 。" 状態: "。$ _ POST ['状態'] 。" – Lenny

+0

これは、トリックを行う必要がありますが、都市と州がPOSTによって提出され、他の場所で生成、操作または変更されない場合に限ります。 –

+0

これも正しいですか? $ city = json_decode(file_get_contents( "http://ipinfo.io/{$ip}")); または変更する必要がありますか? – Lenny

関連する問題