everything goes bad after so long. sometimes it is the container, after so long it starts to break down and dissolves into whatever is inside. a lot of times the product is still safe. call the company and ask them about it.
shampoo after a certian time is no longer shampoo.. breaks down into other chemicals and no it is not good to use after they expire. some tests have been done on old shampoo and it was descovered that some shampoos were toxic after a certian time. I would play it safe and trash it. if the shampoo does not have a expire date you can call the MFG and tell then the serial/Run # on the back of the bottle and they will tell you if it is good or not.