【问题标题】:Call-time pass-by-reference has been deprecated for IP [duplicate]已弃用 IP 的调用时传递引用 [重复]
【发布时间】:2013-03-23 18:30:55
【问题描述】:

我收到此错误: 调用时传递引用已被弃用;如果您想通过引用传递它,请修改 ip_valid() 的声明。

在这些代码行的某个地方。问题是我在 PHP 方面没有那么强,无法弄清楚我需要修改什么来修复它。

任何建议都将不胜感激。

function getIP () 
{
    $check = array(
            'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR',
            'HTTP_FORWARDED', 'HTTP_VIA', 'HTTP_X_COMING_FROM', 'HTTP_COMING_FROM',
            'HTTP_CLIENT_IP'
            );

    foreach ( $check as $c ) {
        if ( ip_valid ( &$_SERVER [ $c ] ) ) {
            return ip_first ( $_SERVER [ $c ] );
        }
    }

    return $_SERVER['REMOTE_ADDR'];

}

提前问好

韦恩

【问题讨论】:

  • 这里:if ( ip_valid ( &$_SERVER [ $c ] ) ) {
  • 我看到答案说明 只需删除与号,这当然会按值传递。可以假设它应该通过引用传递是有原因的,但没有说明ip_valid 的声明也可以更改为ip_valid(&$ip_to_check);

标签: php


【解决方案1】:

尝试不使用&符号:

ip_valid ( $_SERVER [ $c ] )

正如你强迫by-reference

虽然,很明显,在传递相同的东西时,您不会为调用 ip_first 这样做,所以我想知道是什么让您认为它首先是正确的,以及为什么您在第二个中做的不同实例。

【讨论】:

  • 成功了.. 谢谢你们俩..
【解决方案2】:

只需从ip_valid ( &$_SERVER [ $c ] ) 中删除&

【讨论】:

  • 成功了.. 谢谢你们俩..
猜你喜欢
  • 2012-06-03
  • 2013-05-21
  • 1970-01-01
  • 2011-06-07
  • 2010-11-06
  • 2012-11-13
  • 2012-11-08
  • 1970-01-01
相关资源
最近更新 更多