Код (PHP): <? require "db.php"; $viewer_id = $_POST["id"]; $hash = $_POST["hash"]; $hash1 = $_POST["hash1"]; $totalVotes = $_POST["votes"]; $api_id = "апи ид"; $api_secret = "секрет"; if ($totalVotes <= 0) { exit("req=false&_error=invalidVotes"); } if ($hash1!=md5($viewer_id.'_'.$totalVotes)){ exit('req=false&_error=hash1_error'); } if ($hash!=md5($api_id.'_'.$viewer_id.'_'.$api_secret)){ exit('req=false&_error=hash_error'); }; $res = mysql_query("SELECT diamond,id FROM resources WHERE id=$viewer_id", $db); if (!$res) { exit("req=false&_error=mysql_error&p=0"); } $arr = mysql_fetch_array($res); $dDiamond = $totalVotes * 15; $diamond = (int)$arr["diamond"] + (int) $dDiamond; $req = mysql_query("UPDATE resources SET diamond=$diamond WHERE id=$viewer_id", $db); if (!$req) { exit("req=false&_error=mysql_error&p=1"); } echo "req=true&diamond=$diamond"; ?> И дайте советов *Совет первый: всегда оформляйте PHP-код, оборачивая его в теги [code=php][/code]. Сами посмотрите как стало, и сравните с тем, что было.
Сходу - твой код уязвим для SQL-инъекций. Ты зачем-то переприсваиваешь содержимое $POST переменным, но никак не проверяешь их содержимое. И второе - расширение mysql_ устарело, уже сейчас, вот прям сейчас, переходи на mysqli_. Добавлено спустя 6 минут: Такие вот конструкции тоже не совсем понятны. Ты же в курсе, что это просто будет выброшено на страницу, а не добавлено в адресную строку? Ну и вообще убивать скрипт только потому, что что-то там в БД не отработало, или не те параметры пришли - не кошерно. Пользователь нажмет на кнопочку, забыв поставить где-то галочку, или у тебя что-то глюканет, и ПЫЩ - сайт пропал, осталась только белая страница с непонятной строчкой текста. Пользователи пугаются таких вещей. Не нужно им это выбрасывать в лицо. Старайся обрабатывать все ошибки максимально мягко. В идеале - чтобы максимум, что видел пользователь, если что-то поломалось, это красивая мессага там, где человек ожидает результат своих действий, мол "К сожалению, бла бла бла, сейчас что-то не работает, приносим извинения, бла бла бла, администрация уже разбирается с этим." А саму ошибку пиши в лог. Да, даже если ты проверяешь логи раз в три года, все равно пусть скрипт выдает пользователю, что ты уже в курсе, и что ты уже чинишь. "Ситуация под контролем"(с).
А, ты про эту часть. В данном случае да. Но на будущее так все равно лучше не делать, если речь идет о работе с браузером