所以,问题来了。我有一个小型 Flash 应用程序,它将一些变量发送到 php 脚本(通过 POST),然后该 php 脚本将它们发送到 mySQL 数据库。
当我离线测试 Flash 时,这工作正常,我转到 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)
?>
谢谢! 马可·罗伯托
最佳答案
除了明显的安全缺陷外,请尝试
"INSERT INTO results(Nome,Email,Idade,Profissao,Pais)
VALUES
('{$_POST['nome']}','{$_POST['email']}','{$_POST['idade']}','{$_POST['profissao']}','{$_POST['pais']}')";
基本上添加 {}
和 ''
。
编辑:
别介意那部分。注意到它不相关。
我相信您必须调用您自己的网站,并使用 CURL将 $_POST
值传递到其他域。
<强> Try this answer
尽管这是针对 javascript 的,但我相信相同的规则也适用于您的 swf 文件。
关于php - 将 PHP 插入无法在线工作的 mySQL 数据库(通过 Flash 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10171405/