从Javascript获取访客IP,然后将其用作php变量

Hello I am developing a contact form which will give the user ip and geo location details while they send me the message from my website, But the php code $ip = $_SERVER['REMOTE_ADDR']; is not showing the actual vistor ip, I have tried with many php functions they are working fine on other hosts but in my host it's not properly showing the client ip So I have decided to get the ip using JavaScript and then when my visitors will submit the contact the form to sent.php page the ip which I got from the JavaScript will be input with the form to get the POST value from it then I can process that variable and get the geo location and other information and send it along php mail.

Here is the javascript to get the actual user ip

    <script type="application/javascript">
      function getIP(json) {
        document.write("My public IP address is: ", json.ip);
      }
    </script>
<script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP">
</script>

And my email contact form is

    <form name="contact" class="select-style" action="sent.php" method="POST" >
            <p>Hello


            <select name="recipient">
            <option value="recipient_0" selected>Please Select Recipient !</option>             
                    <option value="recipient_1">Sales</option>
                    <option value="recipient_2">Support</option>
                </select>           

            </p>
            <label for="email">Your Message : </label>
            <textarea  name="message" value="Your Message" id="message" ></textarea>
            <p>Regards,</p> 
            <label for="name">Name: </label>
            <input type="text" name="name" value="" id="name" />
            <label for="email">Email: </label>
            <input type="text" name="email" value="" id="email" />
            <input type="hidden" name="ip" value="">
            <input type="submit" name ="submit" value="OK I want to send it now, thanks!" />
        </form>

And I think this is how I should input the ip with the form

<script type="text/javascript">
    jsvar= json.ip;
    document.contact.ip.value = jsvar;
</script>

But it's not giving the result I want. Please help.

drmg17928
drmg17928 当你发出警报(jsvar);,是否存在ip?
接近 4 年之前 回复
dpf25323
dpf25323 你可以在这个问题上发布解决方案,这样我就可以将其标记为正确的答案
接近 4 年之前 回复
dtp0760
dtp0760 他的问题是使用javascript将信息输入(隐藏)表单字段。该部分完全涵盖在所提到的链接中。关于方案是否错误的争论不会改变这种情况。
接近 4 年之前 回复
dougu5950
dougu5950 这里没有人可以告诉你有关sent.php页面的任何信息。如果该页面上的某些内容失败,那么您真的应该看看该页面。但是,我们无法知道这个页面或那个页面上的失败是什么,因为您无法告诉我们实际上失败了什么。是否在表单中发送了值?它是否在表单字段中设置?它在jsvar变量中是正确的,还是以json.ip开头?JavaScript是否在控制台上抛出错误?外部JavaScript是否加载?“付出一些努力”不仅仅是要求我们解决它。
接近 4 年之前 回复
dongqi6964
dongqi6964 兄弟我正在努力我不是要求为我建造它,但我是在正确的道路上吗?我的意思是我的代码是正确的吗?我在sent.php页面中获取了ip的空白值
接近 4 年之前 回复
doushi8187
doushi8187 如果您可以指定实际失败的内容,我们可以提供帮助。如果您只是指定了您的要求并希望有人为您构建,那么您最好的选择就是聘请程序员。我们都不能从这里看到您的屏幕,也无法在您的计算机上为您调试此屏幕。你将不得不至少付出一些努力。
接近 4 年之前 回复
dongmei2957
dongmei2957 在sent.php页面上,我能够回显所有的帖子值,但不是最后一个用于ip的表单输入,我想从JavaScript代码的值自动完成并将其作为帖子值提交到下一页(sent.php)
接近 4 年之前 回复
doudai3012
doudai3012 我为什么要发布我不想要的答案的不必要的代码,我希望用javascript代替php来完成这个任务,如果用户禁用js他们必须打开它以使用联系表单,否则他们可以不发送任何邮件,因为javascript表单验证在这种情况下也不起作用。
接近 4 年之前 回复
douping6871
douping6871 我测试时,问题中显示的代码有效。如果具体的东西不适合你,你将不得不详细说明问题。“它在我的机器上不起作用”并没有真正告诉我们任何有用的东西。
接近 4 年之前 回复
douge3113
douge3113 我也看不到你在哪里/调用getIP()函数。问题在很多方面都不清楚,无论如何,对你来说,你的问题/评论有点令人困惑。
接近 4 年之前 回复
doumanshan6314
doumanshan6314 问题是:“如果用户已禁用js,你会怎么做?那么呢?”-如果您想要使用JS获取其IP地址,则应将服务器端方法作为“计划B”。如果PHP失败了你,那么你需要找出原因,以及它是否与某些地方的可能错误有关。这就是错误报告在这里可能有所帮助的地方。
接近 4 年之前 回复
douxia3505
douxia3505 这不是用PHP获取ip的问题,我已经尝试了所有可能的php方法,使用了curl和get_file_content以及许多类,但我看到我自己的ip显示错误并在不同的服务器上使用相同的代码显示它正确所以我不想用PHP做
接近 4 年之前 回复
dongxian8048
dongxian8048 我知道用户可以向我显示错误的IP,但我认为它适用于普通用户而不是任何黑客或极客
接近 4 年之前 回复
douwei8295
douwei8295 因为我无法通过php获得正确的IP我希望JavaScript在我的情况下这样做所以我怎么能把这个ip值传递给下一页(sent.php)可能带有ajaxpost请求?任何答案都会很棒
接近 4 年之前 回复
dtqqq24248
dtqqq24248 我不同意。这是问题的一个非常狭窄的部分的答案,但我相信这是一个XY问题。
接近 4 年之前 回复
dongpan3001
dongpan3001 但是php代码$ip=$_SERVER['REMOTE_ADDR'];没有显示实际的vistorip-我没有看到你的代码中的任何地方,也没有看到任何PHP。
接近 4 年之前 回复
doushao8421
doushao8421 可能重复使用javascript设置输入字段的值
接近 4 年之前 回复
doutui7955
doutui7955 “但它没有给出我想要的结果。”-那么,你想要的结果是什么?它给你的结果是什么?它在什么时候变得不正确?由于您基本上要求用户告诉您他们的IP,他们可以告诉您他们想要的任何内容。无法保证您将获得正确的IP地址,甚至任何IP地址。
接近 4 年之前 回复
dsajkdadsa14222
dsajkdadsa14222 必须在服务器端传递IP请求。如果不是那么一定有一些错误的配置,或者你没有正确地做到这一点。你不应该通过JS来做到这一点。
接近 4 年之前 回复

1个回答

Solved the issue.

I just need to insert these JavaScript codes after the hidden input in <from>

    <input type="hidden" name="ip" value="" id="ip" />


 <script type="text/javascript">
  var userip;
</script>

<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>


                <script type="text/javascript"> 
  document.getElementById("ip").setAttribute('value', userip);
</script>
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