Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/41: Рейтинг темы: голосов - 41, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 02.02.2015
Сообщений: 3
1
VK API

Проверка на наличие репоста

02.02.2015, 18:51. Показов 8285. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Появилась проблема. Мне нужно сделать проверка на наличие поста у определенного пользователя


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?PHP
  require 'vkapi.class.php';
  
$api_id = ***; //айди твоего приложения
$secret_key = '****'; // секретный ключ
 
  $vk_grand_url = "https://api.vk.com/oauth/access_token?client_id=***&client_secret=****&code=".$_GET['code']."&redirect_uri=http://www.*********.ru/vklogin.php";
   $resp = file_get_contents($vk_grand_url);
  $data = json_decode($resp, true);
  $vk_access_token = $data['access_token'];
  $vk_uid =  $data['user_id'];
  
$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('groups.isMember', array('gid'=>'52983144','uid'=>$vk_uid));
 
 
 
if ($resp['response'] != '0')
{
$s = file_get_contents("https://api.vk.com/method/wall.getReposts?owner_id=-52983144&post_id=34104");
$jsonObj = json_decode($s);
 
foreach($jsonObj->response->items as $object) {
 
$test = $object->{'to_id'};
 
echo $test1;
 
if ($test != $vk_uid) {
 
echo "Есть репост";
} else {
echo "нет репоста";
}
}
echo "$vk_uid";
echo "<h4>Пользователь в группе</h4>";
}
 
 else {
echo "<h4>Таких незнаем</h4>";
echo "$vk_uid";
}
 
?>
Я нахожу id всех людей, которые сделали репост, но не знаю как сделать сравнение $vk_uid c id кто сделал репост. Как это можно реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2015, 18:51
Ответы с готовыми решениями:

Проверка на наличие файлов
Как можно сделать проверку на наличие большого количества файлов при учете того, что есть их...

Проверка на наличие в БД
Всем доброго времени суток!) У меня такое вот задание: В базе данных создать таблицу логинов и...

Проверка на наличие
Пытаюсь реализовать подобие входа на сайт. Возник такой вопрос, есть ли такая функция которая бы...

Проверка на наличие
Так. Есть файл, который находится на sitename.ru/file.txt. Я посылаю $_GET, далее должна быть...

7
1 / 1 / 1
Регистрация: 07.12.2014
Сообщений: 39
03.02.2015, 16:32 2
Лучше через CURL делай запрос.

В ответе запроса можешь найти $vk_uid. Если найдется, то юзер делал репост, иначе нет.
0
0 / 0 / 0
Регистрация: 02.02.2015
Сообщений: 3
03.02.2015, 19:33  [ТС] 3
можно подробнее пожалуйста?
0
1 / 1 / 1
Регистрация: 07.12.2014
Сообщений: 39
03.02.2015, 20:01 4
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?PHP
  require 'vkapi.class.php';
  
$api_id = '****'; //айди твоего приложения
$secret_key = '****'; // секретный ключ
 
  $vk_grand_url = "https://api.vk.com/oauth/access_token?client_id=***&client_secret=****&code=".$_GET['code']."&redirect_uri=http://www.*********.ru/vklogin.php";
   $resp = file_get_contents($vk_grand_url);
  $data = json_decode($resp, true);
  $vk_access_token = $data['access_token'];
  $vk_uid =  $data['user_id'];
  
$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('groups.isMember', array('gid'=>'52983144','uid'=>$vk_uid));
 
//ПОЛУЧАЕМ СПИСОК ТЕХ, КТО СДЕЛАЛ РЕПОСТ
    $url = "https://api.vk.com/method/wall.getReposts?owner_id=-52983144&post_id=34104"; 
            $ch = curl_init(); 
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_NOBODY, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
            $result = curl_exec($ch);
            curl_close($ch);
 
// Проверяем содержание ИД пользователя, в результате ($result ) запроса.            
    if (preg_match($vk_uid, $result)) {
        echo "Юзер СДЕЛАЛ репост";
    } else {
        echo "Юзер НЕ СДЕЛАЛ репост";
    }
 
 
?>
0
0 / 0 / 0
Регистрация: 02.02.2015
Сообщений: 3
03.02.2015, 23:29  [ТС] 5
Появляется вот такое предупреждение
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /home/g/p on line 32

