在数据库中保存javascript代码

I've very annoying problem with hosting of well known company however

I've website and at its back-end there is form has textarea field where it should be for google adsense code when i submit it does not respond at all and keep loading

but when i type anything else then adsense ads code it accepted so i noticed it not allowing for html

Form code

<form method=post action="1.php" name="adsense" id="adsense">

The Code : <textarea id="ad" name="ad">Put your code here</textarea>

<input type="submit" name="submit" value="Save">

</form>

1.php Code

<?PHP

include "header.php"; // connect to db

if(isset($_POST[submit])){

$qma = "update webads set
ad = '$_POST[ad]'";

$rma = mysql_query($qma) or die(mysql_error());
echo 'Thanks';

}

?>

The problem when i put adsense ads code it not respond and not save it in database but if i put any text it save it normally

so i've been thinking to addslashes() but it also didn't worked after i made such changes

ad1 = 'addslashes($_POST[ad1])'

here is example of unaccepted google adsense code

<script type="text/javascript">
google_ad_client = "pub-0000000000000000";
google_ad_width = 250;
google_ad_height = 250;
google_ad_format = "250x250_as";
google_ad_type = "text";
google_ad_channel = "0000000000";
google_color_border = "FFFCE1";
google_color_bg = "FFFCE1";
google_color_link = "FFFCE1";
google_color_text = "FFFCE1";
google_color_url = "FFFCE1";
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

One last note

the database field structure is text NOT NULL

CREATE TABLE `webads` (
`id` varchar(50) NOT NULL default '',
`ad` text NOT NULL
PRIMARY KEY  (`id`))";

so any idea how to save it ! but it must be easy to recall it back without being altered

i don't know if it stupid or not but if i didn't got any answer how to do it, been thinking to base_64 encoder before save it then when i call it back will base_64 decode it but this sound last hope i can do

Thanks a lot

You have to use htmlentities before storing data to database. and you can't use function inside string.

$ad = htmlentities($_POST['ad']);

Also when using addslashes you'd better first check if it's automatically enabled by server configuration, not to over-quote strings. See get_magic_quotes_gpc

if(!get_magic_quotes_gpc()) {
    $ad = addslashes($ad);
} 

...

$qma = "update webads set ad = '$ad'";

You need to escape the posted variable for MySQL - the best way to do this is to use PHP's built in function as it will do it correctly for your version of MySQL

$qma = "update webads set ad = '" . mysql_real_escape_string($_POST[ad]) . "'";

Alternately, you can use

$ad = htmlspecialchars($_POST['ad']);

$qma = "update webads set ad = '$ad'";

When I work with MySQL Workbench and I do something "update webads set ad = '$_POST[ad]'" it throws an error because of the safe mode. My SQL query doesn't have an ID. Maybe the safe mode is on?

If you want to bypass it, just add " WHERE ID != -1" but I don't recommend doing this.

Don't forget to sanitise your input.