0

所以,这就是问题所在。我有一个小型 Flash 应用程序,它将一些变量发送到 php 脚本(通过 POST),然后该 php 脚本将它们发送到 mySQL 数据库。

当我离线测试我的闪存时,这工作正常,我去 phpmyadmin,并且注册表已完成。当我将 swf 上传到在线 html 时,这将停止工作。它不再在数据库中创建另一个注册表。我不知道为什么会这样。

我读了一点,发现了跨域策略,并认为这可能是问题所在。因此,我制作了一个小的 .xml 文件并将其上传到两台服务器(swf 所在的服务器和具有数据库的服务器),但它仍然无法正常工作。

这是我的 crossdomain.xml 文件(以这种方式命名):

 <?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy> 

还有 php(名为 insert.php),它与数据库位于同一台服务器上:

<?php

//connect to the local MySQL
$connect=mysql_connect("localhost", "DBName", "DBPass");

//select your database
mysql_select_db("DBTable");

//query the database
$query="INSERT INTO results(Nome,Email,Idade,Profissao,Pais)
VALUES
('$_POST[nome]','$_POST[email]','$_POST[idade]','$_POST[profissao]','$_POST[pais]')";


//$result=mysql_query($query);

if (!mysql_query($query,$connect))
{
    die('Error: ' . mysql_error());
    echo "InsertOk=NotOk";
}else{
    echo "InsertOk=Ok";
}

mysql_close($connect)
?>

谢谢!马可·罗伯托

4

1 回答 1

2

除了明显的安全漏洞,尝试

"INSERT INTO results(Nome,Email,Idade,Profissao,Pais)
VALUES
('{$_POST['nome']}','{$_POST['email']}','{$_POST['idade']}','{$_POST['profissao']}','{$_POST['pais']}')";

基本上加{}''

编辑:
没关系那部分。注意到它不相关。

我相信您必须调用自己的站点,并使用CURL将 -values 传递$_POST给其他域。

试试这个答案
即使这是针对 javascript,我相信同样的规则也适用于您的 swf 文件。

于 2012-04-16T09:15:45.823 回答