Добавлено через 2 часа 52 минуты
и результат не правильно показывается
0
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
19.02.2015, 21:39 6
Dexter200, в переменной $result что у Вас? Есть данные?
0
0 / 0 / 0
Регистрация: 14.07.2016
Сообщений: 30
16.07.2017, 13:39 7
У меня похожая ситуация, и вроде как должно работать, но не пойму что не так ((

Код
<?PHP
//настройки
 $apiId=6096600; //apiId 
 $repost="https://vk.com/miggame?w=wall-99411677_3894";  //прямая  ссылка на пост
 $money='250'; // оплата репоста (серебро) 
 $vtime=1440; // интервал  репостов  в минутах   (1440 мин=это 24 часа)


$_OPTIMIZATION["title"] = "Репост";
$_OPTIMIZATION["description"] = "Репост проекта";
$_OPTIMIZATION["keywords"] = "Репост нашего проекта";


 # База данных
$db = new db($config->HostDB, $config->UserDB, $config->PassDB, $config->BaseDB);
 
 function Read($url){
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   // откуда пришли на эту страницу
   curl_setopt($ch, CURLOPT_REFERER, $url);
   //запрещаем делать запрос с помощью POST и соответственно разрешаем с помощью GET
   curl_setopt($ch, CURLOPT_POST, 0);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $result = curl_exec($ch);

   curl_close($ch);

   return $result;
}
?>

<div class="silver-bk">
<center>
<br>
Дорогие друзья! Предоставляем Вам возможность сделать репост на свою стену вк и получить <?=$money?> серебра на счет для покупок.  Репост можно делать каждые 24 часа.
<br> Внимание! За удаление репоста будет вычтено 300 серебра со счета для покупок!
<div style=" text-align:center; font-size:24px; color: #39a9fa;  font-weight: bold;   margin: 20px 0 10px;">Репост :</div>

<?PHP
$pieces = explode("?uid=", $_SERVER["REQUEST_URI"]);

if(!empty($pieces[1])){ $piece = explode("&first_name", $pieces[1]); if(!empty($piece[0])){
$uid=$func->IsLogin($piece[0]);

if($uid===false){ echo "<center>Ошибка!</center>"; }else{
$text=Read("https://vk.com/id$uid");
$p = explode(".com/wall", $repost);
$html = new simple_html_dom();
$html->load($text);
$items = $html->find('div[data-copy='.$p[1].']'); 

$stack = array();
foreach ($items as $value) {
array_push($stack, $value->id);
}

$db->Query("SELECT id,post FROM db_repost where status='1' and iduser='$_SESSION[user_id]' ORDER BY id DESC");
	while($rr = $db->FetchArray()){
    $key = array_search($rr[post], $stack); 
	if($key===false){
	$db2->Query("UPDATE db_users_b SET money_b = money_b-'".($money+50)."' WHERE id = '$_SESSION[user_id]'");
	$db2->Query("UPDATE db_repost SET status = '0' WHERE id = '$rr[id]'");
	echo "<center>С вашего счета для покупок было снято ".($money+50)." серебра за удаление репоста!</center>";
	}else{
	 unset($stack[$key]);
	}}
	//print_r($stack);
    //exit;
	if(count($stack)>0){
	$db->Query("SELECT id,post FROM db_repost where status='0' and iduser='$_SESSION[user_id]' limit ".count($stack)."");
	while($rr = $db->FetchArray()){
	$post=array_shift($stack);
	$db2->Query("UPDATE db_repost SET status = '1',post='$post' WHERE id = '$rr[id]'");
	$db2->Query("UPDATE db_users_b SET money_b = money_b+'$money' WHERE id = '$_SESSION[user_id]'");
	echo "<center>На ваш счет для покупок было зачислено $money серебра за восстановление репоста!</center>";
	}
	}
	$db->Query("SELECT stime FROM db_repost where status='1' and iduser='$_SESSION[user_id]' ORDER BY stime DESC");
	if($db->FetchRow()<(time()-($vtime*60))){
	if(count($stack)>0){
	$post=array_shift($stack);
	$db2->Query("UPDATE db_users_b SET money_b = money_b+'$money' WHERE id = '$_SESSION[user_id]'");
	$db2->Query("INSERT INTO db_repost (iduser,post,stime,status) VALUES ('$_SESSION[user_id]', '$post', '".time()."', '1')");
	echo "<center>На ваш счет для покупок было зачислено $money серебра за репост!</center>";
	}else{ echo "<center>Вы не сделали репост записи на данный день!</center>";}
	}else{  echo "<center>За последнии ".($vtime/60)." часа вы уже делали репост записи!</center>";}
	
}}}else{
 ?>  <center>
 Чтобы получить бонус, нужно:<br>
     1. Подписаться на сообщество Bконтакте - <a href="https://vk.com/miggame" target="_blank"><b>кликабельно</b></a><br>
	 2.Сделать репост <a href="<?=$repost?>" target="_blank"><b>данной записи</b></a><br>
	 3. Нажать "войти через вконтакте" для проверки!<br><br></center>

<center>
<!-- Put this div tag to the place, where Auth block will be -->
<div id="vk_auth"></div>
<script type="text/javascript">
VK.Widgets.Auth("vk_auth", {authUrl: 'https://holidaygame.ru/account/repost'});
</script>
</center>
	 
  <? }?>
</div>
По идее после авторизации через приложении должна происходить проверка на наличие поста у данного юзера и данные должны заноситься в базу, но данные не заносятся, хотя пост на стене есть ((
0
0 / 0 / 0
Регистрация: 19.10.2019
Сообщений: 1
19.10.2019, 20:54 8
skroliks, мне пришлось по****ся с твоим куском кода. Могу продать рабочий вариант за 600 рублей.
0
19.10.2019, 20:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2019, 20:54
Помогаю со студенческими работами здесь

Проверка на наличие
Допустим есть колонка &quot;1&quot; с определенными значениями. Как сделать, чтобы при попытке ввода в...

Проверка на наличие изображения
Добрый день. Не могу бы кто нибудь подсказать вот по такому вопросу: У меня есть образец...

Проверка на наличие пользователя
Добрый вечер! Есть корпоративный сайт. Очень простой, состоит всего из двух кнопок. Это поиск...

Проверка на наличие записи!
Всем привет....сломал голову, В Форме Access имеется поле поиска...создал кнопку для печати, и не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru