/** * Test urlList() * * @return void */ public function testUrlList() { $check = []; foreach ($this->test_urls as $url => $result) { if ($result) { $check[] = $url; } } foreach ($this->short_url->urlList() as $item) { $this->assertContains($item["url"], $check); } }
<?php require_once __DIR__ . "/bootstrap.php"; use HirotoK\ShortURL\App\ShortURL; if (config("https") && !is_https()) { header("location: https://" . config("url") . "/list.php"); exit; } $ShortURL = new ShortURL(config("db")); header("Content-Type: text/html; charset=utf-8", true); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>List | ShortURL</title> <meta name="description" content="このサイトは短縮URLサイトを簡単に構築出来るアプリ、ShortURLの短縮したURLの一覧ページです。"> <meta name="keywords" content="ShortURL,Hiroto-K/ShortURL,PHP,Apache,短縮URL,サイト,自作"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <link rel="stylesheet" href="/assets/css/style.css"> <script src="/assets/js/lib.js"></script> </head> <body> <div class="container"> <div class="navbar navbar-default navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
<?php require_once __DIR__ . "/bootstrap.php"; use HirotoK\ShortURL\App\ShortURL; use HirotoK\ShortURL\App\ShortURLException; try { if (empty($_GET["hash"]) && !is_string($_GET["hash"])) { throw new ShortURLException("エラーが発生しました。"); } $hash = $_GET["hash"]; $ShortURL = new ShortURL(config("db")); $result = $ShortURL->getUrlById($hash); if (!isset($result["url"])) { throw new ShortURLException("そのようなURLは存在しません。"); } header("Location: {$result["url"]}"); exit; } catch (PDOException $e) { header("Content-Type: text/html; charset=utf-8", true); $msg = config("debug") ? $e->getMessage() : "データベースエラーが発生しました。"; print_error("Error", $msg); } catch (RuntimeException $e) { header("Content-Type: text/html; charset=utf-8", true); $msg = $e->getMessage(); print_error("Error", $msg); }
if (config("https") && !is_https()) { throw new ShortURLException("HTTPSで通信してください。"); } if ($_SERVER["REQUEST_METHOD"] !== "POST") { throw new ShortURLException("POSTで通信してください。"); } if (empty($url) && !is_string($url)) { throw new ShortURLException("URLを送信してください。"); } if (!is_url($url)) { throw new ShortURLException("URLはhttp://もしくはhttps://から入力してください。"); } if (!is_active_url($url)) { throw new ShortURLException("有効なURLを送信して下さい。"); } $ShortURL = new ShortURL(config("db")); $result = $ShortURL->add($url); $array = ["status" => "ok", "hash" => $result["id"], "url" => config("url") . "/" . $result["id"]]; } catch (PDOException $e) { header("HTTP/1.1 500 Internal Server Error"); $message = config("debug") ? $e->getMessage() : "データベースエラーでエラーが発生しました。"; $array = ["error" => ["message" => $message]]; } catch (RuntimeException $e) { header("HTTP/1.1 500 Internal Server Error"); $message = $e->getMessage(); $array = ["error" => ["message" => $message]]; } if (isset($array) && is_array($array)) { header("Content-Type: application/json; charset=utf-8", true); echo json_encode($array, JSON_UNESCAPED_UNICODE); }