服务器无法获取表单值

时间:2015-10-19 19:24:02

标签: javascript php jquery ajax forms

我有一个表单,我一直在用我的localhost开发这个网站,它工作得很完美。但是当我将文件移动到我的专用服务器时,它在提交表单时不再获取任何值。我把它缩小到两件事。我的服务器在提交的表单上有限制配置,但是我没有使用全局变量来获取值,因此不应该是问题,或者服务器上的php是旧的,不允许我提交我发现的服务器版本的值out是< 5.6。这是我的表单代码:

<form id="company-form" action="scripts/create-library.php" method="post" enctype="multipart/form-data">
<button id="hide-form"><img src="images/minus.png"/></button>
<h3>Add Library Item Form</h3>
<input class="c-name" type="text" name="file-display-name" placeholder="File Display Name"/>
<select class="companies-dd" name="companies">
    <?php
        require_once("../../scripts/connection.php");

        // Select all companies and related data
        $sql = "SELECT company_id, company FROM companies ORDER BY company_id";
        $stmt = $conn->prepare($sql);
        $stmt->execute();
        $stmt->bind_result($c_id, $c);
        while($stmt->fetch()){
            echo "<option value='".$c_id."'>".$c."</option>";
        }
    ?>
</select>
<select class="companies-dd" name="library-cats">
    <?php       
        // Select all companies and related data
        $sql = "SELECT library_category_id, library_category FROM library_categories ORDER BY library_category_id";
        $stmt = $conn->prepare($sql);
        $stmt->execute();
        $stmt->bind_result($l_id, $l);
        while($stmt->fetch()){
            echo "<option value='".$l_id."'>".$l."</option>";
        }
        $conn->close();
    ?>
</select>
<input id="uploadFile" class="image-name" type="text" name="library-file-name" placeholder="No Logo File Chosen" disabled="disabled"/>
<input id="uploadBtn" type="file" name="library-file"/>
<input type="submit" value="Create Item"/>
</form>

点击按钮,通过ajax调用添加页面。

然后我提交表单后运行的脚本是

<?php
session_start();
ini_set('display_errors',1);
error_reporting(-1);

$display = trim($_POST["file-display-name"]);
$company = trim($_POST["companies"]);
$lib_cat = trim($_POST["library-cats"]);

if(empty($display) || empty($company) || empty($lib_cat)){
    $_SESSION["errormsg"] = "Required information is missing please fill out all required fields.";
    header("Location: ../library.php");
}
else{
    $file_name = $_FILES['library-file']['name'];
    $tmp_name = $_FILES['library-file']['tmp_name'];
    $file_size = $_FILES['library-file']['size'];
    $file_type = $_FILES['library-file']['type'];

    $fp = fopen($tmp_name, 'r');
    $content = fread($fp, filesize($tmp_name));
    $content = base64_encode($content);
    fclose($fp);

    if(!get_magic_quotes_gpc()){
        $file_name = addslashes($file_name);    
    }

    if(empty($content)){
        $_SESSION["errormsg"] = "Required information is missing please fill out all required fields (File).";
        header("Location: ../library.php"); 
    }
    else{   
        require_once("connection.php");

        // Insert the logo into the companies photo table
        $sql = "INSERT INTO library_items(filename, mime_type, file_size, file_item, display_name, company_id, library_category_id) VALUES(?,?,?,?,?,?,?)";

        $stmt = $conn->prepare($sql);
        $stmt->bind_param('sssssss', $file_name, $file_type, $file_size, $content, $display, $company, $lib_cat);
        if(!$stmt->execute()){
            $_SESSION["errormsg"] = "Failed to add library item: ".mysqli_error();
            header("Location: ../library.php");
        }
    }
    unset($_SESSION["errormsg"]);

    $_SESSION["successmsg"] = "Library Item successfully added into the database.";
    header("Location: ../library.php");
}

&GT;

它给出了变量的错误,说明它们是表单名称的未定义索引。

我已阅读过其他帖子,但他们都没有帮助过我。有没有我看不到的东西,或者我必须在我的服务器上更改才能使用它?

1 个答案:

答案 0 :(得分:0)

看起来我用来测试上传和显示的两个文件在我下载时就已经损坏了。这导致服务器抛出错误,说文本超出了US-ASCII范围。由于无法显示,因此它没有传输任何表单值。这是我遇到过的最奇怪的错误,我想我也必须开始测试我的pdf错误。