【问题标题】:Script for getting IP address of visitor is not working获取访问者 IP 地址的脚本不起作用
【发布时间】:2012-01-28 12:40:28
【问题描述】:

我正在使用 php myadmin 手动将以下行存储在 mysql 数据库中。

IP 地址:''

当我确认它在数据库中时,它会得到更新。 我的 php 页面从数据库中获取它并更新 html。

我得到的输出是 -
IP address :

我不是 php 方面的专家。我也不能将 直接写入我的 php 页面。请帮忙告诉我哪里错了。

【问题讨论】:

  • 向我们展示将数据存储到 Db 的完整代码
  • 我理解对了吗,您将<div>IP address : '<?php echo $_SERVER['REMOTE_ADDR']?>'</div> 存储在您的数据库中?
  • 修改了问题。请参考。我没有使用任何插入查询。
  • 如果你知道它被正确存储,你能告诉我们你是如何显示它的吗?
  • @Ash 这行不通!您需要将函数调用的实际结果存储在数据库中

标签: php mysql http ip-address


【解决方案1】:

您不应该在数据库中存储变量名称。因为它们的内容不会被保存,只有它的名字。

如果您希望显示当前客户端 IP,您可以(对于要执行的每个 php 内容)对其进行评估。

ob_start();
eval( $the_table_content );
$the_content = ob_get_clean();

现在您的正确内容存储在$the_content 中,例如可以由echo $the_content 输出

但如果你只想输出它,你不需要上面的代码,可以试试eval( $the_table_content )而不是echo $the_table_content

更好的解决方案通常是 Eugen Riecks,但在少数情况下,这是最快和最简单的。

【讨论】:

    【解决方案2】:

    当您从数据库中获取文本并将其输出到客户端时,它只会被写入,而不是执行 - 所以

    $_SERVER['REMOTE_ADDR']
    

    永远不会被真实IP地址取代。

    一个解决方案是存储

    <div>IP address : '%s'</div> 
    

    在您的数据库中,稍后获取它并

    echo sprintf($txtfromdb,$_SERVER['REMOTE_ADDR'])
    

    给你的客户。

    【讨论】:

    • 或者只是 printf(echo sprintf 有点多余)。
    • 原则上我的立场是正确的。我对 eth sprintf() 的(潜意识)想法是,您可能希望在某些模板解析或类似的东西中使用结果,而不是直接将其扔给客户端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多