2012-06-04 77 views
2

我正在使用$ _SERVER ['HTTP_USER_AGENT']将浏览器和上传文件的用户的操作系统插入我的网站到MySQL表中。我正在使用uploadifive,后者对不支持HTML5的浏览器使用flash(uploadify)。在使用Flash时,操作系统和浏览器不会使用$ _SERVER ['HTTP_USER_AGENT']返回,而是我会看到“Adobe Flash Player 11”。从动作插入变量到MySQL表

我可以从this tutorial看到我可以在uploadify flash文件中添加一些动作来返回浏览器。 ExternalInterface.call返回与$ _SERVER ['HTTP_USER_AGENT']相同的信息,该信息存储在userAgent变量中。我不知道如何将这与插入到MySQL数据库中。我需要一个参数来插入MySQL表中的一个字段。

可能有人有帮助呢?

感谢,

尼克

+0

可以为您细说“我需要插入一个字段在MySQL表中的一个说法”?你真的获得了两个变量吗? ExternalInterface.call只是调用JS,所以你已经得到这个服务器? –

+0

@Sebastian是的,我只需要一行插入到我的MSQL表中,以替换''“。$ _ SERVER ['HTTP_USER_AGENT']。”','。你是说只使用JS来获取用户代理而不是PHP吗?如果是这样的话,我需要用户上传文件的页面上的教程中的js脚本,以及actionscript中的,不是吗? – Nick

+0

我不认为您可以在文件上传呼叫上附加额外的信息,但您可能会回复信息以回应它。您可能需要单独调用以存储服务器信息,并使用上传返回将其绑定到上载。 –

回答

0

您可以通过navigator.userAgent

获得通过JavaScript的userAgent在Uploadify应该有一个js类似以下内容:
在这个例子中服务器上的文件是uploadify .php,所以你可以很容易地通过 像其他网址一样传递值。

$(function() { 
    $('#file_upload').uploadify({ 
     'swf'  : 'uploadify.swf', 
     'uploader' : 'uploadify.php' + '?ua=' + encodeURIComponent(navigator.userAgent) 
    }); 
}); 

所以在uploadify.php您可以通过

$_GET['ua']

访问用户代理现在,你只需要检查哪些输入变量实际上被分配:

$userAgent = ''; 
if (isset($_SERVER['HTTP_USER_AGENT'] && false === strstr($_SERVER['HTTP_USER_AGENT'], 'Adobe Flash Player') { 
    $userAgent = $_SERVER['HTTP_USER_AGENT']; 
} else { 
    $userAgent = $_GET['ua']; 
} 

所以你可以在你的mysql语句中使用$ userAgent。
但是,别忘了与mysql_real_escape_string逃脱它(或使用PDO绑定):

$userAgent = mysql_real_escape_string($userAgent); 
+0

谢谢。虽然尝试上传uploadify时添加了''脚本':'/uploadify_test/uploadify.php'+'?ua ='+ navigator.userAgent',但我收到了一个IO错误。 – Nick

+0

尝试使用'+ encodeURIComponent(navigator.userAgent)'转义userAgent字符串。如果失败,请尝试使用简单值,例如+'1'。如果可行,试着弄清楚navigator.userAgent给你的是什么(通过萤火虫控制台:'alert(navigator.userAgent);'我认为这是flash的问题,在url字符串中有空格/特殊字符的问题。 –

+0

谢谢。我尝试添加encodeURIComponent,但仍然失败。添加+1工作。alert(navigator.userAgent);'返回Mozilla/5.0(Macintosh; Intel Mac OS X 10_7_4)AppleWebKit/534.57.2(KHTML,像Gecko )版本/ 5.1.7 Safari/534.57.2 – Nick