ktuvok
8.03.2004, 20:10:55
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
8.03.2004, 20:19:52
korzystają ale musisz przekazać id sesji przez get
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
8.03.2004, 20:47:29
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
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
8.03.2004, 20:55:57
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
9.03.2004, 00:29:46
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]
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
9.03.2004, 11:32:06
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
9.03.2004, 21:46:05
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.