This is a very good question. People in Brazil sometimes make the same mistakes when speaking English because of a small but sill important difference in the use of these verbs. So, let's go:
The verb HAVER means THERE IS/THERE ARE. Example: Há uma pessoa batendo na porta - There is someone knocking on the door. No change in plural: Há duas pontes sobre este rio - There are two bridges over this river.
The verb TER is the one that causes all of this confusion. It means HAVE, bul also THERE IS/THERE ARE. And how do you know when it means each of its meanings? In fact it is easy. When it means THERE IS/THERE ARE, it is impersonal (there is no subject in the sentence). Example: Tem uma pessoa batendo na porta (There is someone knocking on the door) - or, in the plural, Tem duas pontes sobre este rio (There are two bridges over this river). In both sentences there is NO SUBJECT in the sentence. Now compare them:
Tem alguém batendo na porta = Há alguém batendo na porta (no subject in either: "Haver" is impersonal and "ter" with the meaning of "haver" is also impersonal).
Now see the verb TER meaning TO HAVE. In this case, it is NOT impersonal. It does have a subject. For example: Eu tenho um carro (I have a car). Ele tem um ingresso para o show (HE has a ticket for the concert). You got that?
Now, the mistake people sometimes make in Portuguese is to say things like "In my city has a soccer stadium." They should say In my city THERE IS a soccer stadium, but they think of the verb TER as meaning THERE IS, and translate it to its most known meaning, TO HAVE.
I hope it was clear.
Cheers from Brazil
By the way, HAVER is more formal. TER with the meaning of THERE IS/THERE ARE/EXIST is kind of substandard.