"I don't really excpect you to help me with a solution for this,"
...but it would be nice? :-)
You could use an extra table in the database that just holds the client's IP ($HTTP_SERVER_VARS['REMOTE_HOST']) and the banners that were displayed, and when they were displayed:
IP | bannerid | timestamp
Then re-program your banner script to look at this table and see which banners have been displayed to this client in the last X seconds/minutes/hours/days/whatever.
You can then exclude those banners from the choice for the next banner. The choice that is made can then be added to the database so that the next banner script will not choose the same banner.
With carefull pummeling you can do all that in one query, but some sort of locking might be in order due to the high concurrency of the banner requests.
Just remember to clean out the old unwanted data every now and then.
A forum, a FAQ, what else do you need?