{"id":13708960,"url":"https://github.com/jakejarvis/jbb","last_synced_at":"2025-05-06T15:31:39.313Z","repository":{"id":146831786,"uuid":"153656047","full_name":"jakejarvis/jbb","owner":"jakejarvis","description":"A PHP bulletin board creatively titled Jake's Bulletin Board, circa 2003. (My first full coding project ever – complete with bugs and security holes and horrendous style!)","archived":true,"fork":false,"pushed_at":"2019-09-19T05:38:06.000Z","size":694,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-23T04:33:22.409Z","etag":null,"topics":["first-project","hello-world","like-a-fine-wine","php","vintage"],"latest_commit_sha":null,"homepage":"https://jarv.is/notes/my-first-code/","language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakejarvis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-18T16:40:52.000Z","updated_at":"2024-08-03T00:02:45.120Z","dependencies_parsed_at":"2023-07-09T09:16:22.357Z","dependency_job_id":null,"html_url":"https://github.com/jakejarvis/jbb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakejarvis%2Fjbb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakejarvis%2Fjbb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakejarvis%2Fjbb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakejarvis%2Fjbb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakejarvis","download_url":"https://codeload.github.com/jakejarvis/jbb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224513151,"owners_count":17323752,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["first-project","hello-world","like-a-fine-wine","php","vintage"],"created_at":"2024-08-02T23:00:34.550Z","updated_at":"2024-11-13T19:30:40.586Z","avatar_url":"https://github.com/jakejarvis.png","language":"PHP","funding_links":[],"categories":["First PHP"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"images/logo.gif\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"images/readme-badges.png\" width=\"540\"\u003e\u003c/p\u003e\n\nA PHP4-based bulletin board creatively titled **Jake's Bulletin Board**. This was my first-ever full programming creation back in 2003 (if you couldn't tell) saved for posterity after being rescued from a dust-caked floppy disk.\n\n## Usage\n\nIf you're bored on a rainy day, potential activities could include:\n\n- Easiest code review you'll do in your entire career. (Or hardest, depending on your attitude.)\n- Hacking speed-runs to boost your infosec self-esteem.\n- Beating the [world record for longest laugh](http://goldenbookofrecords.com/longest-laughter/), currently held by Mr. Belachew Girma of Ethiopia with 3 hours and 6 minutes.\n- Actually getting this to run in 2019.\n\n\n## Embarrassing Highlights\n\nWho cares if somebody wants to delete a post with the ID \"`*`\" no matter the author? ([delete_reply_submit.php](https://github.com/jakejarvis/jbb/blob/87b606797414b2fe563af85e269566fc5e076cc5/delete_reply_submit.php#L9))\n\n```php\n  $query2 = \"DELETE FROM jbb_replies\nWHERE replyID ='$replyID'\";\n$result2 = mysql_query ($query2)\n        or die ($query2); \n```\n\nSessions based on storing an auto-incremented user ID in a cookie. ([login_submit.php](https://github.com/jakejarvis/jbb/blob/87b606797414b2fe563af85e269566fc5e076cc5/login_submit.php#L28))\n\n```php\nsession_id($user-\u003euserID);\nsession_start();\n$_SESSION[\"ck_userID\"] = $user-\u003euserID;\n$_SESSION[\"ck_username\"] = $user-\u003eusername;\n$_SESSION[\"ck_groupID\"] = $user-\u003egroupID;\n```\n\nViewing a \"private\" message based solely on a sequential message ID. ([pm_view.php](https://github.com/jakejarvis/jbb/blob/87b606797414b2fe563af85e269566fc5e076cc5/pm_view.php#L13))\n\n```php\n$query1 = \"SELECT * FROM jbb_pm WHERE pmID = '$pmID'\";\n```\n\nIncredibly ambitious emoticon and [BBCode](https://en.wikipedia.org/wiki/BBCode) support. I honestly can't begin to explain this logic. ([functions.php](https://github.com/jakejarvis/jbb/blob/87b606797414b2fe563af85e269566fc5e076cc5/functions.php#L18))\n\n```php\n$replacement = '\u003cIMG SRC=images/emoticons/smile.gif\u003e';\n$replacement2 = '\u003cIMG SRC=images/emoticons/bigsmile.gif\u003e';\n$replacement3 = '\u003cIMG SRC=images/emoticons/frown.gif\u003e';\n$replacement4 = '\u003cIMG SRC=images/emoticons/crying.gif\u003e';\n$replacement5 = '\u003cIMG SRC=images/emoticons/blush.gif\u003e';\n// ... yada yada yada ...\n$replacement21 = '\u003ca href=\"';\n$replacement22 = '\"\u003e';\n$replacement23 = '\u003c/a\u003e';\n$replacement24 = '\u003cFONT COLOR=\"';\n$replacement25 = '\u003c/FONT\u003e';\n$replacement26 = '\u003cFONT SIZE=\"';\n$replacement27 = '\u003cBR\u003e';\n\n$topicval = str_replace(':)', $replacement, $topicval);\n$topicval = str_replace(':D', $replacement2, $topicval);\n$topicval = str_replace(':(', $replacement3, $topicval);\n$topicval = str_replace(':crying:', $replacement4, $topicval);\n$topicval = str_replace(':blush:', $replacement5, $topicval);\n// you get the point...\n$topicval = str_replace('[URL=', $replacement21, $topicval);\n$topicval = str_replace(':]', $replacement22, $topicval);\n$topicval = str_replace('[/URL]', $replacement23, $topicval);\n$topicval = str_replace('[FONT COLOR=', $replacement24, $topicval);\n$topicval = str_replace('[/FONT]', $replacement25, $topicval);\n$topicval = str_replace('[FONT SIZE=', $replacement26, $topicval);\n$topicval = str_replace('\n', $replacement27, $topicval);\n\n// repeated five more times throught the code...\n```\n\nSaving new passwords as plaintext — probably the least problematic problem. ([register_submit.php](https://github.com/jakejarvis/jbb/blob/87b606797414b2fe563af85e269566fc5e076cc5/register_submit.php#L10))\n\n```php\n$query = \"INSERT INTO jbb_users (username, password, email, avatar) VALUES ('$username','$password','$email','images/avatars/noavatar.gif')\";\n```\n\nI guess I gave up on counting `$query`s by ones...  ([functions.php](https://github.com/jakejarvis/jbb/blob/87b606797414b2fe563af85e269566fc5e076cc5/functions.php#L231))\n\n```php\nwhile ($topic = mysql_fetch_object($result30)) {\n    $query40 = \"SELECT * FROM jbb_users WHERE userID = '$topic-\u003euserID'\";\n    $result20 = mysql_query($query40)\n        or die ($query40);\n\t\t\n    $query50 = \"SELECT * FROM jbb_replies WHERE replyID = '$replyID'\";\n    $result50 = mysql_query($query50)\n        or die ($query50);\n\n    $reply = mysql_fetch_object($result50);\n\n    $query60 = \"SELECT * FROM jbb_users WHERE userID = '$reply-\u003euserID'\";\n    $result60 = mysql_query($query60)\n        or die ($query60);\n\n    $user = mysql_fetch_object($result60);\n\n    $query7 = \"SELECT * FROM jbb_topics WHERE userID = '$reply-\u003euserID'\";\n    $result7 = mysql_query($query7)\n        or die ($query7);\n\n    $query8 = \"SELECT * FROM jbb_replies WHERE userID = '$reply-\u003euserID'\";\n    $result8 = mysql_query($query8)\n        or die ($query8);\n\n    $usertopics = mysql_numrows($result7);\n\n    $userreplies = mysql_numrows($result8);\n}\n```\n\n\n## Screenshots\n\n![Installation](images/readme-screen1.png)\n\n![Home](images/readme-screen2.png)\n\n\n## License\n\nDo whatever the hell you want, it's not gonna work. 😉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakejarvis%2Fjbb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakejarvis%2Fjbb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakejarvis%2Fjbb/lists"}