-2

假设你有一个网站,用户可以提交他们的名字来参加一些课程。用户将填写一个表格,然后点击提交,他们的名字和电话号码将进入一个 mysql 数据库中的表格。我想做的是我想通过检查电话号码是否相同来防止用户两次提交他/她的姓名(我知道这样很傻,但我只是作为一个例子)。那我该怎么办?我是使用此方法将表单数据插入数据库:

    $pdo = new PDO('mysql:host=localhost;dbname=form', 'formuser', 'password');
    $fname = $_REQUEST['fname']; //first name from the form
    $lname = $_REQUEST['lname']; //last name from the form
    $pnumber = $_REQUEST['pnumber']   //phone number from the form
    $query = 'INSERT INTO list SET
          firstname = "' . $fname . '",
          lastname = "' . $lname . '",
          phonenumber ="' . $pnumber . '",
          date = CURDATE()';
    $pdo->exec($query);

而且我知道这不是将数据插入数据库的安全方法。我再次尝试找出一种方法,然后部署更好的解决方案来提交数据。

4

2 回答 2

1

首先你需要检查电话号码
if (isset($_POST['your_button']))
{
$phone = $_POST['phonenumber'];
$query = "SELECT * FROM LIST WHERe phonenumber = '$phone'";
$result=mysql_query($query) 或死(mysql_error());
$row=mysql_fetch_array($result);
if($row>0){
echo "电话号码存在!"}
else{

$fname = $_REQUEST['fname']; //名字来自表单
$lname = $_REQUEST['lname']; //表格中的姓氏
$pnumber = $_REQUEST['pnumber'] //表格中的电话号码
$query = 'INSERT INTO list SET
firstname = "' . $fname .'",
lastname = "' . $lname . '",
phonenumber ="' . $pnumber . '",
date = CURDATE()';
$pdo->exec($query);

}

于 2013-04-01T08:10:40.487 回答
1

就像您在问题中所说的那样,您与 table 的通信是不安全的。

但要回答您的问题,这里有一个示例查询:

SELECT IF(COUNT(*) > 0, TRUE, FALSE)
    FROM list
    WHERE firstname = $fname
        AND lastname = $lname
        AND phonenumber = $pnumber

我不熟悉php,也许你可以解决这个问题。如果名字姓氏电话号码TRUE重复,则查询输出。如果查询输出,您可以防止将记录插入到您的表中。TRUE

于 2013-04-01T08:13:38.110 回答