[英]How to get IP address from HTML form using PHP?
目前,我正在嘗試接收使用網站上聯系表格的用戶的IP地址,並將其與其他信息一起發送到Firebase。 對於HTML和PHP,我使用了本教程中的確切代碼: http : //www.danielpinero.com/how-to-add-ip-address-html-form 。
這是firebase代碼:
// Initialize Firebase (ADD YOUR OWN DATA)
var config = {
apiKey: "XXXXXXXXXXXXXXXXXXXXXXXXX",
authDomain: "XXXXXXXXXXXXXXXXXXXXXXXX",
databaseURL: "XXXXXXXXXXXXXXXXXXXX",
projectId: "XXXXXXXXXXXXXXXXX",
storageBucket: "XXXXXXXXXXXXXXXXX",
messagingSenderId: "XXXXXXXXXXXX"
};
firebase.initializeApp(config);
// Reference messages collection
var messagesRef = firebase.database().ref('messages');
// Listen for form submit
el = document.getElementById('contactForm')
if(el){
el.addEventListener('submit', submitForm);
}
// Submit form
function submitForm(e){
e.preventDefault();
// Get values
var name = getInputVal('name');
var email = getInputVal('email');
var message = getInputVal('msg');
var ip = getInputVal('ip')
// Save message
saveMessage(name, email, message, ip);
// Clear form
document.getElementById('contactForm').reset();
}
// Function to get get form values
function getInputVal(id){
return document.getElementById(id).value;
}
// Save message to firebase
function saveMessage(name, email, message, ip){
var newMessageRef = messagesRef.push();
newMessageRef.set({
name: name,
email:email,
message:message,
ip:ip
});
}
這是我在表單上單擊“提交”時從firebase收到的即時消息:
取而代之的是,我希望顯示用戶的實際IP。 我是PHP的新手。 如果有人可以幫助我,那就太好了。
編輯(index.php):
<form id="contactForm" method="post" class="cta">
<div class="col gtr-uniform gtr-50">
<div class="col-8 col-12-xsmall inputs"><input type="text" name="name" id="name" placeholder="Name" /></div>
<div class="col-8 col-12-xsmall inputs"><input type="email" name="email" id="email" placeholder="Email Address" /></div>
<div class="col-8 col-12-xsmall inputs"><textarea id="msg" rows="4" cols="50" placeholder="Message"></textarea></div>
<input id="ip" type="hidden" name="ip" value="<?=$ip;?>">
<div class="col-4 col-12-xsmall"><input type="submit" value="Get Started" class="fit primary" /></div>
</div>
</form>
第一個問題是您在var ip = getInputVal('ip')
附近缺少分號
第二個問題是將<input id="ip" type="hidden" name="ip" value="<?=$ip;?>">
更改為<input id="ip" type="hidden" name="ip" value="<?php echo $ip;?>">
使用此命令可獲得更好的客戶端IP結果:
<?php
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
$ip = get_client_ip();
?>
現在,對於js變量,您可以通過多種方式填充它:
<script>var ip = "<?php echo $ip;?>"; </script>
或者,您可以將其填充為隱藏輸入的值,然后通過js獲取該值:
<script>var ip = document.getElementById('inputID').value; </script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.