Bonjour,
Voici un problème que je n'arrive pas à solutionner :calim2::
J'ai développé une application en FLASH AS3 qui utilise AMFPHP pour échanger des données avec une base Mysql. J'ai installé et paramétré un serveur WAMP (Apache, php5, mysql). Mon .SWF se trouve dans le répertoire WWW/textoweb du serveur. En localhost, tout se passe bien. Mon appli se lance, et discute sans problème via AMFPHP avec la base Mysql. Lorsque en revanche j'ouvre le serveur (Put Online), et que je tente de me connecter à l'adresse IP en question via une autre machine, ma page web s'affiche bien... mais ! Le SWF se charge, propose à l'utilisateur de se logger... et puis plus rien. Pas de communication (aucun RESULT) avec mon script php.
J'ai effectué les tests/actions suivantes :
- un fichier crossdomain.xml à la base du serveur, ainsi que dans le répertoire du swf, dont voici le contenu :
Code:
1
2
3
4
5
6
7
8
9 <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <site-control permitted-cross-domain-policies="all"/> <allow-access-from domain="*" secure="false"/> <allow-access-from domain="62.XX.XX.XX" to-ports="80,843"/> (62.XX...> l'adresse IP externe du serveur, qui est fixe) <allow-access-from domain="localhost" to-ports="80,3306"/> <allow-http-request-headers-from domain="*" headers="*"/> </cross-domain-policy>
- je me connecte à distance via l'IP du serveur sur le 'browser' d'AmfPhp : Résultat probant, mes services sont actifs, et j'obtiens les bons recordset en interrogeant mes classes.
- j'ai lancé, toujours à distance, (http://62.XX.XX.XX/textoweb/php/gateway.php) le fichier Gateway, qui s'exécute correctement.
- sur le routeur (freebox) j'ai ouvert les ports suivants, dirigés vers l'IP interne de la machine (192.168.XX.XX) : le port 80, le port 3306, le port 843.
- modifié les fichiers de configuration de WAMPSERVER :
Je ne trouve pas la solution, je ne comprends pas pourquoi mon swf alors qu'il se lance, que les services amfphp fonctionnent via le browser, ne me retourne aucune valeur lorsqu'il interroge la base depuis un appel distant.Citation:
my.ini --> ajouté [mysqld]
bind-address = 62.XX.XX.XX
port=3306
httpd.conf --> Listen 80,ServerName localhost:80,Allow from all pour chaque Deny précédent.
phpmyadmin.conf ---> <Directory "c:/wamp/apps/phpmyadmin3.3.9/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Allow from all
</Directory>
Pour finir voici un bout de AS3 qui gère la connexion :
Si quelqu'un avait une idée du pourquoi de ce blocage, je suis preneur :)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 private var gateway:String = "http://localhost/textoweb/php/gateway.php"; /* j'ai aussi biensur testé : gateway= "php/gateway.php"; gateway= "http://192.168.XX.XX/textoweb/php/gateway.php"; gateway= "http://62.XX.XX.XX/textoweb/php/gateway.php"; mais en vain à distance...alors qu'ils fonctionnent tous en localhost (!) */ private var connection:NetConnection; private var resLogin,res:Responder; ... resLogin = new Responder(onResult, onFault); connection = new NetConnection; connection.connect(gateway); connection.call("plateforme.login", resLogin,email_input.text,pass_input.text); private function onResult(result:Object):void { ... }
Merci.