• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 18:36
CEST 00:36
KST 07:36
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL21] Ro8 Preview Pt1: Inheritors14[ASL21] Ro16 Preview Pt2: All Star10Team Liquid Map Contest #22 - The Finalists19[ASL21] Ro16 Preview Pt1: Fresh Flow9[ASL21] Ro24 Preview Pt2: News Flash10
Community News
2026 GSL Season 1 Qualifiers23Maestros of the Game 2 announced92026 GSL Tour plans announced15Weekly Cups (April 6-12): herO doubles, "Villains" prevail1MaNa leaves Team Liquid25
StarCraft 2
General
Team Liquid Map Contest #22 - The Finalists MaNa leaves Team Liquid Maestros of the Game 2 announced 2026 GSL Tour plans announced Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool
Tourneys
2026 GSL Season 1 Qualifiers Sparkling Tuna Cup - Weekly Open Tournament INu's Battles#14 <BO.9 2Matches> GSL CK: More events planned pending crowdfunding RSL Revival: Season 5 - Qualifiers and Main Event
Strategy
Custom Maps
[D]RTS in all its shapes and glory <3 [A] Nemrods 1/4 players [M] (2) Frigid Storage
External Content
The PondCast: SC2 News & Results Mutation # 523 Firewall Mutation # 522 Flip My Base Mutation # 521 Memorable Boss
Brood War
General
ASL21 General Discussion [ASL21] Ro8 Preview Pt1: Inheritors BGH Auto Balance -> http://bghmmr.eu/ FlaSh: This Will Be My Final ASL【ASL S21 Ro.16】 Leta's ASL S21 Ro.16 review
Tourneys
[ASL21] Ro8 Day 1 [Megathread] Daily Proleagues [ASL21] Ro16 Group D Escore Tournament StarCraft Season 2
Strategy
Fighting Spirit mining rates Simple Questions, Simple Answers What's the deal with APM & what's its true value Any training maps people recommend?
Other Games
General Games
Dawn of War IV Stormgate/Frost Giant Megathread Diablo IV Nintendo Switch Thread Total Annihilation Server - TAForever
Dota 2
The Story of Wings Gaming
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread 3D technology/software discussion European Politico-economics QA Mega-thread Canadian Politics Mega-thread Things Aren’t Peaceful in Palestine
Fan Clubs
The IdrA Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece [Req][Books] Good Fantasy/SciFi books Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion McBoner: A hockey love story
World Cup 2022
Tech Support
streaming software Strange computer issues (software) [G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Sexual Health Of Gamers
TrAiDoS
lurker extra damage testi…
StaticNine
Broowar part 2
qwaykee
Funny Nicknames
LUCKY_NOOB
Iranian anarchists: organize…
XenOsky
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1719 users

Life as a Web Developer

Blogs > tofucake
Post a Reply
1 2 3 Next All
tofucake
Profile Blog Joined October 2009
Hyrule19208 Posts
Last Edited: 2010-07-06 21:34:07
July 03 2010 15:33 GMT
#1
So I recently started my new job as a web developer at a company that does auto financing. One of the internal tools they use is a system designed by a guy named Bob. Bob is not good at PHP. Below is an unedited snippet of his code, which is present in almost every single one of about 3000 files (the $message assignment is different on every page, but basically the same). Retarded spacing aside, it's just dumb. Also, the passwords are stored in plaintext.


....and this is just the start. The rest of the code is worse.

$systempath           =  $_SESSION[ 'systempath'         ];
$systemname = $_SESSION[ 'systemname' ];
$systemid = $_SESSION[ 'systemid' ];
$userid = $_SESSION[ 'userid' ];
$userpassword = $_SESSION[ 'userpassword' ];
$username = $_SESSION[ 'username' ];
$systemaccesslevel = $_SESSION[ 'systemaccesslevel' ];
$loginstatus = $_SESSION[ 'loginstatus' ];
$message = $_SESSION[ 'message' ];

$message = 'Perform Loan History Processing';

// set the session variables

$_SESSION[ 'systempath' ] = $systempath;
$_SESSION[ 'systemname' ] = $systemname;
$_SESSION[ 'systemid' ] = $systemid;
$_SESSION[ 'userid' ] = $userid;
$_SESSION[ 'userpassword' ] = $userpassword;
$_SESSION[ 'username' ] = $username;
$_SESSION[ 'systemaccesslevel' ] = $systemaccesslevel;
$_SESSION[ 'loginstatus' ] = $loginstatus;


[Update]
switched quotes to codes. Now you can see the dumb spacing.

*
Liquipediaasante sana squash banana
ilovezil
Profile Blog Joined August 2006
United States4143 Posts
July 03 2010 15:41 GMT
#2
ya, simply terrible!



??
RumZ
Profile Blog Joined March 2010
United States956 Posts
July 03 2010 15:43 GMT
#3
Wow.... that is going to take some time fixing eh?

It could be worse, I am doing some network administration on a server client setup that has not been updated from service pack 0 in 2 years on windows xp, the computers are also running incompatible version of symantec endpoint protection, and not only are they not supported anymore, each client is running a different version of the software.


But, I digress, I think your problem is way more painful if not able to be dealt with systematically.
fabiano
Profile Blog Joined August 2009
Brazil4644 Posts
July 03 2010 15:44 GMT
#4
lol

I guess its a good place to ask, which one is the best programming practice for php: use directly the $_SESSION[] variables or pass its content to a common variable?

eg. use $_SESSION['username'] all over the code or $username = $_SESSION['username'] and use $username for the rest of the code?
"When the geyser died, a probe came out" - SirJolt
Count9
Profile Blog Joined May 2009
China10928 Posts
July 03 2010 15:55 GMT
#5
Well... at least you know he read the PHP in 20 minutes book =) It's usually better when they write horrible code, and then leave you awesome comments with justifications.
tofucake
Profile Blog Joined October 2009
Hyrule19208 Posts
Last Edited: 2010-07-04 13:17:20
July 04 2010 13:09 GMT
#6
You guys haven't see the javascript yet. EVERY SINGLE LINE HAS AN EXPLANATORY COMMENT.

