Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja $_SESSION["####"]
Forum PHP.pl > Forum > Przedszkole
Babcia@Stefa
Witam, mam pewien problem z sesją w sęsie że gdy np. loguje się z jednej strony która ma np w skrypcie panelu admina
  1. <?php
  2. if(!isset($_SESSION["auth_username"])) {
  3. ?>


a ma hasło np 123/123 a druga strona ma taką samą sesję tylko hasło 1/1 to gdy na jednej się zaloguje to na drugą mogę wejść bez logowania worriedsmiley.gif

(Niewiem czy na innym hoscie też tak jest)

  1. <?
  2. if(!isset($_SESSION["auth_username"])) {
  3. echo "Najpierw się zaloguj!";
  4. }
  5. else {
  6. ?>
  7. ...
  8. <?
  9. }
  10. ?>


I jak zrobić aby pole
  1. <?php
  2. if(!isset($_SESSION["-->auth_username<--"])) {
  3. ?>
było konfiguralne przez config.php?

Fragment logowania:

  1. <?php
  2. require_once("../config.php");
  3.  
  4. $login = $adminid;
  5. $haslo = $adminpass;
  6.  
  7. if (!$_POST["username"] or !$_POST["password"]) {
  8. echo "<a href='index.php'>Nie wypełniłe&para; wszystkich pól!</a>";
  9. }
  10.  
  11. if ($_POST["password"] == $haslo && $_POST["username"] == $login) {
  12. echo '<br><br><br><br><br><br><br><br><br><br><br><br><br><center>Prosze czekac...</center>';
  13. $_SESSION["auth_username"] = $_POST["username"];
  14. echo "<script type='text/javascript'>function go() { location.href='main'; }</script>";
  15. echo "<script type='text/javascript'>window.onload=go</script>";
  16. ?>


@Edit
Why niema odpowiedzi? to takie trudne sad.gif

Dziękuję, Babcia@Stefa
MagnuM
Nie ma odpowiedzi, ponieważ pytanie jest ciężko sformułowane. Np. w ogóle nie wiem o co chodzi w pierwszej części postu. Mogę się tylko domyślać.

Powodem może być to, że nie przekazujesz SESSION_ID w url, czy przez ciastko, czy jakkolwiek inaczej. Poszukaj na forum jak wykonać prawidłowe uwierzytelnianie.
rama
Racja, ciężko jest zrozumieć o co chodzi, aczkolwiek postaram się odpowiedzieć, bazując na moich spekulacjach smile.gif

1. Zacznę od pierwszej kwestii, czyli ogólnie o sesji/sesjach...
Gdy użytkownik wywoła stronę na której uruchamiany jest mechanizm sesji, to tworzona jest unikalna (jedna) sesja, gdzie można zapisywać dane i owa sesja jest dostępna w obrębie serwera/serwisu (chyba trochę wyolbrzymiłem tak pisząc).
Wracając teraz do Twojego problemu, to jeśli użytkownik zaloguje się na jednej stronie i przejdzie na inną - na przykład tworzony przez Ciebie panel administracyjny - to również będzie miał do niej dostęp, ponieważ zakładam, że mechanizm weryfikacji użytkownika jest taki sam, czyli sprawdzenie wyłącznie czy istnieje $_SESSION['auth_username'].
Rozwiązaniem tego problemu może być napisanie "kodu", który będzie odpowiedzialny za sprawdzanie uprawnień do strony i wówczas jeden użytkownik będzie mogł wejść na jedną i drugą stronę, a inny user wyłącznie na jedną smile.gif

Przykład (koncept):
  1. <?php
  2. /* Założenie: Skrypt logowania dodaje do sesji "wartość uprawnienia", którą będzie $_SESSION['is_admin'],
  3.  * posiadająca dwie wartości: true - jesli ma uprawnienia; false - jeśli ich nie posiada.
  4.  */
  5.  
  6. if(is_set($_SESSION['is_admin']) && $_SESSION['is_admin'] == true) {
  7. /* kod strony*/ 
  8. } else { 
  9. /* nie masz uprawnien */ 
  10. }
  11. ?>


2. Aby jakakolwiek zmienna należąca do sesji (w tym owy przykład z $_SESSION['auth_username']) była konfiguralna z pliku config.php musisz najpierw uruchomić system sesji (session_start()) i dopiero po tym zincludować plik konfiguracyjny, który będzie miał już zapewniony dostęp do sesji.
Athlan
1. A może on po prostu ma sesje o tym samym identyfikatorze?

2. Może miej swoje haslo w pliku config.php i includuj je, po czym sprawdzaj : if($_SESSION['IDENTYFIKATOR'] == $configPass)

gdzie $configPass to hasło z konfigu

pozdrawiam smile.gif
Babcia@Stefa
Diękuję za odpowiedź, myślę że odpowiedź z przed ostatniego i ostatniego postu będzie poprawnie działać winksmiley.jpg

@Athlan

Ale to hasło to nazwa sesji?

@edit

Coś niedziała tak :/
rama
Cytat(Babcia@Stefa @ 3.08.2006, 17:44 ) *
Coś niedziała tak :/

To znaczy? smile.gif

PS Podczas debugowania skryptu warto na początku owego skryptu załączyć inny tryb wyświetlania błędów, czyli error_reporting
  1. <?php
  2. error_reporting( E_ALL );
  3. ?>
Athlan
Cytat
@Athlan

Ale to hasło to nazwa sesji?


@Babcia@Stefa - nie... to jej wartość, np:

$_SESSION['haselko'] = 'TOKIO HOTEL';

btw: sory że wzomniałem o tym zespole ale mam zamółe i nic lepszego nie umiemlem wymyśleć tongue.gif

pozdro smile.gif
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.