I-frame. Списывание голоса у пользователя

Готовые уроки IFrame + ВКонтакте API

I-frame. Списывание голоса у пользователя

Сообщение Влад » 13 сен 2010, 22:14

Понадобится хостинг с поддержкой cURL. Бесплатный хостинг скорее всего не подойдёт.

Создаем файл 1.php
  1.  
  2. <a class="" href="/2.php?
  3. &user_id=<?php echo $_GET['viewer_id'];?>
  4. &auth_key=<?php echo $_GET['auth_key'];?>
  5. "><b>Списать 1 голос</b>  

Создаем 2.php
  1. <?php
  2.    
  3.     $api_id = "7777777777"; //
  4.     $api_key = "qwerty"; //
  5.     $auth_key  = $_GET['auth_key'];  // auth_key из FlashVars приложения
  6.     $user_id = $_GET['user_id']; // id просматривающего приложение
  7.  
  8. // вот это кусок списывания голоса
  9.      $rand = rand();
  10.     $timestamp = time()+300;
  11.     $sig = md5("api_id=".$api_id."method=secure.withdrawVotes". "random=".$rand. "timestamp=".$timestamp. "uid=".$user_id. "v=2.0". "votes=100".$api_key);
  12.     $postvars="api_id=".$api_id."&method=secure.withdrawVotes"."&random=".$rand."&timestamp=".$timestamp."&uid=".$user_id."&v=2.0"."&votes=100"."&sig=".$sig;
  13.     $chp = curl_init('http://api.vkontakte.ru/api.php');
  14.     curl_setopt($chp, CURLOPT_HEADER,0);
  15.     curl_setopt($chp, CURLOPT_RETURNTRANSFER ,1);
  16.     curl_setopt($chp, CURLOPT_POST, 1);
  17.     curl_setopt($chp, CURLOPT_POSTFIELDS,  $postvars);
  18.     $res = curl_exec($chp);
  19.     curl_close($chp);
  20. // не совсем работающая проверка есть ли голос у типа
  21.     $num = strpos($res, "<error_code>502</error_code>");
  22.     if ($num<>"") { echo "no money"; return; }
  23.     $num = strpos($res, "<error>");
  24.     if ($num<>"") { echo "user_id"; return; }
  25.     $num = strpos($res, "<transferred>");
  26.     if ($num=="") { echo "error"; return; }
  27.  
  28. // конец списывания голоса
  29. ?>
  30.  


Всё предельно просто, без библиотек, кодов, 1.php и 2.php должны находиться в одной директории вашего хостинга/сервера, код рабочий только что проверил =)
https://hrefs.ru - сервис крауд маркетинга №1 в 2019 году

За это сообщение автора Влад поблагодарили - 5:
boombast1k, He3HaUKa, KIka_kok, VIP, Volgar
Аватара пользователя
Влад
Модератор
Модератор
 
Автор темы
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24
Благодарил (а): 26 раз.
Поблагодарили: 58 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: I-frame Списывание голоса у пользователя

Сообщение azzzi » 14 сен 2010, 07:29

благодарствую, давай куда кидать на пиво))

п.с а что с проверкой баланса? будет ошибку кидать?
azzzi

 
Сообщения: 164
Зарегистрирован: 13 сен 2010, 19:24
Благодарил (а): 12 раз.
Поблагодарили: 9 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение azzzi » 14 сен 2010, 08:52

затестил, работает.
а как проверить что голос успешно списался в пользу приложения?
azzzi

 
Сообщения: 164
Зарегистрирован: 13 сен 2010, 19:24
Благодарил (а): 12 раз.
Поблагодарили: 9 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение Влад » 14 сен 2010, 10:02

Обновите у себя код

