yield WWW doesn't work

Hi to everyone,
I have a simple code that creates a new account on a database. The problem is that yield doesn’t work and I really can’t understand why.
I attach my code below:

 /// <summary>
        /// This method prepares the informations to create a new account on database and starts a coroutine that adds the new account
        /// </summary>
        /// <returns></returns>
        public void CreateNewAccountOnDatabase()
        {            
            ....

            StartCoroutine(DBManager.Istance.CreateNewAccountOnDatabase(name, surname, identification, email, password));
        } // End CreateNewAccountOnDatabase

/// <summary>
        /// This method creates a new account on database
        /// </summary>
        /// <returns></returns>
        public IEnumerator CreateNewAccountOnDatabase(string name, string surname, string identification, string email, string password)
        {
            WWWForm form = new WWWForm();
            form.AddField("Name", name);
            form.AddField("Surname", surname);
            form.AddField("Identification", identification);
            form.AddField("Email", email);
            form.AddField("Password", password);
            WWW createAccountWWW = new WWW(this.url, form);
            // Waiting for php to send something back to Unity
            yield return createAccountWWW;
            if (createAccountWWW.error != null)
            {
                Debug.Log("Cannot Connect to Account Creation: " + createAccountWWW.error); // TODO
            }
            else
            {
                string createAccountReturn = createAccountWWW.text;
                if (string.Compare(createAccountReturn, "Success") == 0)
                {
                    Debug.Log("Success: Account Created"); // TODO
                }
            }
        } // End CreateNewAccountOnDatabase

Everything works fine…but the only problem is that after

yield return createAccountWWW;

the program skips all remaining code and ends the method;

Thanks for all your help!!!

you need to put your WWWFrom form = new WWWForm(); and other form.addfields inside
public void CreateNewAccountOnDatabase() and just change the arguments to just the forms like this.

    public void Login(string email, string password, string macAddress)
    {

        //encode
        byte[] bytesToEncode = Encoding.UTF8.GetBytes(email + ":" + password);
        string encodedText = Convert.ToBase64String(bytesToEncode);

        //form
        WWWForm form = new WWWForm();
        form.AddField("macAddress", macAddress);

        StartCoroutine(LoginCoroutine(form,encodedText));
    }

IEnumerator LoginCoroutine(WWWForm form, string encodedText)
{
    using (UnityWebRequest www = UnityWebRequest.Post(globalURL + UrlforAuthentication, form))
    {
        www.SetRequestHeader("Authorization", "Basic " + encodedText);
        yield return www.Send();

        if (www.isError)
        {
            Debug.Log(www.error);
        }
        else
        {
            userFunction.UserVoid(www.downloadHandler.text);
        }
    }
}

This script is my log in script that has a server database.