Php单页表单处理问题
(对不起,我的英语不好)Php单页表单处理问题
嗯,我的代码有3个错误。
错误的:
所有的- 首先,它的显示:注意:未定义指数:形式在C:\ XAMPP \ htdocs中\ evantechbd \的index.php上线461,当我运行这种形式。
- 如果有任何错误发现它显示错误消息,好吧,但正确的字段是空的。例如:在这个表单中有4个字段。 a)上传图像,b)选择讨论c)主题和d)消息。假设你上传图片,选择讨论并写出主题,但忘记写信息。然后显示“Message Required”,每个字段都是空的。我不希望空的领域是正确的。
- 成功提交表单后,显示“讨论已提交”。但之后,如果我刷新页面,它将数据发送到数据库。但我没有点击提交按钮。为什么会发生?
这里是我的代码:
<?php
if ($_POST['form'] == "Submit") {
$err = array();
$filed = addslashes($_FILES['file']['tmp_name']);
$img_named = addslashes($_FILES['file']['name']);
$img_type = addslashes($_FILES['file']['type']);
@$imgd = addslashes(file_get_contents($_FILES['file']['tmp_name']));
function getExtension($str)
{
$i = strrpos($str, ".");
if (!$i) {
return "";
}
$l = strlen($str) - $i;
$ext = substr($str, $i + 1, $l);
return $ext;
}
$extension = getExtension($img_named);
$extension = strtolower($extension);
$image_named_uniq = uniqid() . '.' . $extension;
$upload_path_dis = 'user/manage/discussionimg/';
$diss = $_POST['type'];
$sub = $_POST['sub'];
$msg = $_POST['msg'];
$date = "On " . date("F Y h:i:s A");
if (!isset($_SESSION['uname']))
$err[] = "You need to login";
else {
$uname = $_SESSION['uname']; //session username
if (empty($sub) && empty($msg) && empty($filed))
$err[] = "All field required";
else {
if (empty($sub))
$err[] = "Subject Requried";
if (empty($msg))
$err[] = "Message Requried";
if (empty($filed))
$err[] = "SORRY, you have to be upload a image";
}
}
if (!empty($err)) {
foreach ($err as $er) {
echo "<font color=red>$er</font><br/>";
}
}
else {
$sql = mysql_query("INSERT INTO discussion VALUES ('', '$imgd', '$image_named_uniq',
'$diss', '$sub', '$msg', '$uname', '$date') ");
if (!$sql)
echo "Can't submit your discussion" . mysql_error();
if (!move_uploaded_file($_FILES['file']['tmp_name'], $upload_path_dis . $image_named_uniq)) {
die('File Not Uploading');
} else {
echo "Discussion was submitted";
}
}
}
?>
非常感谢您的帮助!
Kanta。
-
试着改变你的第一个,如果条件如下
if (isset($_POST['submit']))
-
现在大多数网站的使用JavaScript使用客户端验证。你可以使用jquery框架来让事情变得更简单。但是,由于您已经在POST事件之后使用验证。您必须按照以下代码将值设置为相关字段。它会设定主题的价值。
<input type="text" name="sub" value="<?php if(isset($_POST["sub"])) echo $_POST["sub"]; ?>" size="46"/>
是,如果你刷新的代码会再次这样做后,并插入。你必须做一些控制。然而这些事情取决于你的数据。
a。在数据库中制作唯一的密钥索引
b。插入前检查现有记录。
c。一旦用户看到成功的消息,几秒钟后将您的页面重定向到同一页面。
谢谢你的建议。 – 2012-01-05 08:55:46
有人请在我的第二点格式化HTML内容。 – 2012-01-05 08:57:04
@ Umme。不用谢。 – 2012-01-05 08:57:52
你真的需要缩进。首先我看到这个'if($ _POST ['form'] ==“Submit”) {',wheres the end brace? – Matt 2012-01-05 08:38:40
您在第261行报告错误 - 但您的代码只有120行 - 哪一行报告错误? – ManseUK 2012-01-05 08:39:11
格式化最好我可以...一个if语句中的函数是合法的吗? – ManseUK 2012-01-05 08:44:23