Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas con array_shift explode en PHP 5.4.39

Estas en el tema de Problemas con array_shift explode en PHP 5.4.39 en el foro de PHP en Foros del Web. Me sale el error "PHP Strict Standards: Only variables should be passed by reference in contentads.php on line 167" esto ocurre desde que el servidor ...
  #1 (permalink)  
Antiguo 07/04/2015, 09:23
Avatar de AlexServ  
Fecha de Ingreso: diciembre-2008
Ubicación: La Paz Bolivia
Mensajes: 97
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Problemas con array_shift explode en PHP 5.4.39

Me sale el error "PHP Strict Standards: Only variables should be passed by reference in contentads.php on line 167" esto ocurre desde que el servidor actualizó la versión de PHP, la linea 167 contiene $ip = array_shift(explode(',',$ip));

le dejo el código para que me puedan ayudar:

Código PHP:
//function from CBreCaptcha
function GetUserIp() {
   
$ip "";
   if(isset(
$_SERVER)) {
       if (!empty(
$_SERVER['HTTP_CLIENT_IP'])) {
         
$ip=$_SERVER['HTTP_CLIENT_IP'];
       } elseif (!empty(
$_SERVER['HTTP_X_FORWARDED_FOR'])) {
         
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
       } else {
         
$ip=$_SERVER['REMOTE_ADDR'];
       }
    } else {
       if ( 
getenv'HTTP_CLIENT_IP' ) ) {
          
$ip getenv'HTTP_CLIENT_IP' );
       } elseif ( 
getenv'HTTP_X_FORWARDED_FOR' ) ) {
          
$ip getenv'HTTP_X_FORWARDED_FOR' );
       } else {
          
$ip getenv'REMOTE_ADDR' );
        }
    }
    
// In some weird cases the ip address returned is repeated twice separated by comma
    
if(strstr($ip,',')){
      
$ip array_shift(explode(',',$ip));
    }
   return 
$ip;
 }

__________________
Noticias Bolivianas - La música es maravillosa Mp3 Bolivia
  #2 (permalink)  
Antiguo 07/04/2015, 09:55
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Problemas con array_shift explode en PHP 5.4.39

El problema es que explode no regresa una referencia y array_shift lo requiere para hacer su trabajo
la solución es sencilla; asigna el resultado de la función explode a una variable y esa variable pasala a la función array_shift.

Código PHP:
Ver original
  1. if(strstr($ip,',')){
  2.       $stack = explode(',',$ip);
  3.       $ip = array_shift($stack);
  4.     }
Procura leer el manual con frecuencia para estar al día con los cambios y siempre mantener la versión mas reciente de php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 07/04/2015, 11:07
Avatar de AlexServ  
Fecha de Ingreso: diciembre-2008
Ubicación: La Paz Bolivia
Mensajes: 97
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problemas con array_shift explode en PHP 5.4.39

Gracias, ahora si todo bien.
__________________
Noticias Bolivianas - La música es maravillosa Mp3 Bolivia

Etiquetas: explode, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:27.