세션을 올바르게 시작하고 삭제하는 방법은 무엇입니까?

Gallion

그래서 나는 가지고있다:

  • index.php (로그인 및 등록 양식, 환영 페이지 등)
  • login.php (사용자가 index.php에서 제출을 누를 때 실행되는 간단한 로그인 확인 PHP 파일),
  • home.php (사용자가 올바르게 로그인 한 후 리디렉션하는 사이트)
  • logout.php (login.php의 반대, 사용자를 index.php로 리디렉션하고 세션을 파괴합니다.

문제는 언제라도 올바르게 로그인하기 전에 home.php에 접속할 수 있다는 것입니다. $ _SESSION 변수가 필요한 모든 페이지에 start_session ()을 넣고 logout.php에도 session_destroy ()를 넣습니다.

그래서 다음은 php 파일의 코드입니다.

index.php

<body>

<?php
    require_once('config.php');
    if ($maintanance) {
        echo "Az oldal karbantartás alatt van.";
    }
    else if ($db_conn_error) {
        echo "Something went wrong according to database connection.";
    }
    else {
            include('reg.php');
            include('./templates/header.php');
?>

    <section>
        <form id="login_form" action="" method="POST">
            <h2>Already a member? Sign in!</h2>
            <p>Username: <input type="text" name="username"></p>
            <p>Password: <input type="password" name="password"></p>
            <input type="submit" name="login_submit" value="Sign In">
            <?php include 'login.php'; ?>
        </form>

        <form id="reg_form" action="" method="POST" onsubmit="return validation();">
            <h2>Sign up Now!</h2>
            <p>Username: <input type="text" name="username" placeholder="min. 5 characters">
            <span id="user_error"></span>
            </p>
            <p>Password: <input type="password" name="password" placeholder="min. 8 characters"></p>
            <p>Password again: <input type="password" name="password_again"></p>
            <p>E-mail: <input type="email" name="email" size="30"></p>
            <p>Date of birthday:
                <input type="number" name="bd_year" min="1950" max="2016">
                <input type="number" name="bd_month" min="1" max="12">
                <input type="number" name="bd_day" min="1" max="31">
            </p>
            <input type="submit" name="reg_submit" value="Sign Up">
        </form>
    </section>
</body>
</html>
<?php } ?>

login.php

<?php

    include 'config.php';

    if (isset($_POST["login_submit"]))
    {

        $username = $_POST["username"];
        $password = $_POST["password"];

        $query = "SELECT username, hashed_password FROM users WHERE username = '$username';";

        $result = mysqli_query($conn, $query);
        $row = mysqli_fetch_assoc($result);
        $rows_num = mysqli_num_rows($result);

        $password_match_error_message = false;

        if ($rows_num == 0) {
            echo "<p class='login_error_msg'>This user doesn't exist!</p>";
        }
        else {
            $password_match = password_verify($password, $row['hashed_password']);
            if (!$password_match) {
                echo "<p class='login_error_msg'>Wrong password!</p>";
            }
            else {
                session_start();
                $_SESSION["user"] = $username;
                header("Location: home.php");
            }
        }
    }

?>

home.php

<?php
    session_start();
    if (isset($_SESSION["user"])) {
?>

<!DOCTYPE html>

<html>

<head>
     <title>Spookie - Social Network</title>
     <link rel="stylesheet" type="text/css" href="./css/style.css">
</head>

<body>

    <?php
        include './templates/header.php';
    ?>

    <?php } else { echo "You are not logged in!"; } ?>

</body>

</html>

logout.php

<?php
    session_unset($_SESSION["user"]);
    session_destroy();
    header("Location: index.php");
?>

코드를 통해 실제로 무슨 일이 일어나고 있는지 확인하기가 어렵고 로그인은 작동하지만 세션은 실제로는 아닙니다.

문제 : 내가 입력하고 home.php는 로그인하지 않았음에도 불구하고 항상 연결할 수 있습니다. logout.php는 세션을 파괴하지 않거나 세션을 시작할 수 없습니다.

당신의 도움을 주셔서 대단히 감사합니다! :)

믿을 수 없을만큼 손으로 일부 사무엘

문제는 logout.php에 있습니다.

또한 변수를 제거 session_start() 있는지 확인해야 $_SESSION["user"]합니다.

전체 코드를 볼 수 없기 때문에 다른 문제가있을 수 있습니다. 내가 틀렸다면 정정하십시오.

세션 변수를 설정하는 일반적인 방법을 설명하는 다른 답변을 살펴보십시오.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP에서 세션을 올바르게 시작하는 방법은 무엇입니까?

분류에서Dev

파티션을 올바르게 정렬하는 방법은 무엇입니까?

분류에서Dev

LLVMModule 및 LLVMExecutionEngine을 올바르게 제거하는 방법은 무엇입니까?

분류에서Dev

이 방법을 올바르게 UnitTest하는 방법은 무엇입니까?

분류에서Dev

동시성을 올바르게 처리하는 방법은 무엇입니까?

분류에서Dev

C에서 C ++ 클래스 사용 : 일종의 "삭제 / 삭제"기능을 올바르게 작성하는 방법은 무엇입니까?

