From d971025a81650c32aae26a4f16b80bb521572a02 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Fri, 7 Feb 2025 14:43:07 -0700 Subject: [PATCH] completed spies assignment. --- palindrome/index.php | 17 ----- palindrome/palindrome.php | 22 ------ palindromed/css/style.css | 84 -------------------- palindromed/img/watercolor.png | Bin 28487 -> 0 bytes palindromed/index.php | 29 ------- palindromed/palindrome.php | 89 --------------------- spies/composer.json | 10 +++ spies/css/.gitkeep | 0 spies/css/styles.css | 136 +++++++++++++++++++++++++++++++++ spies/hidden.php | 71 +++++++++++++++++ spies/img/.gitkeep | 0 spies/includes/fbi.txt | 1 + spies/includes/spies.txt | 1 + spies/index.php | 104 +++++++++++++++++++++++++ spies/js/.gitkeep | 0 spies/js/index.js | 0 16 files changed, 323 insertions(+), 241 deletions(-) delete mode 100644 palindrome/index.php delete mode 100644 palindrome/palindrome.php delete mode 100644 palindromed/css/style.css delete mode 100644 palindromed/img/watercolor.png delete mode 100644 palindromed/index.php delete mode 100644 palindromed/palindrome.php create mode 100644 spies/composer.json create mode 100644 spies/css/.gitkeep create mode 100644 spies/css/styles.css create mode 100644 spies/hidden.php create mode 100644 spies/img/.gitkeep create mode 100644 spies/includes/fbi.txt create mode 100644 spies/includes/spies.txt create mode 100644 spies/index.php create mode 100644 spies/js/.gitkeep create mode 100644 spies/js/index.js diff --git a/palindrome/index.php b/palindrome/index.php deleted file mode 100644 index 74b9c65..0000000 --- a/palindrome/index.php +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Palindrome Tester - - - -

Palindrome Tester

-
- - -
- - - - diff --git a/palindrome/palindrome.php b/palindrome/palindrome.php deleted file mode 100644 index 025d17c..0000000 --- a/palindrome/palindrome.php +++ /dev/null @@ -1,22 +0,0 @@ -Enter something! diff --git a/palindromed/css/style.css b/palindromed/css/style.css deleted file mode 100644 index c03ec3f..0000000 --- a/palindromed/css/style.css +++ /dev/null @@ -1,84 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Ranchers&display=swap'); -* {margin: 0; padding: 0; box-sizing: border-box; font-family: 'Ranchers', cursive; letter-spacing: 5px;} -nav > a:hover -{ - opacity: .5; -} -nav > a -{ - font-size: 75px; - text-decoration: none; - text-align: center; - margin: 20px; - display: block; - transition: opacity 500ms; -} -span.warning, span.message -{ - text-align: center; - padding: 3px 5px 3px 10px; - display: inline-block; - border-radius: 3px; -} -span.warning {background-color: rgba(200,0,0,.5);} -span.message {background-color: rgba(0,200,0,.5);} -span.contrast {color: white;} -body{background-image: url('../img/watercolor.png');} -main -{ - display: flex; - flex-wrap: wrap; - justify-content: space-around; -} -section -{ - flex-basis: 30%; - padding: 20px; - margin: 5px; - border: 1px solid #777; - background-color: mediumpurple; - color: black; - border-radius: 5px; - box-shadow: 0 8px 6px -6px black; -} -h3 -{ - margin-bottom: 15px; -} -li -{ - letter-spacing: 2px; - margin: 5px; - margin-left: 25px; -} - - -input, select -{ - padding: 8px; - margin: 5px auto; - height: 50px; - font-size: 25px; - display: inline-block; -} -select -{ - padding: 0 -} -form h2 -{ - text-align: center; - margin: 10px auto; - font-size: 30px; - margin-bottom: 50px; -} -form -{ - display: block; - min-height: 400px; - margin: 20px auto; - background-color: lavender; - padding: 20px; - border-radius: 8px; -} -p.warning {text-align: center; margin: 20px auto; padding: 10px; background-color: rgba(150,0,0,.5); width: 75%; border-radius: 8px; color: white; font-size: 25px;} \ No newline at end of file diff --git a/palindromed/img/watercolor.png b/palindromed/img/watercolor.png deleted file mode 100644 index 6e6b77f1e350df3c62b0d4ba84fcda6a1ea378ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28487 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 Pz@L(wx-3H4;{N{taX*q4 diff --git a/palindromed/index.php b/palindromed/index.php deleted file mode 100644 index bc09f08..0000000 --- a/palindromed/index.php +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Palindrome Stuff - - - -
-
- - - - Enter Something!

