所以我的表格看起来如此。
<form action="thanks.php" method="post" class="niceform" name="myform">
<table>
<tr>
<td><label for="company_name">Company Name</label></td>
<td><input type="text" name="company" value="" size="38" /></td>
</tr>
// and so on
我有javascript验证。但问题是,当我从localhost / mysite / form / thanks.php直接转到thanks.php时,我看到phpmyadmin时会插入一个空行。 Thanks.php看起来就是这样。
<?php
// open the connection
$conn = mysql_connect("localhost", "root", "password");
// pick the database to use
mysql_select_db("company_register",$conn);
$sql = "INSERT INTO `tblsignups` VALUES ('NULL', '$_POST[company]', '$_POST[email]', '$_POST[phone]', '$_POST[address]', '$_POST[comments]', '$_POST[contact_person]')";
$result = mysql_query($sql, $conn) or die(mysql_error());
mysql_close($conn);
?>
// And I have a thank you msg I display
我如何检查是否有人应该直接转到thanks.php我告诉他们先填写表格,不要在数据库上放任何东西
答案 0 :(得分:2)
您需要检查表单是否已提交。你可能想要这样的东西:
<?php
if ($_POST)
{
// open the connection
$conn = mysql_connect("localhost", "root", "password");
// pick the database to use
mysql_select_db("company_register",$conn);
$sql = "INSERT INTO `tblsignups` VALUES ('NULL', '$_POST[company]', '$_POST[email]', '$_POST[phone]', '$_POST[address]', '$_POST[comments]', '$_POST[contact_person]')";
$result = mysql_query($sql, $conn) or die(mysql_error());
mysql_close($conn);
}
?>
答案 1 :(得分:1)
你可以全部检查
if(empty($_POST['company']))
{
//redirect or show error msg that its required
}
else
{
//do what you want
}
因此对所有人而言。
如果您已发布表单$ _POST将始终为true,所以当您必须检查空值时,您必须为所有人检查这样。
if(empty($_POST['company']) || empty($_POST['email']) || empty($_POST['user']))
等等。
答案 2 :(得分:1)
检查请求中是否提供了公司名称,且该名称是否为空。如果没有公司名称,可能会将用户重定向到表单,可能会显示错误消息。
表格:
<form action="thanks.php" method="post" class="niceform" name="myform">
<?php if($_GET['error']): ?>
<span class="error">Please fill the required fields!</span>
<?php endif; ?>
<table>
<tr>
<td><label for="company_name">Company Name</label></td>
<td><input type="text" name="company" value="" size="38" /></td>
</tr>
Thanks.php:
<?php
// Is company specified?
if(!isset($_POST['company']) || $_POST['company'] == '') {
header('Location: form.php?error=1');
exit();
}
// open the connection
$conn = mysql_connect("localhost", "root", "password");
// pick the database to use
mysql_select_db("company_register",$conn);
$sql = "INSERT INTO `tblsignups` VALUES ('NULL', '$_POST[company]', '$_POST[email]', '$_POST[phone]', '$_POST[address]', '$_POST[comments]', '$_POST[contact_person]')";
$result = mysql_query($sql, $conn) or die(mysql_error());
mysql_close($conn);
?>
答案 3 :(得分:1)
检查是否有$ _POST是不够的。在帖子后重定向 - 否则如果你添加一行,并刷新页面,你最终将在数据库中有2条记录。所以发布到process.php,从process.php重定向到thanks.php。另外,在PHP中验证,而不是在JavaScript中验证
答案 4 :(得分:1)
这是一个草图示例
收到POST数据后,您必须检查并提出错误标志
如果有一些错误显示表格而不是保存它
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
$err = array();
//performing all validations and raising corresponding errors
if (empty($_POST['name']) $err[] = "Username field is required";
if (empty($_POST['text']) $err[] = "Comments field is required";
if (!$err) {
// if no errors - saving data
// and then redirect:
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
// all field values should be escaped according to HTML standard
foreach ($_POST as $key => $val) {
$form[$key] = htmlspecialchars($val);
}
} else {
$form['name'] = $form['comments'] = '';
}
include 'form.tpl.php';
?>
并修改您的表单以便显示错误
<? if ($err): ?>
<? foreach($err as $e): ?>
<div class="err"><?=$e?></div>
<? endforeach ?>
<? endif ?>
<form>
<input type="text" name="name" value="<?=$form['name']?>">
<textarea name="comments"><?=$form['comments']?></textarea>
<input type="submit">
</form>
答案 5 :(得分:1)
请检查以下代码
<?php
// open the connection
$conn = mysql_connect("localhost", "root", "password");
// pick the database to use
mysql_select_db("company_register",$conn);
if($_POST[company]!="" or $_POST[email]!="" or $_POST[phone]!="" or $_POST[address]!="" ) {
$sql = "INSERT INTO `tblsignups` VALUES ('NULL', '$_POST[company]', '$_POST[email]', '$_POST[phone]', '$_POST[address]', '$_POST[comments]', '$_POST[contact_person]')";
$result = mysql_query($sql, $conn) or die(mysql_error());
} else {
echo "Please fill all fields ";
}
mysql_close($conn);
答案 6 :(得分:0)
if(count($_POST)>0){
// your code...
}
else{
// else code...
}
答案 7 :(得分:0)
首先:不要在表单中使用表格。 (我很抱歉无法抗拒,但这会伤到我的眼睛)
关于主题:始终记得在前端和后端都进行验证。
所以在这种情况下,为你的php文件添加一些验证,如:
<?php
if(empty($_POST['company']))
{
// show validation message
} else {
// open the connection
$conn = mysql_connect("localhost", "root", "password");
// pick the database to use
mysql_select_db("company_register",$conn);
$sql = "INSERT INTO `tblsignups` VALUES ('NULL', '$_POST[company]', '$_POST[email]', '$_POST[phone]', '$_POST[address]', '$_POST[comments]', '$_POST[contact_person]')";
$result = mysql_query($sql, $conn) or die(mysql_error());
mysql_close($conn);
}
?>
答案 8 :(得分:-1)
只需检查是否存在所有必需的表单字段。如果它们不存在,请重定向到您的表单页面。
if(!array_key_exists("company", $_POST){
header('Location: http://your.form.page.html');
}