// resets the flag indicating whether the up or down key has been pressed
isKeyUpDownPressed = false;




On July 04 2010 00:41 ilovezil wrote:
ya, simply terrible!



??

He sets some variables, and then without changing any of them (sans $message), he sets them back again. It's a waste of space and processing power.


On July 04 2010 00:44 fabiano wrote:
lol

I guess its a good place to ask, which one is the best programming practice for php: use directly the $_SESSION[] variables or pass its content to a common variable?

eg. use $_SESSION['username'] all over the code or $username = $_SESSION['username'] and use $username for the rest of the code?
Both are acceptable, but only in certain situations. If you're doing processing and only want to display something, using local variables is best. I only use SESSION scope variables for tracking things that rarely or never change (a user ID) or things I don't want to be exposed (redirect after login). Other things he used SESSION scope for are things that should never, ever, for any reason, be stored anyway (plaintext password). Much of what he does could be sped up by using relational databases.
Liquipediaasante sana squash banana
vnlegend
Profile Blog Joined December 2006
United States1389 Posts
July 04 2010 13:56 GMT
#7
I don't really understand what this means but the guy could just be older and not too good with new technology.

** 30 years later **
16-yr old kid looks at tofucake's work: Who the hell wrote this dumb ancient code?

But anyway, looks like a good opportunity to get credit for making improvements.
Marines > everything
thedeadhaji *
Profile Blog Joined January 2006
39489 Posts
July 04 2010 14:17 GMT
#8
btw I like your ID
Count9
Profile Blog Joined May 2009
China10928 Posts
Last Edited: 2010-07-04 14:40:57
July 04 2010 14:39 GMT
#9
Wow, awesome, don't know how I missed this >.> I love thedailywtf, this is just as bad as some of code they got on there. (Of course, I don't have to work with this guy)

