-1

我还有另一个问题。但是,这一次是用户确认。用户注册后,他们会收到一封电子邮件,链接为 mydomain.co.uk/confirm.php?username=(username)&id=(id)。那里的一切都有效,但是即使 id 和用户名正确,用户仍然没有得到确认。继承人的脚本:

<?php
    $id = $_REQUEST['id'];
    $username = $_REQUEST['username'];
    $link = mysql_connect('localhost', 'website', 'mypasswordtroll');
    if(!$link) {
    die('could not connect: ' . mysql_error());
    }
    $db_selected = mysql_select_db('website', $link);
    if (!$db_selected) {
    die ('Cant use database : ' . mysql_error());
    }

    $result = mysql_query("SELECT * FROM unconfirmedusers WHERE username = '$username' and id = $id");
    if(mysql_num_rows($result)==0){
    $continue = false;
    }
    while($row = mysql_fetch_array($result))
    {
    $usr = $row['username'];
    $pass = $row['password'];
    $email = $row['email'];
    $day = $row['day'];
    $month = $row['month'];
    $year = $row['year'];
    }
    if($continue == false){
    echo '<div class="alert alert-error"><b>Oh man!</b> No such user or id found!</div>';
    echo $result;
    }else{
    $query2 = "DELETE FROM unconfirmedusers WHERE id='$id' and username='$username'";
    $query3 = "INSERT INTO users (username, password, email, day, month, year) VALUES ('$usr', '$pass', '$email', $day, $month, $year)";
    $result2 = mysql_query($query2);
    $result3 = mysql_query($query3);
    echo '<div class="alert alert-success"><b>Great! </b>You can now log in!</div>';
    }
    ?>

我找不到任何问题,而且我不知道哪个部分不正确...任何人都可以发现任何可以帮助我解决此问题的错误吗?

4

1 回答 1

2

$continue == false将永远是真的,因为你从来没有设置$continue. $var如果未设置变量,($var == false)则将始终返回 true。($var === false)另一方面,true仅当您明确设置$var为时才会返回false

您要么需要将该行更改为if($continue === false),要么需要在检查之前添加$continue = true;以查看是否有任何结果。

也就是说,正如 FreshPrinceOfSO 评论的那样,您需要修改此代码并对 MySQL 注入进行一些研究。此外,我应该注意 mysql 函数已被弃用,您应该改用 MySQLi。

于 2013-06-20T19:44:24.680 回答