HTML / PHP表单不适用于Live Server

时间:2014-11-15 10:39:30

标签: php forms file-upload

我的表单中包含以下代码:

<form id="addForm" action="php/add-article.php" method="POST" enctype="multipart/form-data">
            <table>
                <tr>    
                    <td class="tableLeft">Article Photo:</td>
                    <td class="tableRight"><input id="formPhoto" class="addTextInput" name="photo" type="file" /></td>
                    <td id="validatePhoto"></td>
                </tr>
                <tr>    
                    <td class="tableLeft">Article Photo Alt:</td>
                    <td class="tableRight"><input id="formAlt" class="addTextInput" name="alt" type="text" /></td>
                    <td id="validateAlt"></td>
                </tr>
                <tr>    
                    <td class="tableLeft">Article Title:</td>
                    <td class="tableRight"><input id="formTitle" class="addTextInput" name="title" type="text" /></td>
                    <td id="validateTitle"></td>
                </tr>
                <tr>
                    <td class="tableLeft">Article Body:</td>
                    <td class="tableRight"><textarea id="formArticle" class="addTextInput" rows="6" name="article"></textarea></td>
                    <td id="validateArticle"></td>
                </tr>
                <tr>
                    <td class="tableLeft"></td>
                    <td id="validateSending" class="tableRight"></td>
                </tr>
                <tr>
                    <td class="tableLeft"></td>
                    <td class="tableRight"><input id="formSubmit" class="addSubmitInput" type="submit" value="Add This" /></td>
                </tr>
            </table>
        </form>

这是一个php文件(add-article.php):

<?php
$time = time();
$id= time().''.mt_rand(1000, 9999);
$year = date("Y");
$path = "../images/$year/";

$title = ucwords($_POST['title']);
$article = $_POST['article'];
$alt = $_POST['alt'];

$extension = end(explode(".", $_FILES["photo"]["name"]));

$added = date("Y-m-d H:i:s");
$views = "0";
?>
<?php
$insert_post_sql = "INSERT INTO articles (id, photo, alt, title, article, added, views) VALUES('$id', '.$extension', '$alt', '$title', '$article', '$added', '$views')";
$insert_post_res = mysqli_query($con, $insert_post_sql);
if(mysqli_affected_rows($con)>0){
move_uploaded_file($_FILES["photo"]["tmp_name"],"$path" . $id . "." . $extension);
header("Location: ../article.php?id=$id");
exit();
}
else{
echo "0";
};
?>

当我在我的本地主机上运行时,一切都工作得很好但是当我在我的实时网站上这样做时它回显了0并说照片,alt,标题和文章都是未定义的。

有谁知道这可能是什么原因?

3 个答案:

答案 0 :(得分:0)

主要原因应该是move_uploaded_file在生产服务器上的指定路径中写入的权限。

答案 1 :(得分:0)

问题来自你的sql语句......它无法在表头上找到照片,alt等...这就是为什么它返回0条记录,因此,如你的程序所要求的那样回显0 ....

答案 2 :(得分:0)

我编辑了表单的最后<tr>

<tr>
   <td class="tableLeft"></td>
   <td class="tableRight"><button id="formSubmit" class="addSubmitInput" type="submit" name="submit">Add This </button></td>
</tr>

现在尝试下面的PHP代码:

<?php
$time = time();
$id = time() . '' . mt_rand(1000, 9999);
$year = date("Y");
$path = "../images/$year/";

if (isset($_POST['submit'])) {
    $title = ucwords($_POST['title']);
    $article = $_POST['article'];
    $alt = $_POST['alt'];

    $extension = end(explode(".", $_FILES["photo"]["name"]));

    $added = date("Y-m-d H:i:s");
    $views = "0";

    $insert_post_sql = "INSERT INTO articles (id, photo, alt, title, article, added, views) VALUES('$id', '.$extension', '$alt', '$title', '$article', '$added', '$views')";
    $insert_post_res = mysqli_query($con, $insert_post_sql);
    if (mysqli_affected_rows($con) > 0) {
        move_uploaded_file($_FILES["photo"]["tmp_name"], "$path" . $id . "." . $extension);
        header("Location: ../article.php?id=$id");
        exit();
    } else {
        echo "0";
    };
}
?>

让我知道它现在是否适合你。问候。