'; - ?> -
-
- - diff --git a/palindromed/palindrome.php b/palindromed/palindrome.php deleted file mode 100644 index 3e02165..0000000 --- a/palindromed/palindrome.php +++ /dev/null @@ -1,89 +0,0 @@ -

There are $wordCounter instances of $sw on this site

"; - } - function output($inputArray, $sw) - { - global $wordCounter; - $return = ""; - foreach($inputArray as $input) - { - if(strpos(strtolower($input), $sw) !== false) $wordCounter++; - - $return .= "

Facts About \"$input\"

"; - $return .= "
    "; - $return .= "
  • Palindrome: ".(isPalindrome($input) ? "TRUE" : "FALSE")."
  • "; - $return .= "
  • Number of Characters: ".strlen($input)."
  • "; - $return .= "
  • Number of Words: ".str_word_count($input)."
  • "; - $return .= "
"; - } - - return $return; - } - - function isPalindrome($phrase) - { - - //removes spaces from phrase - $phrase = str_replace(" ", "", $phrase); - $phrase = str_replace("'", "", $phrase); - $phrase = str_replace("?", "", $phrase); - $phrase = str_replace("/", "", $phrase); - $phrase = str_replace("\\", "", $phrase); - $phrase = str_replace(".", "", $phrase); - $phrase = str_replace(",", "", $phrase); - - //lower case the phrase - $phrase = strtolower($phrase); - - //reverse phrase and assign to variable - $revPhrase = strrev($phrase); - - //compare and return - if($revPhrase == $phrase) return true; - else return false; - } - - if(!empty($_POST['search-word']) && !empty($_POST['pal-count'])) - { - $searchWord = $_POST['search-word']; - $palCount = $_POST['pal-count']; - } - else header('location: .?error=true'); - - if (!isset($_POST['palindromes'])) - { - $displayPageContent .= '
'; - $displayPageContent .= ''; - $displayPageContent .= ''; - for ($x=0;$x<$_POST['pal-count'];$x++) - $displayPageContent .= '
'; - - $displayPageContent .= ''; - $displayPageContent .= '
'; - } - else - { - $inputs = $_POST['palindromes']; - $displayPageContent .= output($inputs, $searchWord); - $displayPageContent .= wordCountOutput($searchWord); - } -?> - - - - Palindrome Stuff - - - - -
- -
- - \ No newline at end of file diff --git a/spies/composer.json b/spies/composer.json new file mode 100644 index 0000000..25e968a --- /dev/null +++ b/spies/composer.json @@ -0,0 +1,10 @@ +{ + "name": "violet/spies", + "type": "project", + "autoload": { + "psr-4": { + "Violet\\Spies\\": "src/" + } + }, + "require": {} +} diff --git a/spies/css/.gitkeep b/spies/css/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/spies/css/styles.css b/spies/css/styles.css new file mode 100644 index 0000000..2d22bb3 --- /dev/null +++ b/spies/css/styles.css @@ -0,0 +1,136 @@ +* { + margin: 0; + padding: 0; +} + +body { + /* Positioning */ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + /* Styling */ + background-color: #bbedbe; +} + +h1 { + /* Positioning */ + width: 100%; + padding: 2vw; + + /* Font */ + font-size: 6vw; + text-align: center; +} + +h3 { + font-size: 4vw; +} + +h5 { + font-size: 2vw; +} + +h1, +h3, +h5, +p, +input { + color: #0e3610; +} + +form { + /* Form Shape */ + width: 60%; + padding: 2.5vw 5vw 2.5vw 5vw; + + /* Positioning */ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.row { + /* Row Shape */ + width: 100%; + display: flex; +} + +input { + /* Input Shape */ + width: 50%; + padding: 1vw; + margin: 1vw; + border: none; + border-radius: 18px; + + /* Styling */ + background-color: #f1fbf2; + + /* Font */ + font-size: 1vw; + font-weight: 400; +} + +button { + /* Button Shape */ + width: 60%; + padding: 1vw; + margin: 1vw; + border: none; + border-radius: 18px; + + /* Font */ + color: white; + font-size: 1vw; + font-weight: 600; + + /* Transition for hover */ + transition-duration: 500ms; + + background-color: #1c6b20; +} + +button:hover { + background-color: #26942D; +} + +table { + border-spacing: 0; + table-layout: fixed; + width: 40%; + border: 1px solid black; +} + +td { + margin: 0; + padding: 1vw; + border: 1px solid black; + text-align: center; +} + +.card { + padding: 2vw; + background-color: gray; + border-radius: 18px; +} + +.error { + color: white; + background-color: red; +} + +.success { + color: white; + background-color: #0e3610; +} + +.reset { + background-color: #cc0000; +} + +.reset:hover { + background-color: #FF0000; +} diff --git a/spies/hidden.php b/spies/hidden.php new file mode 100644 index 0000000..ac1eee6 --- /dev/null +++ b/spies/hidden.php @@ -0,0 +1,71 @@ + 'roast', 'bob' => 'ross'); +$access = false; + +if (isset($_POST['username']) && isset($_POST['password'])) { + $username = $_POST['username']; + $password = $_POST['password']; + if (array_key_exists($username, $users) && $users[$username] === $password) + $access = true; +} + +$file = 'fbi.txt'; + +function fileRead($file) +{ + if (isset($_GET['fbi'])) + $file = 'fbi.txt'; + else + $file = 'spies.txt'; + if ($access) { + echo "reading $file"; + $fs = fopen($file, 'r'); + $string = fread($fs, filesize($file)); + $values = explode('||>><<||', $string); + + echo ''; + foreach ($values as $v) { + list($a, $b) = explode(',', $v); + + echo ' + + + + + '; + } + echo '
' . $a . '' . $b . '
'; + } else + header('Location: .?access=false'); +} +?> + + + + + Spies + + + + + +

View Confidential Information

+ +Access Granted

'; + + echo ' + + + '; + + fileRead($file); +} +?> + + + + + diff --git a/spies/img/.gitkeep b/spies/img/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/spies/includes/fbi.txt b/spies/includes/fbi.txt new file mode 100644 index 0000000..06a9203 --- /dev/null +++ b/spies/includes/fbi.txt @@ -0,0 +1 @@ +skinner,gatekeeper||>><<||csm,alien||>><<||dana,skeptic||>><<||fox,believer \ No newline at end of file diff --git a/spies/includes/spies.txt b/spies/includes/spies.txt new file mode 100644 index 0000000..d67c36a --- /dev/null +++ b/spies/includes/spies.txt @@ -0,0 +1 @@ +dale,the government||>><<||bill,the barber||>><<||hank,the texan||>><<||boomhauer,the marshall \ No newline at end of file diff --git a/spies/index.php b/spies/index.php new file mode 100644 index 0000000..b07f1c2 --- /dev/null +++ b/spies/index.php @@ -0,0 +1,104 @@ + 'roast', + 'bob' => 'ross' +); + +if (isset($_POST['username']) && isset($_POST['password'])) { + $username = $_POST['username']; + $password = $_POST['password']; + if (array_key_exists($username, $users) && $users[$username] === $password) { + $_GET['error'] = false; + $_SESSION['access'] = true; + $_GET['file'] = 'includes/fbi.txt'; + } else { + $_GET['error'] = true; + } +} + +if (isset($_GET['logout'])) { + $_SESSION['access'] = false; + header('Location: .'); +} + +?> + + + + + + Spies + + + + + +

View Confidential Information

+ + + +
+
Access Denied.
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
Access Granted.
+
+
+
+ + + +
+
+ + + + + + +><<||', $string); + + echo ' + + + + + + '; + foreach ($values as $v) { + list($a, $b) = explode(',', $v); + + echo ' + + + + + '; + } + echo '
AgentCodename
' . ucfirst($a) . '' . ucwords($b) . '
'; +} +?> diff --git a/spies/js/.gitkeep b/spies/js/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/spies/js/index.js b/spies/js/index.js new file mode 100644 index 0000000..e69de29