簡體   English   中英

有什么辦法可以用MYSQL和JSON登錄$session[] php嗎?

[英]Is is there any solution to log in $session[] php with MYSQL and JSON?

目前,我遇到了 Session[] 的問題。

當我登錄時(工作正常)。 我給了 Session[] “東西”,但是當我重新定位到另一個 window 然后當我想用它從 MYSQL 數據庫中獲取數據時。

登錄后有什么方法可以使用 SESSION[] 嗎?

搬遷的page.js:

betoltProfil();
function betoltProfil() {
    //get data from database
    var formData = new FormData();
    formData.append("funkcio", "AdoIntBe");
    fetch(baseUrl + "/ajax/AdomanyInterfacePHP.php", {
        method: "POST",
        body: formData,
    })
        .then(response => response.text())
        .then(request => {
            let szervadat = JSON.parse(request); //json data to let
            console.log(szervadat); //usually gives the <Empty string> log int the browser
            oldalEpit(szervadat);
        })
}
function oldalEpit(adatTomb) {
    console.log(asd);
}

來自 formData 的 function php:

<?php
require_once "../app/functions.php";
session_start();
if (isset($_POST["funkcio"])) {
    if ($_POST["funkcio"] == "AdoIntBe") {
        if (isset($_SESSION["userId"])) {
            AdoIntBe($conn, $_SESSION["userId"]);
        }
        // AdoIntBe($conn);
    }
}

function 的PHP 應該從MYSQL 獲取數據的基礎在SESSION[]

function AdoIntBe($conn, $userId)
{
    session_start();
//the select to Database
    $stmt = $conn->prepare("SELECT nev, leiras, email FROM adomanyszerv WHERE id =?");
    $stmt->execute([
        $userId
    ]);

    $eredmeny = $stmt->fetch(PDO::FETCH_ASSOC);
//This should give back to formData
    echo json_encode($eredmeny);
}

這是我聲明 SESSION[] 的 LOGIN PHP function。

function beEllenoriz($AEmail, $AJelszo, $conn)
{
    $stmt = $conn->prepare("SELECT * from adomanyszerv where email =? and jelszo=?");

    $stmt->execute([
        $AEmail,
        hash("sha512", $AJelszo)
    ]);

    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($stmt->rowCount() == 1) {
        session_start();
        $_SESSION["userID"] = $row["id"];
        // $_SESSION["felhasz"] = true;
        echo json_encode(true);
    } else {
        echo json_encode(false);
        false;
    }
}

總的來說,如何使用SESSION[]來識別登錄的用戶並從數據庫中獲取數據呢? 抱歉,代碼繁重且難以理解!

使用session_start()啟動session作為腳本中始終加載的第一個操作之一。

如果您始終包含main.php腳本,請在調用任何其他腳本(例如function.php )之前將其放在文件頂部。 這樣$_SESSION全局變量就可以在項目的任何地方訪問。

main.php

<?php
session_start();
require_once "../app/functions.php";

然后你可以從你的函數中刪除多余的 session_start() ..

functions.php

<?php

function AdoIntBe($conn, $userId)
{
    // ...
    // session_start(); REMOVE IT because it is NOT NEEDED HERE ANY MORE
    // ...
}
function beEllenoriz($AEmail, $AJelszo, $conn)
{
    // ...
    // session_start(); REMOVE IT because it is NOT NEEDED HERE ANY MORE
    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM