Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Otwieranie istniejącej sesji, w "pod pliku"
Forum PHP.pl > Forum > PHP
seba22
Witam,
Temat może trochę wydawać się zdradliwy ale zaraz powiem o co chodzi.

Od 2 godzin, walczę z pewnym debilizmem, i ogołociłem skrypt który napisałem, teraz do zera ( tak wiem głupia metoda, najpierw napisać, potem sprawdzić czy działa), tak wiec rozebrałem go... i doszedłem gdzie jest problem.

Problem jest w tym.

W ogóle koncepcja przyjmuje że identyfikator sesji pobierany jest przez POST i wykonywany w kontekście serwera a nie użytkownika.
( dla tego nie jest pobierany z Cookies)

Więc mamy kod który odbiera ten PHPSSID.
( to działa poprawnie )
a potem funkcja przypisania PHPSSID
( też działa poprawnie )

  1. <?php
  2. if (isset($_POST["PHPSESSID"])) {
  3.        session_id($_POST["PHPSESSID"]);
  4.      
  5.    }
  6.    session_start();
  7. ?>



Wykonałem sobie kontrolę printując do pliku zawartość POST oraz ZAINSTALOWANEJ sesji:
  1. <?php
  2. "$_POST[PHPSESSID] --".session_id()."
  3. ?>


100 % zgodności ! czyli sesja ustawiona poprawnie.

A dostępu do danych nie mam ! :/

Dałem w ramach analizy:
  1. <?php
  2. .var_dump($_SESSION).
  3. ?>


I nic.... nic nie dumpuje... pustka !
Jeżeli sesja jest ustawiona poprawnie, to jakim cudem może mi nie wyświetlać zawartości na serwerze... to moja sesja gdzie mam kilka wartości zapisanych, mój, id, login itp :/

(wszystko dumpuje do pliku .txt takim kodem )

( nie jest on czescia kodu właściwego, to tylko narzędzie diagnostyczne)

  1. <?php
  2. $dane = "$_POST[PHPSESSID] --".session_id()." ".var_dump($_SESSION).".- $name -- $system ".$user[id]."--> ".$_FILES["Filedata"]['name']." bla zalogowany-> ".$_SESSION[zalogowany]."<-zalogowany ";
  3. // przypisanie zmniennej $file nazwy pliku
  4. $file = "/var/www/virtual/pornthunder/htdocs/klaster/1342/nastolatki/fastdevices/ramdrive/test.txt";
  5. // uchwyt pliku, otwarcie do dopisania
  6. $fp = fopen($file, "a");
  7. // blokada pliku do zapisu
  8. flock($fp, 2);
  9. // zapisanie danych do pliku
  10. fwrite($fp, $dane);
  11. // odblokowanie pliku
  12. flock($fp, 3);
  13. // zamknięcie pliku
  14. fclose($fp);
  15. ?>
shine
fajnie ze utworzyles sesje ale zeby miec dostep do pewnych danych trzeba tez pewne zmienne w tablicy sesji ustawic

najprosciej po inicjalizacji sesji, np:

  1. <?php
  2. $_SESSION['ukryta_tresc'] = true;
  3. ?>


i wtedy dopiero wszedzie gdzie tresc jest niedostepna dla niezalogowanych musisz dac warunek

  1. <?php
  2. if($_SESSION['ukryta_tresc'] == true)
  3. {
  4.        echo 'ukryta tresc';
  5. }
  6. else
  7. {
  8.        echo 'brak dostepu';
  9. }
  10. ?>
seba22
Nie zrozumiałeś mnie.
To sesja użytkownika, który siedzi na stronie www, i jest zalogowany.

W tym wypadku ja, i mam te dane w sesji, wpisane...

Inicjuje te sesje w osobnym pliku, wykonuje z poziomu flasha (SWF_UPLOAD), i kicha...

To nie wina SWF upload, bo sesja jest inicjowana, i to w dodatku poprawnie...

Ale nie mam danych, które są przypisane do sesji !

Więc potrzebuję pomocy...

