The simple fact is corporation are not people and therefore are not guaranteed the right of freedom of speech. In my opinion campaign contributions should be limited only to people and that amount set to a reasonable maximum for each person. Individuals are already limited to giving set amounts for campaign contributions per candidate. Here's an overview of current campaign contribution limits: http://www.opensecrets.org/overview/limits.php
If only people were allowed to give a campaign contribution and it was set at a reasonable limit then freedom of speech is preserved and corruption is greatly reduced. That last bit is exactly why it will not happen. It's a rather simple and straightforward solution and one inline with the current constitution (minus all the legal shell game of changing standard definitions).