Maybe he auto generated some of those javascript things :/
tarpman
Profile Joined February 2009
Canada722 Posts
July 04 2010 16:38 GMT
#10
yeah, this sort of thing smells like copy-paste to me. likely he copy-pasted a bunch of stuff, tweaked it until it sort of worked, and then never touched it again :D
Saving the world, one kilobyte at a time.
QueueQueue
Profile Joined July 2009
Canada1000 Posts
July 04 2010 16:41 GMT
#11
On July 04 2010 22:09 tofucake wrote:
You guys haven't see the javascript yet. EVERY SINGLE LINE HAS AN EXPLANATORY COMMENT.

Show nested quote +
// resets the flag indicating whether the up or down key has been pressed
isKeyUpDownPressed = false;




At least people won't be lost >.<
tofucake
Profile Blog Joined October 2009
Hyrule19208 Posts
July 05 2010 20:54 GMT
#12
I want to submit something to DailyWTF...but I have no clue what to....it's all so bad.
Liquipediaasante sana squash banana
King K. Rool
Profile Blog Joined May 2009
Canada4408 Posts
July 05 2010 22:20 GMT
#13
lololol

Is bob still working there?
haduken
Profile Blog Joined April 2003
Australia8267 Posts
Last Edited: 2010-07-05 22:23:00
July 05 2010 22:22 GMT
#14
I've seen worse. I've worked on a project where the lead developer refused to use any control statements what so ever believing that they have a risk of malfunctioning. So the whole project was done assembly style except... in C#.

I still can't believe why this guy was hired and why he still works there.
Rillanon.au
NoHrt
Profile Blog Joined May 2010
Canada236 Posts
July 05 2010 23:37 GMT
#15
heh,

are you interested in assisting a fellow SC2 with your programming skills ? Im looking for help with a few things.

PM me if interested
l2sc.net | Lead Director | l2sc.tv NoHrt.518
tofucake
Profile Blog Joined October 2009
Hyrule19208 Posts
July 06 2010 00:46 GMT
#16
No...Bob was fired. Actually, about half way through the project he stopped responding to emails and phone calls (he was a contract hire, apparently).

On July 06 2010 07:22 haduken wrote:
I've seen worse. I've worked on a project where the lead developer refused to use any control statements what so ever believing that they have a risk of malfunctioning. So the whole project was done assembly style except... in C#.

I still can't believe why this guy was hired and why he still works there.

That hurts to think about.
Liquipediaasante sana squash banana
michiko
Profile Joined April 2010
United States75 Posts
July 06 2010 15:07 GMT
#17
I like the comment line you showed, rofl.

I mean it is a great practice to comment lines of code often, but E-V-E-R-Y line?

Espcially, ROFL, when the line itself describes what it does

//This resets the is key down flag to not being enabled
isKeyDown=false;

ROFL? What coder couldn't decipher that without the //?
----

And yes, I love that first post you make. In PHP it is very dangerous to store information in the session variables, who knows when it'll get changed or w/e as you navigate through the pages.

It's also a bad idea to store important information in there (like you said, just a session_id variable, user_ids, web cart information).

User names and passwords, any customer information stored in session? Bad News Bears.

Hell, I don't even use the $_[GET], i stick to POST so kiddies can't URL hi-jack my code.

---

Do you have a good source of code for properly storing passwords? I don't use plaintext, but I'm interested to hear your thoughts / methods on how to properly store, check and carry a PW value.

GOOD BLOG! 5/5!

tofucake
Profile Blog Joined October 2009
Hyrule19208 Posts
July 06 2010 15:18 GMT
#18
I'll post the creation bit here, and the whole password shpiel on pastebin. I create and store passwords based on SHA-1, with part of the SHA'd password used as the salt for SHA-ing the password to check it. Win.

