Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

177
Visualizações
Si la declaración con el archivo obtiene contenido para evitar el error 403

Estoy tratando de obtener una cadena de dominios cruzados, pero en algún momento o algún sitio web da un error 403 Forbidden . Entonces, para protegerme de recibir un error, estoy tratando de incluir la if statement , si el sitio uno obtiene un error al obtener la cadena, entonces se moverá a otra parte y tomará la cadena del sitio dos.

Error :

Advertencia: file_get_contents( https://www.example.com ): No se pudo abrir la transmisión: ¡La solicitud HTTP falló! HTTP/1.1 403 Prohibido

Código:

 $siteone = file_get_contents("https://www.example.com"); $sitetwo = file_get_contents("https://www.example.net"); if ($siteone === false) { $error = error_get_last(); echo $sitetwo; } else { echo $siteone; }

Entonces, aquí, si example.com da 403 error , automáticamente ignora example.com y obtiene una cadena de example.net .

También probé try and catch pero no funcionó. ¡¡Por favor ayuda!!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En lugar de usar file_get_contents o quedar atrapado escribiendo funciones usando get_headers etc. para verificar el código de respuesta antes de intentar capturar los contenidos, sugiero usar cURL. Dentro de su solicitud de curl, puede inspeccionar el código de respuesta HTTP directamente y la ventaja adicional es que automáticamente tiene el contenido disponible si la solicitud es exitosa.

 $errors = $valid = $content = array(); $break_on_success = false; $urls=array( 'https://www.bogus.com', 'https://stackoverflow.com/', 'https://developer.mozilla.org', 'https://developer.mozilla.org/en-US/admin', 'https://stackoverflow.com/questions/70518330/if-statement-with-file-get-contents-to-avoid-403-error', 'https://www.gumtree.com/', 'https://httpstat.us/307', 'https://httpstat.us/403', 'https://httpstat.us/401', 'https://www.farcebook.com' ); foreach( $urls as $url ){ $ch=curl_init( $url ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 ); curl_setopt( $ch, CURLOPT_CAINFO, $cacert ); curl_setopt( $ch, CURLOPT_CAPATH, $cacert ); $response=curl_exec( $ch ); if( !curl_errno( $ch ) ){ $status=curl_getinfo( $ch, CURLINFO_RESPONSE_CODE ); if( $status==200 ){ $valid[]=$url; $content[ $url ]=$response; if( $break_on_success )break; }else{ $errors[ $status ]=$url; } } $ch=null; } printf('<pre>%s</pre>',print_r($valid,true)); printf('<pre>%s</pre>',print_r($errors,true));

Esto generará la siguiente salida:

 Array ( [0] => https://stackoverflow.com/ [1] => https://developer.mozilla.org [2] => https://stackoverflow.com/questions/70518330/if-statement-with-file-get-contents-to-avoid-403-error [3] => https://www.gumtree.com/ [4] => https://httpstat.us/307 [5] => https://www.farcebook.com ) Array ( [404] => https://developer.mozilla.org/en-US/admin [403] => https://httpstat.us/403 [401] => https://httpstat.us/401 )

Las direcciones URL enumeradas en la primera matriz se han procesado y no devuelven un código de estado http falso, mientras que las de la segunda se pueden ignorar. Si, en lo anterior, establece $break_on_success=true; el código se detendría una vez que se haya encontrado la primera URL para devolver una buena respuesta. El contenido HTML de cada URL se almacena dentro de la matriz $content y se puede procesar posteriormente.

Mencioné usar get_headers para lograr este objetivo. Si bien es posible, existen varias trampas que uno podría encontrar y cualquier código podría terminar siendo más complicado de lo necesario.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda