【问题标题】:Check if email is already activated not working [closed]检查电子邮件是否已激活无法正常工作[关闭]
【发布时间】:2015-11-29 20:59:02
【问题描述】:

我刚刚创建了一个脚本来检查用户是否已经激活了他的帐户。如果是这样,它应该说“该帐户已被激活”,如果没有,则激活该帐户。问题是它总是说“激活成功”。有人可以帮帮我吗?

<?php
session_start();
include_once 'dbconnect.php';
$dbconnect = mysqli_connect('server', 'user', 'password', 'database');

if (isset($_GET['email'])) {
    $email = $_GET['email'];
}
if (isset($_GET['status']) && (strlen($_GET['status']) == 32)) {
    $status = $_GET['status'];
}

if (isset($email) && isset($status)) {

    $sql = "SELECT status FROM users WHERE email='$email'";
    $result = mysql_query($sql);

    if ($result == 'active') {

        echo" <div style='position:absolute;left:29.5%;top:10%;width:41%;' class='alert alert-danger'>
             <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
             <strong>Chyba!</strong> &#218;&#269;et je ji&#158; aktivov&#225;n!
             </div>";
    } else {

        $query_activate_account = "UPDATE users SET status='active' WHERE(email ='$email' AND status='$status')";
        $result_activate_account = mysqli_query($dbconnect, $query_activate_account);

        echo" <div style='position:absolute;left:29.5%;top:10%;width:41%;' class='alert alert-success'>
             <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
             <strong>Úspěch!</strong> Aktivace proběhla úspěšně! <a href='signin.php'>Přihlášení</a>
             </div>";
    }
}
?>

【问题讨论】:

  • 你正在混合使用 mysql 和 mysqli 函数
  • 您的查询对 SQL 注入开放。您需要在任何查询中使用用户输入之前对其进行清理,或者最好使用准备好的语句。

标签: php mysql session


【解决方案1】:

更新

 $sql = "SELECT status FROM users WHERE email='$email'";
    $result = mysql_query($sql);
to 
 $sql = "SELECT status FROM users WHERE email='$email'";
    $result = mysql_query($sql);
while($row = mysql_fetch_assoc($result )){
  $status = $row['status'];
}

并替换

if ($result == 'active') {

if ($status== 'active') {

【讨论】:

  • 它说:警告:mysql_fetch_assoc() 期望参数 1 是资源,在第 17 行的 /data/web/virtuals/115709/virtual/www/activate.php 中给出的字符串
  • 我在 $sql 上添加了 $result,请查看我的更新答案...完成
  • 解决办法应该是mysqli,修复注入攻击漏洞。
  • 谢谢!现在它运行良好。
  • 老兄!!!添加您的答案并停止评论消极性请...完成
猜你喜欢
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 2018-04-27
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
相关资源
最近更新 更多