page.iframe.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. global $_,$myUser;
  3. if(!$myUser->connected()) throw new Exception("Connexion requise", 401);
  4. if(!isset($_['url'])) throw new Exception("Url d'entrée non définie");
  5. $url = base64_decode($_['url']);
  6. try{
  7. $request = @get_headers($url, true);
  8. $error = '';
  9. if(!$request) $response['state'] = false;
  10. if(is_array($request) && isset($request[0])){
  11. $headers = array();
  12. // Make more sane response
  13. foreach($request as $h => $v)
  14. {
  15. if(is_int($h))
  16. $headers[$h]['Status'] = $v;
  17. else
  18. {
  19. if(is_string($v))
  20. $headers[0][$h] = $v;
  21. }
  22. }
  23. $lastHeader = end($headers);
  24. if(!preg_match('/ 200 /i',$lastHeader['Status'])) throw new Exception($lastHeader['Status']);
  25. }else{
  26. throw new Exception('HTTP/1.1 404 Not Found');
  27. }
  28. }catch(Exception $e){
  29. $code = 0;
  30. list($protocol,$code,$sentence) = explode(' ',$e->getMessage());
  31. $mapping = array(
  32. 400 => 'La syntaxe de la requête est erronée.',
  33. 401 => 'Utilisateur non authentifié',
  34. 402 => 'Paiement requis pour accéder à la ressource.',
  35. 403 => 'Accès refusé',
  36. 404 => 'Adresse introuvable ou momentanément indisponible',
  37. 495 => 'Problème de certificat SSL',
  38. 498 => 'Le jeton a expiré ou est invalide.',
  39. 500 => 'Le serveur rencontre des erreurs internes',
  40. 502 => 'En agissant en tant que serveur proxy ou passerelle, le serveur a reçu une réponse invalide depuis le serveur distant.',
  41. 503 => 'Service temporairement indisponible ou en maintenance.',
  42. );
  43. if(isset($mapping[$code])){
  44. $error = $mapping[$code];
  45. }else{
  46. $error = 'raison indéfinie ('.$code.' - '.$sentence.')';
  47. }
  48. }
  49. if(!empty($error)){
  50. ?>
  51. <div class="alert alert-warning m-3" role="alert">
  52. <strong>Erreur</strong> Le portail <a href="<?php echo $url; ?>" class="alert-link"><?php echo $url; ?></a> n'est pas accessible. Raison : <?php echo $error; ?>
  53. </div>
  54. <?php
  55. }else{
  56. ?>
  57. <iframe src="<?php echo $url; ?>" style="width:100%;height:100%;border:0" frameborder="0"></iframe>
  58. <?php } ?>