【问题标题】:how to show error message if someone left a field blank如果有人将字段留空,如何显示错误消息
【发布时间】:2011-09-05 23:38:40
【问题描述】:

所以我创建了这个页面,用户可以在其中将数据发送到 msql 数据库,但是当他们将字段留空并单击提交时,我希望显示一个错误,提示“您将字段留空”。

这是代码:

<?php
$hostname = ""; 
$db_user = ""; 
$db_password = ""; 
$database = ""; 
$db_table = ""; 


# STOP HERE
####################################################################
# THIS CODE IS USED TO CONNECT TO THE MYSQL DATABASE
$db = mysql_connect($hostname, $db_user, $db_password);
mysql_select_db($database,$db);
?>
<html>
<head>
<title>Add your url to out database</title>
</head>
<body>

<?php
if (isset($_REQUEST['Submit'])) {
# THIS CODE TELL MYSQL TO INSERT THE DATA FROM THE FORM INTO YOUR MYSQL TABLE
$sql = "INSERT INTO $db_table(title,description,url,keywords) values ('".mysql_real_escape_string(stripslashes($_REQUEST['title']))."','".mysql_real_escape_string(stripslashes($_REQUEST['description']))."','".mysql_real_escape_string(stripslashes($_REQUEST['url']))."','".mysql_real_escape_string(stripslashes($_REQUEST['keywords']))."')";
if($result = mysql_query($sql ,$db)) {
echo '<h1>Thank you</h1>Your information has been entered into our database<br><br>';
} else {
echo "ERROR: ".mysql_error();
}
} else {
?>
<h1><center><img src='addalink.png'><center></h1> 

<hr>

<center>
<form method="post" action="">
Name of the song:<br>
<input type="text" name="title"><br>
Artist: <br>
<input type="text" name="description"><br>
Download link: <br>
<font color="#0000FF">http://</font><input type="text" name="url"><br>
<input type="submit" name="Submit" value="Submit">
</form></br>
<?php

}
?>  <center>
</body>
</html> 

【问题讨论】:

  • 表单验证有很多不同的方法。您用“jQuery”标记了您的问题,但您没有提及它。你想要一个 jQuery 解决方案吗?

标签: php javascript jquery mysql validation


【解决方案1】:

首先,使用 CSS 样式来设置表单输入的样式。它更容易阅读,这意味着如果您将来需要更改任何内容,它会很快。

您想要做的是在提交时运行一个脚本,检查必填字段中的值是否符合您的预期。

jQuery 验证插件 - http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 可以满足您的需求。

如果你想自己写,这是一个将验证函数附加到提交按钮的单击事件(或表单的 onSubmit 事件)并检查表单中的数据的过程。 如果数据丢失,则添加一个类来显示这一点。如果数据有效,则删除之前的类。

最后,只有在一切都验证的情况下才返回 true(提交表单)。

请记住,这只是客户端,您仍然需要验证数据服务器端的安全性。

【讨论】:

    【解决方案2】:

    因此,常见的响应是“在前端执行此操作”。如果您发布的任何内容都具有安全隐患,那么我还建议您在后端检查表单数据。

    另外,如果你要经历使用 mysql_real_escape 的过程,不妨使用 mysqli 和参数化查询参见:http://us2.php.net/manual/en/mysqli-stmt.prepare.php

    如果你选择走后端路线,特别是如果你使用 AJAX 来发帖,你可以抛出一个 Exception,它实际上会输出一个 500 错误以及你想要显示的消息,然后使用 Javascript 来处理“错误案例”,因此您可以提供仍然在服务器端进行验证的非常好的验证方法。

    【讨论】:

    • 为了获得适当的验证体验,您真的别无选择 - 您需要在两端都这样做。即时验证对用户来说非常有价值,但是您必须确保您的数据库安全,您不能以任何其他方式进行操作,并且选择不应该是“我采取哪条路线”而是“我首先实施哪条路线” .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多