使用SQL进行PHP验证


PHP Validation with SQL

嗨,我是PHP的新手,我只是在做一个简单的表单来学习。它只包含一个电子邮件地址,我想验证信息并将其发送到数据库。我的问题是将它连接到数据库。我已经做了一些教程,但只是让自己感到困惑。

现在这是我的主页

reg.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registration Form</title>
</head>
<body>
<?php include("validation.php"); ?>
<form method="post" action="connect.php" name="form">
<ul id="errors">
    <li><?php echo $err_email; ?></li>
</ul>   
<div id="wrapper">
<div>Email</div>
<div class="input"><input type="text" name="email" value="<?php echo $val_email; ?>" /></div>

</div>
</form>
</body>
</html>

这是我的validation.php文件

<?php
if($_POST)
{
    $email = $_POST['email']; 
    // Email
    if (preg_match('/^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$/', $email)) {
        $val_email = $email; 
    }else{ 
        $err_email = 'Please enter valid Email address.'; 
    }
    if((strlen($val_email)>0) ){
        header("Location: reg");
    }else{ }
}
?>

最后是我的连接文件

 <?php
$host="localhost";
$username="admin";
$password=""; // Mysql password
$db_name="davidtest"; // Database name
$tbl_name="users"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("davidtest")or die("cannot select DB");
// Get values from form
$email=$_POST['email'];
// Insert data into mysql
$sql="INSERT INTO $users(email)VALUES('$email')";
$result=mysql_query($sql);
// close connection
mysql_close();
?>
INSERT INTO $users(email)VALUES('$email')

$users不是一个变量,因此在放入表中时将为空。我怀疑你是指

$sql="INSERT INTO $tbl_name (email) VALUES ('$email')";

但是,您不应该在查询中使用未设置大小的用户字符串,因为恶意用户可能会将SQL注入到您的查询中(请参阅SQL注入)。

此外,请注意,mysql_*系列函数现在已弃用,不再维护,并将在未来的PHP版本中删除。考虑mysqliPDO