Defining a light or a material involves multiple OpenGL function calls.
You should always remember to set all the necessary options to desired values, or unset them when done.
Lights & materials are good candidates for encapsulating in classes.
Example: