I mean they can type the image URL rather than it being hosted on my own web hosting.
That's not the same as a file upload, and cannot share the same field. Have the users specify one or the other (or both) and deal with them separately. $_FILES will never be populated by an address provided unless explicitly set as such. If a remote location has been provided you need to connect to said file and copy the data across. This can be as easy as using a file_get_contents, but it depends a lot on PHP configurations. Safe bet is always using sockets.