根据MYSQL验证用户输入字段

时间:2014-08-27 21:38:41

标签: php mysql html5

我是mysql的新手。如何根据存储在数据库中的值验证用户输入电子邮件值。用户在html5输入字段中输入他的电子邮件,并使用存储在数据库中的值进行验证,并相应地执行成功操作。成功导航到下一个屏幕并且失败会弹出一个弹出窗口。附件是场景的屏幕截图。 [image](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():拒绝访问用户&root;&#39; @&#39; localhost&#39; (使用密码:YES)在第5行的C:\ xampp \ htdocs \ email \ checkform.php

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

警告:mysql_close()要求参数1为资源,第32行的C:\ xampp \ htdocs \ email \ checkform.php中给出布尔值 SUCCESS

1 个答案:

答案 0 :(得分:0)

第1步

使表单指向要处理数据的页面。现在我们会保持简单。您的示例中的表单没问题,您只需要更改<form>标记本身的某些部分。

使用以下内容;

<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设置邮件样式。

希望这有帮助