激活邮件和哈希检查

时间:2017-05-15 18:30:25

标签: php email verify activation-codes

我的问题是,条件是(isset ...是不可见的。直到现在我没有使用PDO所以如果有人看到我的问题的解决方案,请帮助我,如果可以,谢谢。

    <?php

        mysql_connect("localhost", "xxxx", "") or die(mysql_error()); // Connect to database server(localhost) with username and password.
        mysql_select_db("database") or die(mysql_error()); // Select registration database.

无法看到此if条件

if (isset($_GET['e_mail']) && !empty($_GET['e_mail']) AND isset($_GET['hash']) && !empty($_GET['hash'])){
            // Verify data
            $email = mysql_escape_string($_GET['e_mail']); // Set email variable
            $hash = mysql_escape_string($_GET['hash']); // Set hash variable

            $search = mysql_query("SELECT e_mail, hash, active FROM users WHERE e_mail='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error()); 
            $match  = mysql_num_rows($search);

我想这样做:

            if($match > 0){
                // We have a match, activate the account
                mysql_query("UPDATE users SET active='1' WHERE e_mail='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
                echo '<div class="statusmsg">Your account has been activated, you can now login</div>';
            }else{
                // No match -> invalid url or account has already been activated.
                echo '<div class="statusmsg">The url is either invalid or you already have activated your account.</div>';
            }


        }

如果条件执行此操作:

else{


                // Invalid approach
                echo '<div class="statusmsg">Invalid approach, please use the link that has been send to your email.</div>';

            }
            ?>

1 个答案:

答案 0 :(得分:0)

我发现错误在哪里, 这听起来令人难以置信,但错误是在数据库中设置了底线(_),当我在数据库中输入电子邮件而不是 e_mail 时并纠正一切,它完美地运作。

我上传了答案,因此它可以帮助处理相同情况的其他人。

我非常感谢Jay Blanchard在PDO工作的建议,我会发送他的设备,因为它很有说服力,谢谢Fred的回答。

现在,如果有人可以帮我在PDO中执行(编写,制作)此代码,并向我解释PDO如何工作以更好地理解它。谢谢!