I see 2 problems. The first is how you are calling your function:
mkdir(dirname(__FILE__)."/users/"."$username"); // Create Directory
recurse_copy($SourceDir,$username); // Copy files from source directory to target directory
Should be:
// Create Directory
mkdir(dirname(__FILE__)."/users/"."$username");
// Copy files from source directory to target directory; the one you just created
recurse_copy($SourceDir,dirname(__FILE__)."/users/"."$username");
The second is the @mkdir($dst);
in your function. You should change your logic to only create subdirectories of the original destination.