Adds beginning of status code handling, better status code reporting

This commit is contained in:
Andrew Gioia 2023-12-09 14:40:26 -05:00
parent db57919ade
commit 7f6c4a6d77
Signed by: andrew
GPG Key ID: FC09694A000800C8
4 changed files with 120 additions and 82 deletions

View File

@ -84,9 +84,17 @@ class Follow
{ {
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$this->code = ($code) ? $code : 0; $this->code = ($code) ? $code : 0;
if ($code == 200) {
// handle certain codes specifically
switch ($code)
{
case 200:
$this->updatePath($this->step, 'code', $this->code); $this->updatePath($this->step, 'code', $this->code);
return true; return true;
case 404:
$this->updatePath($this->step, 'code', $this->code);
$this->setError(['type' => 'code', 'message' => 'URL returned a 404 error response.']);
return true;
} }
} }
else else

View File

@ -24,6 +24,7 @@ if (isset($_POST['url']))
// end on an error // end on an error
if ($request->error) if ($request->error)
{ {
$error = $request->error;
break; break;
} }
@ -33,7 +34,7 @@ if (isset($_POST['url']))
// update our code // update our code
$code = ($request->code) ? $request->code : false; $code = ($request->code) ? $request->code : false;
} while ($code != 200); } while (substr($code, 0, 1) != 2);
} }
else else
{ {

View File

@ -116,6 +116,16 @@ button[type="submit"]:hover {
background-color: #f0eded; background-color: #f0eded;
} }
address {
display: flex;
align-self: stretch;
align-items: center;
justify-content: center;
font-style: normal;
padding: 0.5rem 0;
background: #ffdee3;
}
main { main {
align-items: center; align-items: center;
align-self: stretch; align-self: stretch;
@ -252,13 +262,21 @@ td {
vertical-align: top; vertical-align: top;
word-wrap: anywhere; word-wrap: anywhere;
} }
td:first-child {
text-align: center;
}
td:nth-child(2) { td:nth-child(2) {
line-height: 1.5rem; line-height: 1.5rem;
padding: 0.8rem 1rem; padding: 0.8rem 1rem;
width: 100%;
} }
td:nth-child(2) a:hover { td:nth-child(2) a:hover {
text-decoration-color: transparent; text-decoration-color: transparent;
} }
td:nth-child(4) {
text-align: center;
padding-right: 1.5rem;
}
td b { td b {
border: 1px solid #aaa; border: 1px solid #aaa;
border-right-width: 2px; border-right-width: 2px;
@ -271,10 +289,17 @@ td b {
padding: 0 0.25rem; padding: 0 0.25rem;
transition: border-color 150ms ease-in-out, color 150ms ease-in-out; transition: border-color 150ms ease-in-out, color 150ms ease-in-out;
} }
td b i {
display: inline-block;
transition: transform 150ms ease-in-out;
}
td:nth-child(2) a:hover b { td:nth-child(2) a:hover b {
border-color: #1a1a1a; border-color: #1a1a1a;
color: #1a1a1a; color: #1a1a1a;
} }
td:nth-child(2) a:hover b i {
transform: rotate(45deg);
}
tbody tr:nth-child(odd) td { tbody tr:nth-child(odd) td {
background-color: #fff; background-color: #fff;
} }

View File

@ -19,28 +19,33 @@ include('inc/codes.php');
</nav> </nav>
</menu> </menu>
<form method="post" action="/" type="application/x-www-form-urlencoded"> <form method="post" action="/" type="application/x-www-form-urlencoded">
<input type="url" value="" placeholder="URL to check..." name="url"> <input type="url" value="<?php echo $url; ?>" placeholder="URL to check..." name="url">
<button type="submit">Check</button> <button type="submit">Check</button>
</form> </form>
</header> </header>
<main>
<?php <?php
// error message display // error message display
if (isset($error)) if (isset($error))
{ {
echo "
<address>
".$error['message']."
</address>";
} }
?>
<main>
<?php
// if we have a valid request object // if we have a valid request object
if (isset($request) && count($request->path) > 0) if (isset($request) && count($request->path) > 0)
{ {
$steps = count($request->path) - 1; $steps = count($request->path) - 1;
$count = ($steps == 1) ? '1 redirect' : $steps.' redirects'; $count = ($steps == 1) ? 'once' : $steps.' times';
echo " echo "
<article> <article>
<h2>Final destination</h2> <h2>Final destination</h2>
<p>The URL you traced had ".$count." and ended here:</p> <p>Your URL returned a <code><strong>".$request->code."</strong></code> status code and redirected ".$count.":</p>
<p class=\"final\"> <p class=\"final\">
<a href=\"".$request->getFinalRedirect()."\" target=\"blank\"> <a href=\"".$request->getFinalRedirect()."\" target=\"blank\">
".$request->getFinalRedirect()." ".$request->getFinalRedirect()."
@ -61,11 +66,11 @@ if (isset($request) && count($request->path) > 0)
$item = $step['step']; $item = $step['step'];
$url = $step['url']; $url = $step['url'];
$code = $step['code']; $code = $step['code'];
$next = ($step['next']) ? '⥂⇄↩︎' : '✓'; $next = ($step['next']) ? '↩︎' : ((isset($error)) ? 'x' : '✓');
echo " echo "
<tr> <tr>
<td>".$item."</td> <td>".$item."</td>
<td>".$url." <a href=\"".$url."\" target=\"blank\"><b>↗︎</b></a></td> <td>".$url." <a href=\"".$url."\" target=\"blank\"><b><i>↗︎</i></b></a></td>
<td><code>".$code."</code></td> <td><code>".$code."</code></td>
<td>".$next."</td> <td>".$next."</td>
</tr>"; </tr>";
@ -100,8 +105,7 @@ else
<p> <p>
Other curl settings Other curl settings
</p> </p>
</article> </article>";
";
} }
?> ?>
<aside> <aside>