PHP의 내 로그인이 제대로 작동하지 않습니다.

AndrB

PHP에서 로그인 페이지를 작성하려고하는데 오류가 없지만 그렇지 않은 경우에도 "사용자 이름 누락"및 "비밀번호 누락"이라고 표시됩니다. 여기 내 코드가 있습니다. 내가 뭘 잘못하고 있습니까?

connection.php

<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "simple_login";
$prefix = "";
$bd = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password, $mysql_database) or die("Could not connect database");
?>

login_exec.php

<?php
    //Start session
    session_start();

    //Include database connection details
    require_once('connection.php');

    //Array to store validation errors
    $errmsg_arr = array();

    //Validation error flag
    $errflag = false;

    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($bd,$str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysqli_real_escape_string($bd, $str);
    }

    //Sanitize the POST values
    $username = clean($_POST['username']);
    $password = clean($_POST['password']);

    //Input Validations
    if($username == '') {
        $errmsg_arr[] = 'Username missing';
        $errflag = true;
    }
    if($password == '') {
        $errmsg_arr[] = 'Password missing';
        $errflag = true;
    }

    //If there are input validations, redirect back to the login form
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: index.php");
        exit();
    }

    //Create query
    $qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
    $result=mysqli_query($bd, $qry);

    //Check whether the query was successful or not
    if($result) {
        if(mysqli_num_rows($result) > 0) {
            //Login Successful
            session_regenerate_id();
            $member = mysqli_fetch_assoc($result);
            $_SESSION['SESS_MEMBER_ID'] = $member['mem_id'];
            $_SESSION['SESS_FIRST_NAME'] = $member['username'];
            $_SESSION['SESS_LAST_NAME'] = $member['password'];
            session_write_close();
            header("location: home.php");
            exit();
        }else {
            //Login failed
            $errmsg_arr[] = 'user name and password not found';
            $errflag = true;
            if($errflag) {
                $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
                session_write_close();
                header("location: index.php");
                exit();
            }
        }
    }else {
        die("Query failed");
    }
?>

home.php

<?php
    //require_once('auth.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {
    font-size: 36px;
    font-weight: bold;
}
-->
</style>
</head>

<body>
<p align="center" class="style1">Login successfully </p>
<p align="center">This page is the home, you can put some stuff here......</p>
<p align="center"><a href="index.php">logout</a></p>
</body>
</html>

및 index.php

<?php
    //Start session
    session_start();    
    //Unset the variables stored in session
    unset($_SESSION['SESS_MEMBER_ID']);
    unset($_SESSION['SESS_FIRST_NAME']);
    unset($_SESSION['SESS_LAST_NAME']);
?>
<html>
<body>
<form name="loginform" action="login_exec.php" method="post">
<table width="309" border="0" align="center" cellpadding="2" cellspacing="5">
  <tr>
    <td colspan="2">
        <!--the code bellow is used to display the message of the input validation-->
         <?php
            if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
            echo '<ul class="err">';
            foreach($_SESSION['ERRMSG_ARR'] as $msg) {
                echo '<li>',$msg,'</li>'; 
                }
            echo '</ul>';
            unset($_SESSION['ERRMSG_ARR']);
            }
        ?>
    </td>
  </tr>
  <tr>
    <td width="116"><div align="right">Username</div></td>
    <td width="177"><input name="username" type="text" /></td>
  </tr>
  <tr>
    <td><div align="right">Password</div></td>
    <td><input name="password" type="text" /></td>
  </tr>
  <tr>
    <td><div align="right"></div></td>
    <td><input name="" type="submit" value="login" /></td>
  </tr>
</table>
</form>
</body>
</html>
CodeBrauer

다음은 버그입니다.

function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysqli_real_escape_string($str); # <-- BUG!
}

mysqli_real_escape_string2 개의 매개 변수가 필요합니다. 코드는 절차 적 스타일로 작성되었으므로 다음을 통과해야합니다.

  1. mysqli 링크 / 리소스
  2. 이스케이프 할 문자열

따라서이 기능은 다음과 같이 확장해야합니다.

function clean($bd, $str) { //new
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysqli_real_escape_string($bd, $str); //new
}

귀하의 경우 mysqli_real_escape_string은 아마도 NULL, false또는 빈 문자열을 반환 합니다-오류 메시지의 원인입니다.


편집하다:

에 대한 매개 변수도 누락되었습니다 mysqli_query. 링크를 첫 번째 매개 변수로 전달해야합니다. 따라서 함수는 실행해야하는 연결을 알고 있습니다.


또한 로그인 보안을 강화하려면 다음 항목 중 일부를 확인해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

로그인이 제대로 작동하지 않습니다. PHP

분류에서Dev

내 PHP 코드가 제대로 작동하지 않습니다.

분류에서Dev

내 PHP 사용자 로그인이 작동하지 않습니다

분류에서Dev

PHP 보내기 양식이 제대로 작동하지 않습니다.

분류에서Dev

