【问题标题】:validate user input fields against MYSQL针对 MYSQL 验证用户输入字段
【发布时间】:2014-10-21 15:23:56
【问题描述】:

我对 mysql 很陌生。如何根据存储在数据库中的值验证用户输入的电子邮件值。用户在 html5 输入字段中输入他的电子邮件,它将使用存储在数据库中的值进行验证并相应地执行成功操作。成功导航到下一个屏幕,失败时会弹出一个弹出窗口。附件是场景的屏幕截图。 [图片] (http://s10.postimg.org/5vvlp200p/user_validation.png) 请推荐

编辑1:

<!DOCTYPE html>
<html>
<body>
<form action="demo_form.asp" autocomplete="on">
E-mail: <input type="email" name="email" autocomplete="off"><br>
<input type="submit">
</form>
</body> 
</html>

编辑 2:

<?php
try
{
    $connection = mysql_connect("localhost:3306","root","b");
    mysql_select_db("MobileBlog", $connection);


    mysql_query(" // suggest here to validate against emails in db");
    mysql_close($connection);
    echo "SUCCESS";
}
catch(Exception $e)
{
    echo $e->getMessage();
    // Note: Log the error or something
}
?>

编辑 3 这是我的新 HTML5 PHP 代码,但仍然失败。

<!DOCTYPE html>
<html>
<body>
<form action="checkform.php" method="post">
E-mail: <input type="email" name="email" autocomplete="off"><br>
<input type="submit">
</form>
</body> 
</html>

PHP 代码

<?php
try
{
$connection = mysql_connect("localhost:3306","root","b");
mysql_select_db("mobileblog", $connection);  
$emailid = $_POST['email']; 
echo $emailid;
$sql = "SELECT Name from table WHERE email=" . $_POST['email'];
$result = mysql_query($sql);
echo $result;
if(!$result) { echo "<p class='error'>Error: No such email address</p>"; }
// note that the if is asking if there is no result
else {
while ($row = mysql_fetch_assoc($result)) { 
echo "<p class='success'>Welcome " . $row['Name'] . "!!</p>";
}
} // end

//mysql_query(" // suggest here to validate against emails in db");
mysql_close($connection);
echo "SUCCESS";
}
catch(Exception $e)
{
echo $e->getMessage();
// Note: Log the error or something
}
?>

编辑 3 错误:

警告:mysql_connect():第 5 行 C:\xampp\htdocs\email\checkform.php 中用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)

警告:mysql_select_db() 期望参数 2 是资源,布尔值在第 6 行的 C:\xampp\htdocs\email\checkform.php 中给出 abc@gmail.com 错误:没有这样的电子邮件地址

警告:mysql_close() 期望参数 1 是资源,布尔值在第 32 行的 C:\xampp\htdocs\email\checkform.php 中给出 成功

【问题讨论】:

  • @Fred-ii- 我不认为这是被问到的问题-
  • 验证或匹配?完全是两种不同的动物。
  • 我需要验证用户输入的值与数据库中的值
  • SELECT name from table WHERE email=POSTED EMAIL ...
  • 专业提示您的数据库表字段;有些是大写的Name,有些不是email。当您忘记哪个是哪个时,这会给您带来麻烦

标签: php mysql html


【解决方案1】:

第 1 步

使您的表单指向您要处理数据的页面。现在我们将保持简单。您的示例中的表单是可以的,您只需要更改&lt;form&gt;标签本身的一些部分即可。

使用以下内容;

<form action="checkform.php" method="post">

请注意,我们使用的 methodpost。稍后您会看到该名称再次被使用。

第 2 步

使用文件名“checkform.php”创建一个新页面。假设您有正确的连接设置,您问题中的第二段代码是一个很好的起点。

在您的mysql_query 之前,我们需要从表单中获取数据,以便查看数据库中是否存在匹配项。我们使用全局变量 $_POST[] 来完成此操作,它是表单上所有项目的数组,其中 name 属性作为键。因此,用户输入的电子邮件地址将存储在$_POST['email'] 下。我们现在可以将其用作数据库查询的基础。

第 3 步

使用您要发送到数据库的查询创建一个字符串,并使用$_POST['email'] 来显示电子邮件地址。

$sql = "SELECT Name from table WHERE email=" . $_POST['email'];

其中table 是您在数据库中的表的名称。

现在您可以将该查询发送到数据库。

$result = mysql_query($sql);

请注意,查询结果将保存在$result 变量中。如果没有返回匹配,$result 将为 false。

第 4 步

我们现在需要从结果中获取有用的信息。我们通过循环结果并提取数据来做到这一点。首先我们检查是否有结果,如果没有则打印错误消息,如果有则获取数据。

我们可以使用while 循环遍历结果并将该行的数据放入$row 数组中,键是列的名称。我们只要求提供“姓名”,因此这将是我们唯一可用的列。代码如下所示;

if(!$result) { echo "<p class='error'>Error: No such email address</p>"; }
// note that the if is asking if there is no result
else {

    while ($row = mysql_fetch_assoc($result)) { 
        echo "<p class='success'>Welcome " . $row['Name'] . "!!</p>";
    }

} // endif

请注意,如果电子邮件地址匹配多行,此代码将显示多条欢迎消息。我暂时就这样离开了,但是您应该使电子邮件字段在您的数据库中唯一。

备注

请注意,使用mysql_ 函数正在贬值,并且在未来的 PHP 版本中将无法使用。您将需要改用mysqli_。目前您还可以,但是一旦您了解了这些数据库操作的工作原理,那么您应该考虑转向 MySQLi 函数。

您可以在if 部分添加代码,提示用户根据需要返回表单,或者添加 javascript 警报(google it)或其他任何内容,您可以使用 CSS 设置消息样式。

希望对你有帮助

【讨论】:

  • worldofjr,您能否在sqlfiddle.com 或任何类似网站上提供示例代码。
  • 您的数据库连接凭据错误。不幸的是,我不能告诉你正确的!请通过您的托管服务提供商登录您的控制面板,并检查您是否获得了正确的详细信息。我可能是错的,但我怀疑你的用户名是“root”,例如。
  • 另外,不要在此处发布您的连接详细信息,因为这是一个巨大的安全问题。您可能还想将密码更改为更安全的密码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
相关资源
最近更新 更多