Wiesz, mam dane w sesji, inicjuje ją, i nie mam tych danych które w innym pliku, cały czas mam !
Cały czas jestem zalogowany, mam stan OK, failed, wszystkie wpisy,w normalnym skrypcie działają poprawnie.
A kiedy wywołam je w innym pliku, to już fail... nie mam dostępu...
Nie mam pojęcia czego to jest wina.

Mówię, głupieje, idiotyzm tego powoduje iż pragnę sądzić że to jakiś błąd :/
shine
mi czasami w takich przypadkach pomagalo odpalanie we wszystkich includowanych plikach session_start() pomimo tego ze bylo juz w glownym
seba22
Ale to nie includowany plik.


STRONA GŁOWNA -> include podstrony UPLOAD

( na podstronie UPLOAD mam formularz we flashu, wysyłający plik, do pliku STAND ALONE ( sam plik, zwykły, nie includowany, sam, solo, nic, bez niczego, bez dodatków )

więc formularz wywołuje plik
./upload.php


Tak wywołany plik, nie będzie miał SESJI użytkownika.

Więc w formularzu flash, w polu PHPSSID wygenerowałem identyfikator usera.
session_id();


I taki identyfikator wysłałem, wraz ze plikiem (wgrywanym) do pliku -> upload.php

upload.php odbiera identyfikator
session_id();
i ustawia go, jako właściwy dla tej sesji.

Dzięki temu, powinienem móc zweryfikować czy użytkownik, ma prawo wgrywać pliki, czy nie.

To logiczne chyba, że zabezpieczenie musi być po stronie serwera, bo inaczej ktoś by zrobił własny formularz i by ominął wszystko.

Dla tego to jest wymagane, żebym uzyskał dostęp do tej sesji... tak żebym mógł tam wykonać operacje w stosunku do użytkownika.

Proszę o pomoc !

----------------------------------------------------
----------------------------------------------------

Witam ponownie,

Od rana siedzę, nad ustaleniem miejsca problemu.
Doszedłem do następującego wniosku, że chyba źle przypisuje sesję.

Proszę spojrzeć, utworzyłem następujący kod:



Na sztywno przypisuje identyfikator sesji, który posiadam.
Oto efekt.

W Firefoksie, ten identyfikator sesji, znajduje się w cookies ( działa ) w operze, gdzie identyfikatora sesji nie ma w cookies, ale przypisuje go TYM SAMYM kodem, potwierdza mi przypisanie, ale tablica jest pusta.



Z cookies działa, z session_id(identyfikator) nie działa już :/
erix
A jeśli robisz z ciastkami, to w którym miejscu ustawiasz? Tzn. ścieżka do skryptu ustawiającego; patrz: session_set_cookie_params" title="Zobacz w manualu PHP" target="_manual.
seba22
Ale ja nie chce w ogóle ciasteczek.

Ten plik, ma się wykonać względem sesji którą prześle POST-em, niezależnie jaka będzie treść PHPSSID w cookies.


Siedzę już nad tym, kilka godzin...


  1. <?php
  2.  
  3. // session_start();
  4.  //session_destroy();
  5. //session_unset();
  6.    // Work-around for setting up a session because Flash Player doesn't send the cookies
  7.    if (isset($_POST["PHPSESSID"]))
  8.    {
  9. session_id($_POST["PHPSESSID"]);
  10.    }
  11.  
  12. //session_start();
  13. ?>


Takie coś działa poprawnie pod IE8.

Pod firefoksem nie widzi sesji...



Ktoś mnie będzie miał na sumieniu.,, :/
megawebmaster
A co z akceptowaniem sesji spoza cookie? Jest takie zabezpieczenie serwera, może jest włączone?
seba22
Mam confignięte tak:

Kod
; Whether to use cookies.
session.use_cookies = 1

;session.cookie_secure =

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 1.
session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 1296000

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
session.cookie_httponly =

; Handler used to serialize data.  php is the standard serializer of PHP.
session.serialize_handler = php


Jak widzisz dla wszystkich domen poprawne, httponly brak :/ domaina brak :/
normalnie nie wiem :/
erix
A session.use_trans_sid?

Cytat
Ale ja nie chce w ogóle ciasteczek.

Masz jakiś argument?
seba22
TRANS - jest do przekazywania urlem phpssida.
po GECIE... dla non cokie browserów.

My tu mówimy o innej sprawie...
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.