PHP includes are pretty much the standard way, yep.
include "header.php";
echo "Hello World";
include "footer.php";
(See php.net's manual on include, alternatively use require)
Note that your header / footer don't actually have to stay constant on every page, you could do checks for variables set beforehand or checks for what page the user is on.
$page = "contact";
include "header.php";
echo "Contact page stuff";
include "footer.php";
and in header, you could have "contact" in your navigation bolded or something if ($page == 'contact'
. There's certainly other ways to do this (such as javascript or $_SERVER variables), but I use $page for other things so I like doing it that way.