简体   繁体   English

从行中获取特定的ID

[英]get specific ID from a row

The program is a part from a login. 该程序是登录的一部分。 At first it reads the database. 首先,它读取数据库。 Afterthen it reads a row until it gets the value of the ID. 之后,它将读取一行,直到获得ID的值。 Then I wanna put that value in a Session. 然后,我想将这个值放在一个Session中。

The problem is when I wanna log in, I get everytime an error message, "wrong email/password". 问题是,当我想登录时,每次都会收到一条错误消息,“错误的电子邮件/密码”。

Where could be the problem? 问题可能出在哪里? I haven't encrypted the password yet, it will be done after it works everything. 我尚未加密密码,它将在一切正常后完成。

 <_?php

if(isset($_POST['sbmt'])){
    $login = mysqli_real_escape_string(htmlspecialchars($_POST['login']));
    $pswd =  mysqli_real_escape_string(htmlspecialchars($_POST['pswd']));
            $id =  $_POST['id'];

           if(validateData($login, $pswd) === true){

                    $_SESSION['logedIn'] = true;

           header("Location: index.php");

            }else{
        $_SESSION['logedIn'] = false;
        echo 'Wrong Email/Password';
    }
}

function validateData($login, $pswd){
    if(strlen($login) > 0 && strlen($pswd) > 0){
        $result = mysqli_query("SELECT id,name FROM register WHERE email='$login' && password='$pswd'") or die(mysqli_error());

               while($row = mysqli_fetch_array($result)) {
                             if (isset($_SESSION['logedIn'])) {
                             $_SESSION['logedIn'] = $row['id'];
                             } else {
                               return false;
                               }

                               break;
            echo '<newarial>' . $row['id'] . '</newarial>';  }

                    if($row === false){
            return false;
        }else{
            return true;
        }
    }else{  
        return false;
    }
}
?_>_

thats because you are checking for session logedIn and it's just not there yet so your function validateData returns false every time 那就是因为您正在检查会话已登录,并且还不存在,所以您的函数validateData每次都会返回false

 if (isset($_SESSION['logedIn'])) {
                             $_SESSION['logedIn'] = $row['id'];

You could do something like this: 您可以执行以下操作:

function validateData($login, $pswd){
    $link = mysqli_connect("host", "username", "password", "database") or die("cannot connect"));

    if(strlen($login) > 0 && strlen($pswd) > 0){
        $result = mysqli_query($link, "SELECT id,name FROM register WHERE email='$login' && password='$pswd'") or die(mysqli_error());

               if (mysqli_num_rows($result) !=1) {
                   return false;
               }

               $result = mysqli_fetch_array($result);
               $_SESSION['userId'] = $row['id'];
               $_SESSION['userName'] = $row['name'];
               return true;
    }
    return false;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM