2010-08-04 22 views
5

Esto es parte de un script PHP que estoy creando. Básicamente, un dominio ($ dominio1) se define en un formulario y se muestra un mensaje diferente, basado en el código de respuesta del servidor. Sin embargo, tengo problemas para hacer que funcione. El código de respuesta de 3 dígitos es todo lo que soy interesado enObtener el código de respuesta del encabezado

Esto es lo que tengo hasta ahora:.

function get_http_response_code($domain1) { 
    $headers = get_headers($domain1); 
    return substr($headers[0], 9, 3); 
    foreach ($get_http_response_code as $gethead) { 
     if ($gethead == 200) { 
      echo "OKAY!"; 
     } else { 
      echo "Nokay!"; 
     } 
    } 
} 
+0

Parece que tiene alguna sangría/llaves divertidas allí. – Zaz

+0

¿Qué problemas tienes? Por favor, pegue los errores relevantes que esté recibiendo. Además, suponiendo que el código que pegó refleja con precisión su secuencia de comandos, no se ejecutará ninguno de los códigos debajo de su declaración 'return'. –

Respuesta

14
$domain1 = 'http://google.com'; 

function get_http_response_code($domain1) { 
    $headers = get_headers($domain1); 
    return substr($headers[0], 9, 3); 
} 

$get_http_response_code = get_http_response_code($domain1); 

if ($get_http_response_code == 200) { 
    echo "OKAY!"; 
} else { 
    echo "Nokay!"; 
} 
+0

Funciona muy bien, gracias :) – Batfan

+0

Trabajando para la mayoría de las cosas; sin embargo, si el sitio envía una redirección, entonces ese código de redirección es el primero, es decir '$ headers [0] = 301; $ headers [5] = 404' que podría significar trabajando o no trabajando. – mt025

6

Si tiene PHP 5.4.0+ puede utilizar la función http_response_code() . Ejemplo:

var_dump(http_response_code()); // int(200) 
+0

No estoy seguro de por qué está respondiendo una pregunta de hace 2 años (que fue respondida hace 2 años) pero, gracias por la información :) – Batfan

+3

oh, estaba buscando una solución relacionada con el código de respuesta http y abrí este hilo. Publiqué esto en caso de que alguien llegue aquí de alguna manera. ¡atentamente! – andufo

+2

'http_response_code()' es para configurar el código saliente (por ejemplo, para el navegador), no para verificar el código entrante (de un servidor), que es lo que OP deseaba hacer. –

0

Aquí está mi solución para las personas que necesitan enviar un correo electrónico cuando el servidor abajo:

$url = 'http://www.example.com'; 

while(true) { 

    $strHeader = get_headers($url)[0]; 

    $statusCode = substr($strHeader, 9, 3); 

    if($statusCode != 200) { 
     echo 'Server down.'; 
     // Send email 
    } 
    else { 
     echo 'oK'; 
    } 

    sleep(30); 
} 
0

Usted directamente devuelto lo que la función suele ejecutar más sobre el estado foreach que escrito. Siempre es mejor mantener dos funciones.

function get_http_response_code($domain1) { 
    $headers = get_headers($domain1); 
    return substr($headers[0], 9, 3); //**Here you should not return** 
    foreach ($get_http_response_code as $gethead) { 
     if ($gethead == 200) { 
      echo "OKAY!"; 
     } else { 
      echo "Nokay!"; 
     } 
    } 
} 
Cuestiones relacionadas