function createpasswordhash($user, $raw_pass)
{
// this should ONLY be used to create NEW passwords, as
// the salt is based on the time
$salt = sha1($user . array_sum(explode(' ', microtime())));
$raw = $salt . sha1(sha1($user) . sha1($salt . $raw_pass));

return $raw;
}

The whole thing... http://pastebin.com/0dD00pu0
It makes use of my SQLController class for checking, but that should be easy enough to figure out. I can write up something about that later, though.
Liquipediaasante sana squash banana
michiko
Profile Joined April 2010
United States75 Posts
July 06 2010 15:30 GMT
#19
Awesome, great code. I won't steal - but that for sure helps!

I have one question:

$row = $DB->Fetch($query);

the "->"

I'm not a full-time coder, I do PHP contractually (soon-to-be full time, i hope).


Is that vanilla PHP? Are you using a framework? I recall -> calls being a big part of the Kohana framework.

$DB->Fetch sounds fricken awesome - for sure nicer than raw PHP MySQL queries...
tofucake
Profile Blog Joined October 2009
Hyrule19208 Posts
July 06 2010 15:40 GMT
#20
-> is part of PHP's OOP syntax. Like I said, I'll post my SQLController class later. I don't mind if you use my password stuff, as long as you stick a comment in there attributing it to me.
Liquipediaasante sana squash banana
1 2 3 Next All
Please log in or register to reply.
Live Events Refresh
Next event in 1h 24m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
PiGStarcraft288
ProTech133
SteadfastSC 104
StarCraft: Brood War
Artosis 130
910 38
NaDa 21
Super Smash Bros
AZ_Axe115
PPMD112
Mew2King104
Heroes of the Storm
Liquid`Hasu325
Khaldor163
Other Games
summit1g11097
Grubby2953
C9.Mang0295
Sick242
elazer194
Pyrionflax104
ToD5
Organizations
Dota 2
PGL Dota 2 - Main Stream247
Other Games
BasetradeTV230
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 17 non-featured ]
StarCraft 2
• Hupsaiya 79
• davetesta8
• IndyKCrew
• sooper7s
• AfreecaTV YouTube
• Migwel
• intothetv
• LaughNgamezSOOP
• Kozan
StarCraft: Brood War
• Eskiya23 28
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• masondota21430
Other Games
• imaqtpie1668
• Scarra1475
• Shiphtur295
Upcoming Events
Replay Cast
1h 24m
Replay Cast
10h 24m
Afreeca Starleague
11h 24m
Leta vs YSC
GSL
1d 10h
Rogue vs Percival
Zoun vs Solar
Replay Cast
2 days
GSL
2 days
Cure vs TriGGeR
ByuN vs Bunny
The PondCast
2 days
KCM Race Survival
2 days
Replay Cast
3 days
Replay Cast
3 days
[ Show More ]
Escore
3 days
Replay Cast
4 days
Replay Cast
4 days
IPSL
4 days
Ret vs Art_Of_Turtle
Radley vs TBD
BSL
4 days
Replay Cast
5 days
uThermal 2v2 Circuit
5 days
BSL
5 days
IPSL
5 days
eOnzErG vs TBD
G5 vs Nesh
Replay Cast
6 days
Wardi Open
6 days
Afreeca Starleague
6 days
Jaedong vs Light
Monday Night Weeklies
6 days
Liquipedia Results

Completed

Escore Tournament S2: W4
WardiTV TLMC #16
Nations Cup 2026

Ongoing

BSL Season 22
ASL Season 21
CSL 2026 SPRING (S20)
IPSL Spring 2026
KCM Race Survival 2026 Season 2
StarCraft2 Community Team League 2026 Spring
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026

Upcoming

Escore Tournament S2: W5
KK 2v2 League Season 1
Acropolis #4
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
Maestros of the Game 2
2026 GSL S2
RSL Revival: Season 5
2026 GSL S1
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
IEM Atlanta 2026
Asian Champions League 2026
PGL Astana 2026
BLAST Rivals Spring 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.