Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Metoda GET i sesje
Forum PHP.pl > Forum > PHP
ktuvok
Wysyłam dane metodą GET do pliku skrypt.php i otwieram go w nowym oknie. Po uruchomieniu skrypt.php sprawdza uprawnienia użytkownika:

[php:1:8868bcdfae]<?php

session_start();
$CzyZalogowany = $_SESSION[CzyZalogowany];
if($CzyZalogowany != "Tak")
{
echo "nic z tego, kolego!";
exit;
}

?>[/php:1:8868bcdfae]

i za każdym razem otrzymuję ten denerwujący komunikat zamiast rezultatu wykonania skryptu... Czy pliki otwierane w nowym oknie nie korzystają z tej samej sesji, co reszta?

Pozdrawiam,
K
talee
korzystają ale musisz przekazać id sesji przez get
id4
Cytat
korzystają ale musisz przekazać id sesji przez get


Nie musi. Sesja działa niezależnie od GETa.
Pokaż jeszcze plik, w którym zapisujesz dane do sesji.
ktuvok
Zapisywanie działa na początku systemu - po zalogowaniu. Jeśli juzer wpisze prawidłowy login i hasło, rejestrowanych jest kilka zmiennych sesji, np:

[php:1:ee79e767e1]<?php

$_SESSION[ImieINazwisko] = $ImieINazwiskoWpisanePrzezJuzera;

?>[/php:1:ee79e767e1]

Na początku każdego pliku robię session_start(); i sprawdzam w sposób podany powyżej (i nie tylko), czy juzer jest uprawniony. Jeśli nie - wywalam go do ekranu logowania.

Plik który opisuję otwieram GET'em (nie wazne dlaczego) w taki sposób:

Kod
<FORM Name=NazwaFormularza ACTION="http://www.mja.strona.com.pl/system/katalog/skrypt.php" METHOD=GET TARGET=BLANK>

...


resztę znasz.

Generalnie wszystkie zmienne sesyjne są w przypadku skrypt.php puste. Jak się do nich dobrać?

Pzdr,
K
id4
Spróbuj:

1. zmienną sesji pisać: $_SESSION['nazwa'].
2. form action zrobić do pliku względnie a nie bezwzględnie.
3. w pliku skrypt.php wrzeczytać wartość sesji - bo może jest inaczej napisane, np.: "tak" a nie "Tak".
ktuvok
To nie chodzi o to, jak piszę zmienną sesji (w nawiasach czy bez) - mam kilka takich i takich i żadne nie chodzą.

Ścieżki bezwzględne są niezbędne, bo system działa w SSL'u bądź bez. A jeśli juzer jest w SSL'u, to muszę przekierowywać go do strony bez SSL'a (plik skrypt.php generuje pdf'a, który nie działa w SSL).

Wartość "Tak" to przykład, ale sprawdziłem, że odwołania są prawidłowe...

Jak odczytać session_id() przekazane w URL'u? Wiem już, jak przekazać tenże session_id(), ale w pliku skrypt.php chciałbym zainicjować TĘ sesję, której id równa się przekazanemu session_id() i nie wiem, jak to zrobić...


Pzdr,
K
talee
Cytat
Cytat
korzystają ale musisz przekazać id sesji przez get

Nie musi. Sesja działa niezależnie od GETa.
Pokaż jeszcze plik, w którym zapisujesz dane do sesji.

Tak samo niezależnie od 'get' jak od 'cookie'. Napisał, że otwiera nowe okno założyłem, że przez js i przy session.use_cookies=false transparent sid nie przepisałoby mu identyfikatora sesji dla przykładu. Więcej wyobraźni…

Proponuję prosty test:
index.php
[php:1:0593dc493c]
<?php

session_start();
$_SESSION['talee'] = 'Człowiek z wyobraźnią';

?>
<html>
<head>
</head>
<body>
<a href="talee.php">show who is talee</a>
</body>
</html>
[/php:1:0593dc493c]

talee.php
[php:1:0593dc493c]
<?php

session_start();

?>
<html>
<head>
</head>
<body>
<?php

echo $_SESSION['talee'];

?>
</body>
</html>
[/php:1:0593dc493c]
id4
Witam.

Po uruchomieniu pierwszego pliku mam link: show who is talee.
Po kliknięciu w niego otrzymuję napis: Człowiek z wyobraźnią.

Nie wiem dlaczego założyłeś, że session.use_cookies=false. Pewnie dlatego, że w powyższym przykładzie rzeczywiście są problemy z przekazaniem sesji ... Nie jestem za dobry z serwerów, i z tej dziedziny jestem wąski w plecach ... Acha, no i mam mało wyobraźni :wink:

Pozdrowionka
talee
test był dla ktuvok, zeby sprwadzić czy sesja działa, a dla ciebie id4 mam full respect bo twoje posty są sensowne i rzeczowe. Jego problem może polegać na tym, że ma pomieszane ssl z otwartym tekstem. Ne wiem ne pisasłem czegoś takiego ale to tylko przychodzi mi na szybko do głowy, prawdopodobnie należy rozwiązać autoryzacje w inny sposób nezależnie od sesji np przez bazę danych.
ZbyszekS
Nie czytałem cwszystkich postów.
Napiszę tylko,że aby sprawdzać zawartość jakiejkolwiek zmiennej najpierw trzeba sprawdzić, czy taka zmienna istnieje, bo mogła być do tej pory jeszcze wcale nie ustawiona i jak porównywać coś, co nie istnieje. Będą pojawiać się komunikaty błędów. Nazwy zmiennych sesji ujmować w cudzysłowy.
Czyli:

if(isset($_SESSION["CzyZalogowany"]))
{
if($_SESSION["CzyZalogowany"]=="tak") print("Tak jest zalogowany");
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.