Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP帐户激活逻辑_Php - Fatal编程技术网

PHP帐户激活逻辑

PHP帐户激活逻辑,php,Php,我写PHP是为了激活一个用户的帐户。。。。。。 代码经过过滤、消毒、密码加密,我使用PDO存储数据。。。。 我有一个标题重定向一旦数据被存储,引导用户点击他们注册的电子邮件地址上的激活链接 一切正常,我使用了一个PDO RowCount()来告诉重定向继续并运行,但我在MySql数据库中添加了一个哈希列,以帮助激活链接,然后被查询以实际激活帐户,因此已经填充了RowCount,重定向将绕过表单本身运行。因此,我编写了一些代码来启用重定向功能,它确实可以,但是它仍然在绕过表单本身。。。。。 我需要

我写PHP是为了激活一个用户的帐户。。。。。。 代码经过过滤、消毒、密码加密,我使用PDO存储数据。。。。 我有一个标题重定向一旦数据被存储,引导用户点击他们注册的电子邮件地址上的激活链接

一切正常,我使用了一个PDO RowCount()来告诉重定向继续并运行,但我在MySql数据库中添加了一个哈希列,以帮助激活链接,然后被查询以实际激活帐户,因此已经填充了RowCount,重定向将绕过表单本身运行。因此,我编写了一些代码来启用重定向功能,它确实可以,但是它仍然在绕过表单本身。。。。。 我需要这段代码来运行头重定向,也就是说数据库已经被表单填充,但是我需要它停止绕过表单本身,只是继续重定向

下面的代码…根据要求提供更多代码

   try{
   $checkEmail = $db->prepare('SELECT email FROM users WHERE email = :email');
   $checkEmail->bindParam(':email', $clean['email']);
   $checkEmail->execute();
   $result = $checkEmail->fetch();
   print_r($result);
    } catch(PDOException $e) {
   $e->getMessage();
    }
   if ($result[0] === $clean['email']){

           header('Location:verifyemail.php');



     }

$clean['email']是编程逻辑中的当前电子邮件地址。但是PHP似乎已经有了一些价值,因此表单被绕过了。

我可能完全误解了这个代码片段的意图,但是如果当页面第一次加载时,
$clean['email']
NULL
(因为没有处理表单输入),我认为,
如果
条件总是正确的:

  • PDO替换在占位符替换为NULL的情况下运行,因此相当于从email=NULL的用户处选择电子邮件
  • 没有匹配的行(保证,因为在SQL中偶数
    NULL=NULL
    为false)
  • $result[0]
    未定义,因为SQL查询未返回任何行
  • 因此,
    $result[0]
    $clean['email']
    都计算为PHP NULL,因此是相同的
  • 重定向火力

  • [Update,from comment]我认为这种方法适用于除空输入以外的所有情况;您只需检测未提供的
    $clean['email']
    的情况。也许
    如果(!empty($clean['email'])和&$result[0]==$clean['email']]){…}

    是的,所以我只需要一段数据来说明数据库刚刚填充了rowCount(),但一旦我将哈希插入数据库,它就会绕过,因为数据库至少在一列中自动填充。我正在使用PDO查看columnCount(),但我认为需要首先查询数据库。我需要的是一个PDO方法,它说x个列实际上刚刚被填充,转到并重定向…@AntPower我认为这种方法将适用于除空输入以外的所有情况;您只需检测未提供的
    $clean['email']
    的情况。也许
    如果(!empty($clean['email'])和&$result[0]===$clean['email']){…}
    现在就尝试一下……谢谢……它奏效了……谢谢你的帮助。。。。。。。