0

我有一个 Flash 表单,它将用户填写的月度报告发送到 php 文件,该文件将其发送到 MS SQL 数据库。我遇到的这个问题是任何大于 1300 个字符的输入到 Flash 表单中都将不起作用。如果我将文本量减少到 1300 个字符或更少,它会将其发送到 php 和数据库就好了。我的研究表明,一个 flash 变量应该能够处理 65,000 个字符,当我将输出从 flash 跟踪到 php 时,所有数据都在跟踪。但是,它没有被发送到 php。我正在使用 LoadVars 通过 _GET 发送数据。那么这是一个 php 问题,还是一个 flash 问题?我运行了一个 php 信息页面,我的 max_post 设置为 10M,应该足以处理这个负载。我不确定为什么它不能处理大于 1300 个字符的任何内容。

受此影响的变量是 testEvlauation、projects、support 和 programManagement 变量。我需要他们向 php 文件发送至少 8000 个字符。对此的任何帮助将不胜感激。

闪码:

on (release) {
    sendData = new LoadVars();

sendData.contractor = contractor.text;
sendData.name = name.text;
sendData.contractNum = contractNum.text;
sendData.performance = performance.text;
sendData.manager = manager.text;
sendData.activity = activity.text;
sendData.taskNum = taskNum.text;
sendData.date = date.text;
sendData.testEvaluation = testEvaluation.text;
sendData.projects = projects.text;
sendData.support = support.text;
sendData.programManagement = programManagement.text;

sendData.send("Flash/php/MRform.php","_blank","GET");

  trace(sendData.support);

}

PHP代码:

//MS SQL SERVER CONNECTION PERAMETERS  
    $serverName = "lsv-fs-jepac1\JEPAC";  
    $uid = "SQLLogin";
    $pwd = "XXXXXXXXXXXXXXXXXXXXXX";

$connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database"=>"Requests");

/* Connect using MS SQL Credentials. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection Established.\n";
}
else {
    echo "connection could not be established.\n";
    die( print_r( sqlsrv_errors(), true));
}


/* Set up the parameterized query.*/
$name =$_GET['name'];
$contractor =$_GET['contractor'];
$contractnum =$_GET['contractNum'];
$performance =$_GET['performance'];
$manager =$_GET['manager'];
$activity =$_GET['activity'];
$taskNum =$_GET['taskNum'];
$date =$_GET['date'];
$testEvaluation =$_GET['testEvaluation'];
$projects =$_GET['projects'];
$support =$_GET['support'];
$programManagement =$_GET['programManagement'];

  $tsql = "INSERT INTO dbo.MRSup
        (Name,
         Contractor,
         ContractNum,
         Performance,
         Manager,
         Activity,
         TaskNum,
         Date,
         TestEvaluation,
         Projects,
         Support,
         ProgramManagement)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

// Set Parapter Values. 
$params = array($name, $contractor, $contractnum, $performance, $manager, $activity, $taskNum, $date, $testEvaluation, $projects, $support, $programManagement);

$stmt = sqlsrv_query( $conn, $tsql, $params);
if( $stmt ) {
    echo "Row successfully inserted.\n";
}
else {
    echo "Row instertion failed.\n";
    die (print_r( sqlsrv_errors(), true));
} 


//free statements
sqlsrv_free_stmt( $stmt); 

sqlsrv_close ($conn);
4

1 回答 1

5

您必须使用 POST。您可以通过 GET 发送的数据量受到限制。

sendData.send("Flash/php/MRform.php","_blank","POST");

通常完整 URL(包括变量名和值)的限制在 2K 左右,但它因系统而异,因浏览器而异。除了基本需求之外,通过 POST 发送它可以让您发送无限量(当然,在合理范围内)的数据。(唯一的限制是服务器强加的限制和可用资源。)

于 2011-04-06T17:23:44.513 回答