분류에서Dev

Upstart를 사용하여 지연 작업을 올바르게 시작하는 방법은 무엇입니까?

분류에서Dev

arcsin을 올바르게 출력하고이 수학 작업을 해결하는 방법은 무엇입니까?

분류에서Dev

ValidateAntiForgeryToken을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

babel 7 polyfill을 올바르게 연결하는 방법은 무엇입니까?

분류에서Dev

출력을 올바르게 교체하는 방법은 무엇입니까?

분류에서Dev

GPU 전력을 올바르게 활용하는 방법은 무엇입니까?

분류에서Dev

numpy 배열을 올바르게 스택하는 방법은 무엇입니까?

분류에서Dev

확인란을 올바르게 정렬하는 방법은 무엇입니까?

분류에서Dev

GetModuleFileName을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

std :: string을 ""와 올바르게 비교하는 방법은 무엇입니까?

분류에서Dev

NSURLConnection 호출을 올바르게 수행하는 방법은 무엇입니까?

분류에서Dev

srcML을 올바르게 설치하는 방법은 무엇입니까?

분류에서Dev

자산을 올바르게 생성하는 방법은 무엇입니까?

분류에서Dev

GraphQLList 및 GraphQLInterfaceType을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

PHP 확장을 올바르게 설치하는 방법은 무엇입니까?

분류에서Dev

setInterval ()을 올바르게 사용하는 방법은 무엇입니까? -jQuery

분류에서Dev

템플릿을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

"확장"을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

dtype str을 올바르게 지정하는 방법은 무엇입니까?

분류에서Dev

Apache Rewrite Rule을 올바르게 구현하는 방법은 무엇입니까?

분류에서Dev

Django 양식을 올바르게 제출하고 요청을 처리하는 방법은 무엇입니까?

분류에서Dev

Forge에서 .sldasm 파일을 올바르게 번역하고 표시하는 방법은 무엇입니까?

분류에서Dev

액터 시스템을 올바르게 다시 시작하고 방금 떠난 akka 클러스터에 다시 참여하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    PHP에서 세션을 올바르게 시작하는 방법은 무엇입니까?

  2. 2

    파티션을 올바르게 정렬하는 방법은 무엇입니까?

  3. 3

    LLVMModule 및 LLVMExecutionEngine을 올바르게 제거하는 방법은 무엇입니까?

  4. 4

    이 방법을 올바르게 UnitTest하는 방법은 무엇입니까?

  5. 5

    동시성을 올바르게 처리하는 방법은 무엇입니까?

  6. 6

    C에서 C ++ 클래스 사용 : 일종의 "삭제 / 삭제"기능을 올바르게 작성하는 방법은 무엇입니까?

  7. 7

    Upstart를 사용하여 지연 작업을 올바르게 시작하는 방법은 무엇입니까?

  8. 8

    arcsin을 올바르게 출력하고이 수학 작업을 해결하는 방법은 무엇입니까?

  9. 9

    ValidateAntiForgeryToken을 올바르게 사용하는 방법은 무엇입니까?

  10. 10

    babel 7 polyfill을 올바르게 연결하는 방법은 무엇입니까?

  11. 11

    출력을 올바르게 교체하는 방법은 무엇입니까?

  12. 12

    GPU 전력을 올바르게 활용하는 방법은 무엇입니까?

  13. 13

    numpy 배열을 올바르게 스택하는 방법은 무엇입니까?

  14. 14

    확인란을 올바르게 정렬하는 방법은 무엇입니까?

  15. 15

    GetModuleFileName을 올바르게 사용하는 방법은 무엇입니까?

  16. 16

    std :: string을 ""와 올바르게 비교하는 방법은 무엇입니까?

  17. 17

    NSURLConnection 호출을 올바르게 수행하는 방법은 무엇입니까?

  18. 18

    srcML을 올바르게 설치하는 방법은 무엇입니까?

  19. 19

    자산을 올바르게 생성하는 방법은 무엇입니까?

  20. 20

    GraphQLList 및 GraphQLInterfaceType을 올바르게 사용하는 방법은 무엇입니까?

  21. 21

    PHP 확장을 올바르게 설치하는 방법은 무엇입니까?

  22. 22

    setInterval ()을 올바르게 사용하는 방법은 무엇입니까? -jQuery

  23. 23

    템플릿을 올바르게 사용하는 방법은 무엇입니까?

  24. 24

    "확장"을 올바르게 사용하는 방법은 무엇입니까?

  25. 25

    dtype str을 올바르게 지정하는 방법은 무엇입니까?

  26. 26

    Apache Rewrite Rule을 올바르게 구현하는 방법은 무엇입니까?

  27. 27

    Django 양식을 올바르게 제출하고 요청을 처리하는 방법은 무엇입니까?

  28. 28

    Forge에서 .sldasm 파일을 올바르게 번역하고 표시하는 방법은 무엇입니까?

  29. 29

    액터 시스템을 올바르게 다시 시작하고 방금 떠난 akka 클러스터에 다시 참여하는 방법은 무엇입니까?

뜨겁다태그

보관