• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

pobranie zmiennych sesyjnych przy wywołaniu przez xhr

VPS Starter Arubacloud
0 głosów
142 wizyt
pytanie zadane 15 stycznia 2022 w JavaScript przez Jacek Śmiel Użytkownik (510 p.)

Witajcie,

mój problem polega na tym, że javascript wykonuje żadanie xhr do pliku php, który wykonuje akcje. Wszystko w tej kwestii działa, ale mój plik wykonawczy php, który odbiera dane z javascripta xhr'em nie weryfikował uprawnień zalogowanego użytkownika, uprawnienia użytkownika przy zalogowaniu zapisuje do $_SESSION['rola'], chciałbym aby skrypt wykonawczy php wykonywał się jedynie gdy $_SESSION['rola'] == 'admin', tworząc to rozwiązanie zauważyłem, że skrypt wykonawczy php, który inicjowany jest przez xhr nie posiada sesji php ustanowionej przez zalogowanego użytkownika. 

    $sesjaDecode = json_decode($_SESSION, true);

    var_dump($sesjaDecode); //kod ten zwraca NULL json'em

Teraz proszę Was o podpowiedź, jak mogę rozwiązać mój problem? Czy powinienem wysyłać unikalny API key i API Secreet key, który posiadam w swojej aplikacji, na jego podstawie jestem w stanie sprawdzić czy user, który zlecił wykonanie akcji xhr ma do tego uprawnienie. Czy może powinienem wykonać to w inny sposób?

komentarz 15 stycznia 2022 przez Wiciorny Ekspert (269,120 p.)
cieżko poradzić, bo  nie wiadomo jaka jest przyczyna braku wartości i nulla- zwracanego w zmiennej.
Przydało by się wiecej kodu ... i logiki tego jak to działa
1
komentarz 15 stycznia 2022 przez Jacek Śmiel Użytkownik (510 p.)
przeniesione 15 stycznia 2022 przez ScriptyChris
skrypt odbierający dane po uruchomieniu xhr:

https://pastebin.com/u21D3Vsc

 

Skrypt javascript wywołujący inicjację xhr:

https://pastebin.com/J3DqFMGW

 

(wstawiam kod tutaj, ponieważ mam błąd przy próbie wstawienia go do bloczków kodu), przepraszam za problem
komentarz 15 stycznia 2022 przez mordimer Mądrala (5,720 p.)
daj w 3 lini zaraz po polaczeniu

var_dump($_SESSION);die;

co dostajesz ?
komentarz 15 stycznia 2022 przez Jacek Śmiel Użytkownik (510 p.)

to pomogło,

dostaje odpowiedź od serwera ze wszystkimi zmiennymi sesyjnymi.

array(3) { ["nick"]=> string(5) "zihen" ["haslo"]=> string(32) "*********************" ["rolaUzytkownika"]=> string(5) "admin" }

Nie rozumiem, tylko czemu dodanie die; naprawiło sprawę, przecież niżej użyłem takiej logiki:

    $sesjaDecode = json_decode($_SESSION, true);

    var_dump($sesjaDecode);

 

komentarz 15 stycznia 2022 przez Jacek Śmiel Użytkownik (510 p.)

czemu mój zapis nie działa?

    $sesjaDecode = json_decode($_SESSION, true);

    var_dump($sesjaDecode);

 

komentarz 15 stycznia 2022 przez mordimer Mądrala (5,720 p.)
Zamien na json_encode

Swoja droga ta globalana zmienna jest juz tablica wiec to jest zbedne
komentarz 15 stycznia 2022 przez mordimer Mądrala (5,720 p.)
Ta funkcja ktorej uzyles przyjmuje jsona ale jako stringa ty wrzuciles do niej tablice zobacz w manualu

3 odpowiedzi

0 głosów
odpowiedź 15 stycznia 2022 przez mordimer Mądrala (5,720 p.)
Dales session_start () na poczatku tego pliku ?
komentarz 15 stycznia 2022 przez Jacek Śmiel Użytkownik (510 p.)
tak
0 głosów
odpowiedź 16 stycznia 2022 przez VBService Ekspert (251,210 p.)
edycja 16 stycznia 2022 przez VBService

Z kodu, który podałeś

skrypt odbierający dane po uruchomieniu xhr:
https://pastebin.com/u21D3Vsc 

Skrypt javascript wywołujący inicjację xhr:
https://pastebin.com/J3DqFMGW

może wynikać, że chodziło Tobie o

session_start();
require('../connect.php');
  
var_dump(json_decode($_POST, true));
var_dump($_SESSION);

...

linia 4 powyżej, ponieważ 

const jsonString = JSON.stringify(NowaNotyfikacja);
const xhr = new XMLHttpRequest();
 
xhr.open("POST", "../../php-scripts/dodaj-notyfikacje.php");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(jsonString);
0 głosów
odpowiedź 16 stycznia 2022 przez neo1020 Dyskutant (8,430 p.)

to w pliku wykonawczym php odpal sesje i sprawdź if'em jakie uprawnienia ma uzytkownik i według tego zdecyduj co ma dalej zrobić program

jeżeli dobrze rozumiem co chcesz zrobić

<php 

session_start();

if($_SESSION[rola] != 'admin'){
      echo 'Nie możliwe jest wykonanie skryptu';
}else{
       =kod do wykonania=
}

 

Podobne pytania

0 głosów
1 odpowiedź 333 wizyt
pytanie zadane 21 maja 2018 w PHP przez szachovy Początkujący (270 p.)
+1 głos
2 odpowiedzi 305 wizyt
pytanie zadane 14 lutego 2018 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 16 lipca 2017 w PHP przez sapero Gaduła (4,100 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...