Where is uploaddir relative from? The root? You don't specify it here:
$uploaddir = 'upload/';
Maybe you should be more explicit?
$uploaddir = "/upload/";
Or
$uploaddir = "/" . $pathToTheBase" . "/upload/";
Or better yet:
$_SERVER['DOCUMENT_ROOT'] . $pathToTheBase . "/upload/".
After you echo:
$uploadfile = $uploaddir.$_FILES['userfile']['name'];
echo $uploadfile;
If all the above is correct, then check to see if the $_FILES variable contains the right filename. Also, does your directory exist?
if (move_uploaded_file($_FILES['userfile']['tmp_name'
], $uploadfile))