파이 게임의 내 게임이 제대로 작동하지 않습니다

분류에서Dev

while 루프 내부의 반복이 제대로 작동하지 않습니다.

분류에서Dev

ToolBarOverflow 패널 내의 팝업이 제대로 작동하지 않습니다.

분류에서Dev

내 Ajax PHP 코드가 제대로 작동하지 않습니다.

분류에서Dev

내 로그인 PHP 양식이 작동하지 않습니다. 나는 내 $ hash = $ row [ 'password']; 문제이지만 확실하지 않습니다

분류에서Dev

ConstraintLayout 내부의 EditText가 제대로 작동하지 않습니다.

분류에서Dev

새 클래스 내의 KerasClassifier가 제대로 작동하지 않습니다.

분류에서Dev

내 사용자 정의 EditText가 제대로 작동하지 않습니다.

분류에서Dev

내 Ansible 인벤토리의 그룹이 예상대로 작동하지 않습니다.

분류에서Dev

내 프로그램이 제대로 작동하지 않습니다

분류에서Dev

내 탐색이 제대로 작동하지 않습니다.

분류에서Dev

내 'if'문이 제대로 작동하지 않습니다.

분류에서Dev

내 strcpy 구현이 제대로 작동하지 않습니다.

분류에서Dev

PHP 로그인 페이지가 작동하지 않습니다.

분류에서Dev

PHP로 검색이 제대로 작동하지 않습니다

분류에서Dev

내 쿠키가 제대로 작동하지 않습니다.

분류에서Dev

내 bitnami wamp vhost가 제대로 작동하지 않습니다.

분류에서Dev

내 searchBar 필터가 제대로 작동하지 않습니다.

분류에서Dev

내 jQuery가 제대로 작동하지 않습니다.

분류에서Dev

내 화자 인식 신경망이 제대로 작동하지 않습니다.

분류에서Dev

같은 페이지 내의 앵커가 제대로 작동하지 않습니다.

분류에서Dev

jquery 데이터 테이블의 내림차순 정렬이 제대로 작동하지 않습니다.

분류에서Dev

로그인이 제대로 작동하지 않습니다

분류에서Dev

PHP 및 MySQL 로그인이 작동하지 않습니다.

분류에서Dev

PHP / MySQLi : 로그인 양식이 작동하지 않습니다.

Related 관련 기사

  1. 1

    로그인이 제대로 작동하지 않습니다. PHP

  2. 2

    내 PHP 코드가 제대로 작동하지 않습니다.

  3. 3

    내 PHP 사용자 로그인이 작동하지 않습니다

  4. 4

    PHP 보내기 양식이 제대로 작동하지 않습니다.

  5. 5

    파이 게임의 내 게임이 제대로 작동하지 않습니다

  6. 6

    while 루프 내부의 반복이 제대로 작동하지 않습니다.

  7. 7

    ToolBarOverflow 패널 내의 팝업이 제대로 작동하지 않습니다.

  8. 8

    내 Ajax PHP 코드가 제대로 작동하지 않습니다.

  9. 9

    내 로그인 PHP 양식이 작동하지 않습니다. 나는 내 $ hash = $ row [ 'password']; 문제이지만 확실하지 않습니다

  10. 10

    ConstraintLayout 내부의 EditText가 제대로 작동하지 않습니다.

  11. 11

    새 클래스 내의 KerasClassifier가 제대로 작동하지 않습니다.

  12. 12

    내 사용자 정의 EditText가 제대로 작동하지 않습니다.

  13. 13

    내 Ansible 인벤토리의 그룹이 예상대로 작동하지 않습니다.

  14. 14

    내 프로그램이 제대로 작동하지 않습니다

  15. 15

    내 탐색이 제대로 작동하지 않습니다.

  16. 16

    내 'if'문이 제대로 작동하지 않습니다.

  17. 17

    내 strcpy 구현이 제대로 작동하지 않습니다.

  18. 18

    PHP 로그인 페이지가 작동하지 않습니다.

  19. 19

    PHP로 검색이 제대로 작동하지 않습니다

  20. 20

    내 쿠키가 제대로 작동하지 않습니다.

  21. 21

    내 bitnami wamp vhost가 제대로 작동하지 않습니다.

  22. 22

    내 searchBar 필터가 제대로 작동하지 않습니다.

  23. 23

    내 jQuery가 제대로 작동하지 않습니다.

  24. 24

    내 화자 인식 신경망이 제대로 작동하지 않습니다.

  25. 25

    같은 페이지 내의 앵커가 제대로 작동하지 않습니다.

  26. 26

    jquery 데이터 테이블의 내림차순 정렬이 제대로 작동하지 않습니다.

  27. 27

    로그인이 제대로 작동하지 않습니다

  28. 28

    PHP 및 MySQL 로그인이 작동하지 않습니다.

  29. 29

    PHP / MySQLi : 로그인 양식이 작동하지 않습니다.

뜨겁다태그

보관