2.php
  1. <?php
  2. ////
  3. //// Author Vlad  © 2010
  4. ////
  5.     $api_id = "ID Приложения";
  6.     $api_key = "Защищённый ключ";
  7.     $auth_key  = $_GET['auth_key'];  // auth_key из FlashVars приложения
  8.     $user_id = $_GET['user_id']; // id просматривающего приложение
  9.  
  10.    
  11.  
  12. // вот это кусок списывания голоса
  13.     $rand = rand();
  14.     $timestamp = time()+300;
  15.     $sig = md5("api_id=".$api_id."method=secure.withdrawVotes". "random=".$rand. "timestamp=".$timestamp. "uid=".$user_id. "v=2.0". "votes=100".$api_key);
  16.     $postvars="api_id=".$api_id."&method=secure.withdrawVotes"."&random=".$rand."&timestamp=".$timestamp."&uid=".$user_id."&v=2.0"."&votes=100"."&sig=".$sig;
  17.     $chp = curl_init('http://api.vkontakte.ru/api.php');
  18.     curl_setopt($chp, CURLOPT_HEADER,0);
  19.     curl_setopt($chp, CURLOPT_RETURNTRANSFER ,1);
  20.     curl_setopt($chp, CURLOPT_POST, 1);
  21.     curl_setopt($chp, CURLOPT_POSTFIELDS,  $postvars);
  22.     $res = curl_exec($chp);
  23.     curl_close($chp);
  24. // проверка есть ли голос у типа
  25.  
  26.     $num = strpos($res, "<error_code>502</error_code>"); // нет денег
  27.     if ($num<>"") { echo "Нет денег"; return; }
  28.    
  29.     $num = strpos($res, "<transferred>");   // другие ошибки
  30.     if ($num=="") { echo "error"; return; }
  31.      
  32.      else {
  33.         // ОЛОЛО
  34.             echo 'Голос списан';
  35.         }
  36. // конец
  37.  
  38. ?>
  39.  

Добавлен отклик на списывание голоса, убран лишний код, всё работает как часы =)
https://hrefs.ru - сервис крауд маркетинга №1 в 2019 году

За это сообщение автора Влад поблагодарил:
VIP
Аватара пользователя
Влад
Модератор
Модератор
 
Автор темы
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24
Благодарил (а): 26 раз.
Поблагодарили: 58 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение azzzi » 14 сен 2010, 10:10

во, то что надо)) 1 пиво заработал))
теперь на 2ое пиво...
условие - если денег нет, надо чтобы прило запросило ввести голоса в прилож, и как голос внесется сразу списать на баланс.
azzzi

 
Сообщения: 164
Зарегистрирован: 13 сен 2010, 19:24
Благодарил (а): 12 раз.
Поблагодарили: 9 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение azzzi » 15 сен 2010, 09:40

что никто не хочет заработать на пиво?))
azzzi

 
Сообщения: 164
Зарегистрирован: 13 сен 2010, 19:24
Благодарил (а): 12 раз.
Поблагодарили: 9 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение Doker » 15 сен 2010, 10:01

Вот как делал я:
Тут пользователь вводит вивер айди, и с этого айди снимаются голоса. После снятия голосов за каждый начисляется +1000 игровой валюты в базу данных. + Ведение статистики. Записываются все удачные и не удачные транзакции. Если успешно то все данные - сколько ввело, сколько добавило вводятся в бд. Если не успешно - в бд записываются вьювер айди и статус ok=0;

Делаем запрос в mysql:
  1. CREATE TABLE IF NOT EXISTS `logs_add_mattery` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `username` text NOT NULL,
  4.   `mattery` text NOT NULL,
  5.   `date` text NOT NULL,
  6.   `ok` text NOT NULL,
  7.   `votes` text NOT NULL,
  8.   PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  10.  

Файл pay.html
  1.  
  2. <div id="content" align="center">
  3.     <table width="668">
  4.     <tr>
  5.  
  6.         <td style="text-align:left" class=b>
  7.    
  8.  
  9. <form action = "http://site.ru/game2/pay.php" method = "post">
  10.  
  11. <center>Нажмите "Настройки" над приложением. Введите нужное кол-во голосов. Заполните поля ниже. Курс: 1 000 игровой валюты - 1 голос. <br /> <br />
  12.  
  13.  
  14. <center><b>Кол-во голосов:</b><br />
  15.  
  16. <input name="vote" id="vote"><br>
  17.  
  18. <b>Ваш айди:</b><br />
  19.  
  20. <input name="viewer_id" id="viewer_id">
  21. <input name="auth_key" id="auth_key"  type="hidden">
  22. <input type="submit" value="Купить">
  23.  
  24. </form>
  25. </td>
  26.     </tr>
  27.    
  28. <table>
  29. </div>
  30.  
  31.  


