【发布时间】:2015-01-12 17:25:56
【问题描述】:
我的表单中有此代码:
<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、标题和文章是未定义的。
有谁知道这可能是什么原因?
【问题讨论】:
-
DB 或 PHP 变量中未定义的值是什么意思?
-
在服务器错误日志中显示:
PHP Notice: Undefined index: title in ... -
您需要检查表单是否提交?本地服务器会忽略这种错误,但实时服务器不会。为您的按钮命名并检查按钮是否 isset 。如果您需要详细信息,请告诉我。
-
在第一行写入 print_r( $_POST ) 以查看发布的数据。并且在使用前最好检查 isset() 是否存在数组中的变量或索引。
-
@WisdmLabs 谢谢,但那不会打印任何东西 - 你觉得表格还好吗?意思是它看起来像一个应该正常工作的表格吗?我在同一服务器上的另一个网站上使用完全相同的表单和 PHP 脚本,并且该脚本完全可以正常工作
标签: php forms file-upload