Страница 2 из 2

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 01 дек 2009, 21:29
VIP
В этом ты прав но ты же не администратор сайта!!! Так что уникальность картинок себя оправдывает!!! Я пока учусь!!!

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 01 дек 2009, 21:59
venomich
Ну поэтому и только проверено =)

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 01 дек 2009, 22:05
Deniska
Сразу говорю ВСЁ не проверял! Если найдёте ошибки (а они кажеться тут есть) то будем исправлять вместе! Писал что бы люди поняли основную идею
Ну что же начнем:
1.Создаем компонент TextArea и называем mytext.
Для тех кто незнает где найти компонент ===> Нажимаем Ctrl+F7
2.Создаем компонент Input Text и называем input_chat
Для тех кто незнает где найти компонент ===> Нажимаем Ctrl+F7
3. К пример этот файл .fla называем chat и сохраняем.
4.Создаем документ chat.as и в chat.fla к Class пишем chat.as
5. Пишем внутрь:

Код: Выделить всё

package {
	import flash.display.*;
	import flash.text.*;
	import flash.events.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.events.KeyboardEvent;
	import flash.display.Stage;




	public class chat extends Sprite {
		public function chat() {
			var params:Object = LoaderInfo(this.root.loaderInfo).parameters;

			
			chat();
			setInterval(chat, 3000);

			
			input_chat.addEventListener(KeyboardEvent.KEY_DOWN, keydown);

			function keydown(event:KeyboardEvent) {
				if (event.keyCode==13) {
					var php_loader:URLLoader = new URLLoader();
					var php_request:URLRequest = new URLRequest("путь к chat.php");
					php_request.method = URLRequestMethod.POST;

					var php_vars:URLVariables = new URLVariables();
					php_vars['auth_key']  = params['auth_key'];
					php_vars['viewer_id'] = params['viewer_id'];
					php_vars['message']   = input_chat.text;
					input_chat.text = "";

					php_request.data = php_vars;
					php_loader.load(php_request);
					php_loader.addEventListener(Event.COMPLETE, onServAnsChat);
				}
			}

		}
		
		public function chat() {
			var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
			var php_loader:URLLoader = new URLLoader();
			var php_request:URLRequest = new URLRequest("путь к chat.phpp");
			php_request.method = URLRequestMethod.POST;

			var php_vars:URLVariables = new URLVariables();
			php_vars['auth_key']  = params['auth_key'];
			php_vars['viewer_id'] = params['viewer_id'];

			php_request.data = php_vars;

			php_loader.addEventListener(Event.COMPLETE, onServAnsChat);
			php_loader.load(php_request);
		}
		private function onServAnsChat(e:Event):void {
			var loader:URLLoader = URLLoader(e.target);
			//this.mytext.text = loader.data;
			this.mytext.htmlText = loader.data;
		}
		private function explode(separator:String, string:String) {

			var list = new Array();

			if (separator == null) {
				return false;
			}
			if (string == null) {
				return false;
			}

			var currentStringPosition = 0;
			while (currentStringPosition<string.length) {
				var nextIndex = string.indexOf(separator, currentStringPosition);
				if (nextIndex == -1) {
					break;
				}
				var word = string.slice(currentStringPosition, nextIndex);
				list.push(word);
				currentStringPosition = nextIndex+1;
			}
			if (list.length<1) {
				list.push(string);
			} else {
				list.push(string.slice(currentStringPosition, string.length));
			}
			return list;
		}

	}
}
6. Создаем серверную часть(можно даже в блокноте) называем файл chat.php
7. Код chat.php :

Код: Выделить всё

<?
$app_id 	= id приложения;
$api_secret = "ключ от вкладки Платежи";
$api_public = "секретный ключ";

include(" vkapi_class.php");

$auth_key  = $_POST['auth_key'];
$viewer_id = $_POST['viewer_id'];
$message   = $_POST['message'];

$real_key = md5($app_id . "_" . $viewer_id . "_" . $api_secret);

if ($auth_key == $real_key){
	if ($message){
		$name = name_user($app_id, $api_public, $viewer_id);
		file_put_contents("chat.txt", "<b><u><a href='http://vkontakte.ru/id$viewer_id'>$name</a></u></b>: $message\r", 6666);
	}
	$messages = explode("\r", file_get_contents("chat.txt"));

	$how = count($messages);
	if ($how>20){
		$from = $how - 20;
	} else {
		$from = 0;
	}
	
	for ($i=$from; $i<$how; $i++){
		print "{$messages[$i]}\n";
	}
}

?>
8. Создаем серверную часть(можно даже в блокноте) называем файл vkapi_class.php(этот файл нарыл в гугле в нем я на 100% неуверен)

Код: Выделить всё

<?
function get_app_balance($api_id, $api_secret){
	$request = Array();
	$request[] = "api_id=$api_id";
	$request[] = "method=secure.getAppBalance";
	$request[] = "timestamp=" . (time() + 172814);
	$request[] = "random=" . rand(1000, 100000);
	$request[] = "v=2.0";

	array_multisort($request);

	$sig = "";
	foreach ($request as $r){
		$sig .= $r;
	}

	$sig .= $api_secret;
	$sig = md5($sig);

	$request[] = "sig=$sig";

	$req = "";

	foreach ($request as $r){
		$req .= "$r&";
	}


	$result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
	file_put_contents("log.txt", "$result\r\n\r\n", 6666);
	preg_match('/<balance>(.*?)<\/balance>/', $result, $out);
	return (int)$out[1];
}

