you can use mysql to store html and binary data, just use addslashes() before inserting the data into the database. for the last year i've created every web page and all of my php code using one php script that opens files on my system and saves them back. its just a php version of notepad, the only other thing to do is to escape out of </textarea>. when it pulls the data from the db it replaces </textarea> with <!textarea. then when saved it converts it back.
i use it to store html templates into mysql and use a textarea box to allow the user to edit the template and save it back to the database. when the user goes to create the template i open a default template and show it to the user so they have some starting point and an example of where to start. i place the template in a frame with two links in the top frame, one to edit the page and one to preview it. this way they can make a change, hit save, then click on the preview button to see how it'll look.
the issue is with using the include method you're relying on other users to have headers & footers ready to go and always available. your average user won't know how to create them, will move them on the remote server (instant 404 error), or have them on a server that is unreliable. all of these negatively impact how users see your web page becuase if a header wasn't properly created and your name is on the page they'll think its a problem with your site. with the fopen method you can at least replace any chars that would mess up your formatting and restrict what the template can change.
imho, while the include is nice and easy for you, i'd think it would be better long term to make the header and footer two columns associated with the user in your database. this way when they go to change the header you can give them samples and prevent the user from messing up the page (if the header doesn't have a tag add one for example)