What is the difference between SNP and STR?
The solution is in the name!

SNP: single nucleotide polymorphism

The name tells us that it is a change that affect one single nucleotide and that there can be multiple of these (polymorphism could be rewritten as multiple forms)

From the SNP Wikipedia page:


  [A SNP] is a DNA sequence variation occurring when a single nucleotide — A, T, C or G — in the genome (or other shared sequence) differs between members of a biological species or paired chromosomes in a human.


So, for instance, if you take 8 individuals and sequence their gene XYZ, you may find, at a certain locus (=position) on the gene:

Individual 1: AAGGTG C AGCAGTC
Individual 2: AAGGTG T AGCAGTC
Individual 3: AAGGTG T AGCAGTC
Individual 4: AAGGTG T AGCAGTC
Individual 5: AAGGTG C AGCAGTC
Individual 6: AAGGTG C AGCAGTC
Individual 7: AAGGTG T AGCAGTC
Individual 8: AAGGTG T AGCAGTC  

The position highlighted in bold is a SNP. In this case we only have either C or T (and this produces 2 different alleles for gene XYZ).

This page from University of Utah has a very clear animation on SNPs.

STR: short tandem repeat

These are short repeated sequences. They're in tandem, that is, one after the other.

STR consist of a few (2-6) nucleotides that are repeated several (5-100) times.
For instance this page from the University of Arizona gives the example of D7S280, one STR with sequence (GATA)n (that is, GATA repeated n times)

  1 aatttttgta ttttttttag agacggggtt tcaccatgtt ggtcaggctg actatggagt
 61 tattttaagg ttaatatata taaagggtat gatagaacac ttgtcatagt ttagaacgaa
121 ctaacgatag atagatagat agatagatag atagatagat agatagatag atagacagat
181 tgatagtttt tttttatctc actaaatagt ctatagtaaa catttaatta ccaatatttg
241 gtgcaattct gtcaatgagg ataaatgtgg aatcgttata attcttaaga atatatattc
301 cctctgagtt tttgatacct cagattttaa ggcc


In this case, variations between individuals reside in the number of times the sequence is repeated.