Yes, those carpets really absorb pet odor, so as 3GSD said, that may be part of the problem. If you can, let that cleaner soak in for a while before scrubbing the spot. We recently replaced some very old and disgusting carpet in our home, and pet stains from a previous owner had soaked all the way in to the sub floor! I was beyond surprised that my dog didn't try marking the spots before the carpet was removed, and especially after the stains were revealed and he spent 3 minutes sniffing each one! A steam cleaning isn't terribly expensive and might help get up that odor, too.
If you can't trust your son to close the door, try putting up a baby gate that has one of those spring loaded doors that will swing closed even if he forgets to push it shut. You can put it up in a hallway or any spot that will effectively block the dogs' access to his room if you can't put it across the door itself.
I would also recommend potty training 101 where you take it back to as if they know nothing about it. Take them out one at a time, on leash, and praise and reward for going in the right spot. Give them more breaks than you think they need, and don't wait for them to tell you they need to go out. Make sure they are supervised at all times, and if you can't supervise they should be crated.