function get_user_balance($app_id, $api_secret, $uid){
	$request = Array();
	$request[] = "api_id=$app_id";
	$request[] = "method=secure.getBalance";
	$request[] = "timestamp=" . (time() + 172814);
	$request[] = "random=" . rand(1000, 100000);
	$request[] = "v=2.0";
	$request[] = "uid=$uid";
	

	array_multisort($request);

	$sig = "";
	foreach ($request as $r){
		$sig .= $r;
	}

	$sig .= $api_secret;
	$sig = md5($sig);

	$request[] = "sig=$sig";

	$req = "";

	foreach ($request as $r){
		$req .= "$r&";
	}


	$result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
	file_put_contents("log.txt", "$result\r\n\r\n", 6666);
	preg_match('/<balance>(.*?)<\/balance>/', $result, $out);
	return (int)$out[1];
}

function transfer_app_user($app_id, $api_secret, $uid, $votes){
	$request = Array();
	$request[] = "api_id=$app_id";
	$request[] = "method=secure.addVotes";
	$request[] = "timestamp=" . (time() + 172814);
	$request[] = "random=" . rand(1000, 100000);
	$request[] = "v=2.0";
	$request[] = "uid=$uid";
	$request[] = "votes=$votes";

	array_multisort($request);

	$sig = "";
	foreach ($request as $r){
		$sig .= $r;
	}

	$sig .= $api_secret;
	$sig = md5($sig);

	$request[] = "sig=$sig";

	$req = "";

	foreach ($request as $r){
		$req .= "$r&";
	}


	$result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
	file_put_contents("log.txt", "$result\r\n\r\n", 6666);
	preg_match('/<transferred>(.*?)<\/transferred>/', $result, $out);
	return (int)$out[1];
}

function transfer_user_app($app_id, $api_secret, $uid, $votes){
	$request = Array();
	$request[] = "api_id=$app_id";
	$request[] = "method=secure.withdrawVotes";
	$request[] = "timestamp=" . (time() + 172814);
	$request[] = "random=" . rand(1000, 100000);
	$request[] = "v=2.0";
	$request[] = "uid=$uid";
	$request[] = "votes=$votes";

	array_multisort($request);

	$sig = "";
	foreach ($request as $r){
		$sig .= $r;
	}

	$sig .= $api_secret;
	$sig = md5($sig);

	$request[] = "sig=$sig";

	$req = "";

	foreach ($request as $r){
		$req .= "$r&";
	}


	$result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
	file_put_contents("log.txt", "$result\r\n\r\n", 6666);
	preg_match('/<transferred>(.*?)<\/transferred>/', $result, $out);
	return (int)$out[1];
}

function name_user($app_id, $api_secret, $user_id){
	$request = Array();
	$request[] = "api_id=$app_id";
	$request[] = "method=getProfiles";
	$request[] = "uids=$user_id";
	$request[] = "v=2.0";
	$request[] = "test_mode=1";

	array_multisort($request);

	$sig = "";
	foreach ($request as $r){
		$sig .= $r;
	}

	$sig = "3975390" . $sig . $api_secret;
	
	$sig = md5($sig);

	$request[] = "sig=$sig";

	$req = "";

	foreach ($request as $r){
		$req .= "$r&";
	}

	$result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
	preg_match("/<first_name>(.*?)<\/first_name>/", $result, $out);
	$fname = $out[1];
	preg_match("/<last_name>(.*?)<\/last_name>/", $result, $out);
	$lname = $out[1];
	$name = "$fname $lname";
	//$name = iconv("UTF-8", "WINDOWS-1251", $name);
	return $name;
}
?>
9.Создаем серверную часть(можно даже в блокноте) называем файл crossdomain.xml (в гланую папку сервера)

Код: Выделить всё

<cross-domain-policy>
<allow-access-from domain="*.vkontakte.ru" />
<allow-access-from domain="*.vk.com" />
</cross-domain-policy>
10. Там где залили chat.php добавляем пустой chat.txt и разрешаем всё действия!

Для чего я писал если много ошибок? Затем что бы люди которые больше знают смогли исправить думаю эта статья поможет многим. Надеюсь на людей которые хоть немного исправят.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 01 дек 2009, 23:22
VIP
+++

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 02 дек 2009, 14:36
Александр
Не проверял весь код, но заметил:
9.Создаем серверную часть(можно даже в блокноте) называем файл crossdomain.php(в гланую папку сервера)
Нужно не crossdomain.php, а crossdomain.xml

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 02 дек 2009, 18:53
VIP
всё равно не работает чат, я в поисках идеи потом залью когда будет работать

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 18 янв 2010, 23:59
Rembrant
а вот я сейчас не могу понять, как определить, что пользователь вышел. (вход то понятно - по сообщению или регистрировать в своей бд на своём сервере)

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 19 янв 2010, 00:10
Александр
Rembrant
Делать из приложения запрос к серверу каждую минуту (или меньше). Если от пользователя нет запроса, то пользователь вышел.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Добавлено: 19 янв 2010, 16:55
Rembrant
да, наверно только так, хоть это и не очень хорошо. бо если делать запросы нечасто, будет выводиться устаревшая информация, а если часто, можно и сервер положить)