[英]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.