Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Класс для соединения PHP сервера (http://www.flasher.ru/forum/showthread.php?t=210286)

60reg 20.02.2015 19:20

Класс для соединения PHP сервера
 
Добрый вечер..
Пытаюсь написать класс для соединения PHP сервера, но ничего не выходит, даже в голову не лезет
Вот к примеру класс Server.as, как вызвать функцию из php файла method.php??
структура php примерно такая
PHP код:

<?php

 
function getContent() {
        echo 
"TEST...";
    }
?>


Tails 20.02.2015 20:06

Купите книжку по программированию.

caseyryan 21.02.2015 08:38

К примеру вот это на сервере, в файле call.php (он дальше указан в классе as3):

PHP код:

$method $_POST['method']; // получаем название переданного метода

if ($method == "getSomeData") {
    echo 
"reply=someData"



А так выглядит класс в as3, который получает данные с сервера
Код AS3:

package  {
        import flash.events.Event;
        import flash.events.IOErrorEvent;
        import flash.events.SecurityErrorEvent;
        import flash.net.URLLoader;
        import flash.net.URLLoaderDataFormat;
        import flash.net.URLRequest;
        import flash.net.URLRequestMethod;
        import flash.net.URLVariables;
 
        public class Packet {
 
                public static const HOST:                String                = "http://server.com/";
                public static const SCRIPT:                String                = "call.php";
 
                private var _callback:                Function        = null;
 
                /**
                *
                * @param        называние метода, который нужно вызывать на сервере, передается в
                * POST с ключом method
                * @param        callback метод который вызывается после прихода ответа от сервера
                * должен принимать один параметр типа Object
                */

                public function Packet(method:String, callback:Function, params:Object = null) {
                        _callback                                = callback;
                        var loader:        URLLoader        = new URLLoader();
                        loader.addEventListener(Event.COMPLETE, onComplete);
                        loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
                        loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
                        loader.dataFormat                = URLLoaderDataFormat.VARIABLES;
                        var vars:URLVariables        = new URLVariables();
                        vars['method']                        = method;
                        if (params != null) {
                                for (var i:String in params) {
                                        vars[i] = params[i];
                                }
                        }
                        var rand:        String                = "?" + int(Math.random() * 10000);
                        var request:URLRequest        = new URLRequest(Packet.HOST + Packet.SCRIPT + rand);
                        request.method                        = URLRequestMethod.POST;
                        request.data                        = vars;
                        trace(request.data.toString());
                        try {
                                loader.load(request);
                        } catch (e:Error) {
                                trace(e.getStackTrace());
                        }
 
                }
 
                private function onSecurityError(e:SecurityErrorEvent):void {
                        e.target.removeEventListener(Event.COMPLETE, onComplete);
                        e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
                        e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
                }
 
                private function onIOError(e:IOErrorEvent):void {
                        e.target.removeEventListener(Event.COMPLETE, onComplete);
                        e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
                        e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
                        trace("INPUT / OUTPUT ERROR");
                }
 
                private function onComplete(e:Event):void {
                        e.target.removeEventListener(Event.COMPLETE, onComplete);
                        e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
                        e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
                        var data:Object = e.target.data as Object;
                        trace("PACKET DATA:", this, unescape(String(data)));
                        if (_callback != null) {
                                _callback.call(null, data);
                        }
                }
        }
}

Используется так:
Код AS3:

var packet:Packet = new Packet("getSomeData", onReply); // передаем название метода, который нужно вызвать, и обработчик ответа
 
function onReply(params:Object):void {
    trace(params.reply);
}

Собственно, можно примерно так. Естественно это упрощенный вариант, без каких-либо намеков на безопасность

60reg 21.02.2015 19:44

Цитата:

Сообщение от Tails (Сообщение 1179208)
Купите книжку по программированию.

Умник......

fish_r 21.02.2015 23:33

Цитата:

Сообщение от 60reg (Сообщение 1179205)
Вот к примеру класс Server.as, как вызвать функцию из php файла method.php??

Постановка вопроса как минимум странная. Это вам не js, чтобы функции вызывать. Схема работы выглядит примерно так:
- вы посылаете некий запрос на сервер,
- скрипт php расположеный по адресу запроса получает его и уже дальше решает как и кем ( каким именно классом/скриптом ) он будет обработан...

...насчет книжки замечание совершенно справедливое, браться за работу в среде в которой вы совершенно ничего не понимаете очень неправильно. На крайний случай есть форум php.su, и у них там кстати есть ( был ) раздел "Напишите за меня", может вам стоит туда постучаться

alexandrratush 21.02.2015 23:52

60reg, если вы хотите вызывать методы php на стороне клиента, то в этом вам может помочь amfphp

60reg 24.02.2015 13:29

а почему с этим кодом в php не работает???

PHP код:

function getContent() {
        echo 
"TEST...";
    } 


caseyryan 24.02.2015 13:36

А почему это должно работать? Чтобы метод сработал, нужно его вызвать.

60reg 24.02.2015 17:09

так у меня это и было написано в первом посте....
Как её вызвать?
Вот в чем у меня проблема

caseyryan 24.02.2015 18:03

А я пост для кого писал?
Создавая тему на форуме, неплохо бы на ответы внимание обращать
Или вот этот пост для кого?
все ответы уже даны в теме


Часовой пояс GMT +4, время: 04:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.