Файл pay.php
  1. <?
  2. require('VkApi.class.php');
  3.  
  4. $db_host="localhost";      
  5. $db_user="dbuser";      
  6. $db_password="dbpass";      
  7. $db_name = "dbname";
  8. $table_name = "tablename";    
  9.  
  10. mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
  11. mysql_select_db($db_name) or die (mysql_error());
  12. mysql_query("SET NAMES 'utf8'");
  13.  
  14. $app_id = 'апи айди';            // id приложения
  15. $api_secret = 'апи секрет';    // Защищенный ключ СЃ вкладки "Платежи"
  16.  
  17. $auth_key  = $_POST['auth_key'];  // auth_key РёР· FlashVars приложения
  18. $viewer_id = $_POST['viewer_id']; // id просматривающего приложение
  19. $vote = $_POST['vote'];
  20.  
  21. $real_key = md5($app_id."_".$viewer_id."_".$api_secret);
  22.  
  23. //if ($auth_key == $real_key){
  24.  
  25. function get_url($query) {
  26. $ch = curl_init();
  27. curl_setopt($ch, CURLOPT_URL, $query);
  28. curl_setopt($ch, CURLOPT_HEADER, 0);
  29. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  30. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  31. return curl_exec($ch);
  32. curl_close($ch);
  33. }
  34. $api = new VkApiNode($app_id, $api_secret);
  35. $query = $api->getBalance($viewer_id);
  36. $user_balance = new SimpleXMLElement(get_url($query));
  37. if($vote>0)
  38. {
  39. $vote2=$vote*100;
  40. }
  41. if ($user_balance->balance >=$vote2 && $vote>0) {
  42. get_url($query = $api->withdrawVotes($viewer_id, $vote2));
  43. $scores=1000*$vote;
  44. $query2 = 'UPDATE название_таблицы_куда_мы_прибавим за каждый_голос_1000 SET score=score+"'.$scores.'" where `username` ="'.$viewer_id.'"';
  45. $sql2 = @mysql_query($query2);
  46.  
  47. $ok="1";
  48. $query3 = 'INSERT INTO logs_add_mattery  (`username`, `mattery`, `date`,`ok`,`votes`) VALUES ("'.$viewer_id.'","'.$scores.'","'.time().'","'.$ok.'","'.$vote.'")';
  49.     $sql3 = @mysql_query($query3);
  50.  
  51. header("Location: /game.php?page=pay");
  52. exit();
  53. } else
  54. { echo "На вашем счету недостаточно голосов <br />";
  55. echo "На вашем счету: ";
  56. echo "not enough votes" + $user_balance->balance;
  57. echo " голосов";
  58.  
  59.  
  60. $ok2="0";
  61. $query6 = 'INSERT INTO logs_add_mattery  (`username`, `mattery`, `date`,`ok`) VALUES ("'.$viewer_id.'","'.$scores.'","'.time().'","'.$ok2.'")';
  62.     $sql6 = @mysql_query($query6);
  63. }
  64. //} else echo "incorrect sig";
  65. ?>
my icq numbers: 403305362 и 484613

За это сообщение автора Doker поблагодарил:
paduchin
Аватара пользователя
Doker
Модератор
Модератор
 
Сообщения: 1026
Зарегистрирован: 07 май 2010, 18:53
Благодарил (а): 35 раз.
Поблагодарили: 52 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение azzzi » 15 сен 2010, 13:03

не, это же пользователю надо делать лишние движения, лесть в настройки...

правильнее чтобы сразу открывалась форма на ввод голосов showPaymentBox.

есть варианты?
azzzi

 
Сообщения: 164
Зарегистрирован: 13 сен 2010, 19:24
Благодарил (а): 12 раз.
Поблагодарили: 9 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение 112 » 15 сен 2010, 13:14

мб тебе в вакансии?!
Если ты дебил ,оставайся им!
Я бы изменил мир,но Бог не дает исходники!
Изображение
Аватара пользователя
112
Модератор
Модератор
 
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53
Благодарил (а): 51 раз.
Поблагодарили: 80 раз.

Re: I-frame Списывание голоса у пользователя

Сообщение Антон » 18 окт 2010, 11:26

у меня никак не получилось((
Антон

 
Сообщения: 3
Зарегистрирован: 07 окт 2010, 14:06
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Уроки IFrame ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0