Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [AJAX][PHP]Problem z przekazaniem zmiennej z sesji
qbas-s
post 4.03.2013, 00:54:47
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


W głównej klasie do sesji wczytuję pewną wartość:
  1. $_SESSION['user_id'] = $user_id;


następnie po kliknięciu w button za pomocą JQuery pobieram inną klasę w której próbuję pobrać wartość z sesji - niestety nic mi się nie wyświetla. Dodanie w drugiej klasie session_start() nie pomaga.
Pomyślałem, że sprawę może załatwi dziedziczenie po pierwszej klasie ale wyrzuca: Internal Server Error

Z pewnością problem by rozwiązało przekazanie wartości sesji w polu typu hidden ale zależy mi aby uniknąć tego sposobu.
Jakieś pomysły?smile.gif

Ten post edytował qbas-s 4.03.2013, 00:55:44
Go to the top of the page
+Quote Post
Damonsson
post 4.03.2013, 01:00:01
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Co to ma wspólnego z AJAXem?
Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 14:46:22
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


w tagach nie było JQuery, dla jednego i drugiego wspólne słowo to asynchroniczność wink.gif
Go to the top of the page
+Quote Post
!*!
post 4.03.2013, 14:49:17
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Wartości nie biorą się z kosmosu. Ajax to nic innego jak odwołanie w tle, takie samo jak każde inne. Jak chcesz aby było widoczne, musisz je tak samo wywołać.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 15:00:24
Post #5





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


do dziś myślałem, że jeśli coś wrzucam do sesji to w pewnym przedziale czasu jest dostępne w całym skrypcie - tak min działają niektóre koszyki w sklepach, więc nie rozumiem dlaczego ta wartość nie jest dostępna w pliku wczytanym asynchronicznie?

Ten post edytował qbas-s 4.03.2013, 15:01:21
Go to the top of the page
+Quote Post
nospor
post 4.03.2013, 15:02:29
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A startujesz sesję w pliku wczytanym asynchronicznie?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
!*!
post 4.03.2013, 15:08:09
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


skrypt.php
  1. //deklaracja sesji
  2. if(isset(post))
  3. {
  4.  
  5. //cokolwiek
  6.  
  7. if(is_ajax())
  8. {
  9. /// WOW odwolanie przez ajax
  10. return true; // zwracasz dane, czy co tam chcesz
  11. }
  12. else
  13. {
  14. // tu skrypt dziala normalnie gdy nie ma odwolania przez ajax
  15. }
  16.  
  17. }


Jak robisz to inaczej, to robisz coś źle wink.gif


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 15:57:47
Post #8





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


@nospor tak deklaruję session_start() w kontstruktorze klasy którą asynchronicznie wczytuje, dla pewności ustawiam też session_save_path($katalog). @!*! JQuery dba o to aby plik pobierany był tak jak napisałeś
Go to the top of the page
+Quote Post
nospor
post 4.03.2013, 15:58:40
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A konstruktor tej klasy się odpala...? Może pokaż kod, bo to nie ma co wróżyć z fusów.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 16:14:08
Post #10





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


odpala się.
Buduję aplikację z użyciem Kohany 3.2 a w niej odpalam skrypt do upload'u plików graficznych:
http://blueimp.github.com/jQuery-File-Upload/
klasa która się wczytuje w tle znajduję się w server/php/UploadHandler.php

początek konstruktora na moje potrzeby w tej klasie zmodyfikowałem tak:
  1. function __construct($options = null, $initialize = true) {
  2. $this->options = array(
  3. 'script_url' => $this->get_full_url() . '/',
  4. 'upload_dir' => '/var/www/www.pl/web/sc/public/static/profil_photo/' . $_SESSION['user_id'] . '/', //dirname($_SERVER['SCRIPT_FILENAME']).'/files/',
  5. 'upload_url' => '/public/static/profil_photo/' . $_SESSION['user_id'] . '/',


Wszystko działa pięknie prócz przemycenia id użytkownika w sesji - pliki mają być ładowane do folderu o nazwie $_SESSION['user_id']

Ten post edytował qbas-s 5.03.2013, 12:36:12
Go to the top of the page
+Quote Post
!*!
post 4.03.2013, 16:16:20
Post #11





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


To jest konstruktor który odpala się też przez ajax? Pokaż jeszcze kod JS.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 16:23:48
Post #12





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


pliki ładują się na serwer w pełni asynchronicznie - gdyby ajax nie odpalał konstruktora to skrypt nie miałby dostępu do indexu 'upload_dir' tablicy w konstruktorze co skutkowało by błędem w uploadzie a tak nie jest.

  1.  
  2. /*jslint nomen: true, unparam: true, regexp: true */
  3. /*global $, window, document */
  4.  
  5. $(function () {
  6. 'use strict';
  7.  
  8. // Initialize the jQuery File Upload widget:
  9. $('#fileupload').fileupload({
  10. // Uncomment the following to send cross-domain cookies:
  11. //xhrFields: {withCredentials: true},
  12. url: 'server/php/'
  13. });
  14.  
  15. // Enable iframe cross-domain access via redirect option:
  16. $('#fileupload').fileupload(
  17. 'option',
  18. 'redirect',
  19. window.location.href.replace(
  20. /\/[^\/]*$/,
  21. '/cors/result.html?%s'
  22. )
  23. );
  24.  
  25. if (window.location.hostname === 'blueimp.github.com') {
  26. // Demo settings:
  27. $('#fileupload').fileupload('option', {
  28. url: '//jquery-file-upload.appspot.com/',
  29. maxFileSize: 5000000,
  30. acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
  31. process: [
  32. {
  33. action: 'load',
  34. fileTypes: /^image\/(gif|jpeg|png)$/,
  35. maxFileSize: 20000000 // 20MB
  36. },
  37. {
  38. action: 'resize',
  39. maxWidth: 1440,
  40. maxHeight: 900
  41. },
  42. {
  43. action: 'save'
  44. }
  45. ]
  46. });
  47. // Upload server status check for browsers with CORS support:
  48. if ($.support.cors) {
  49. $.ajax({
  50. url: '//jquery-file-upload.appspot.com/',
  51. type: 'HEAD'
  52. }).fail(function () {
  53. $('<span class="alert alert-error"/>')
  54. .text('Upload server currently unavailable - ' +
  55. new Date())
  56. .appendTo('#fileupload');
  57. });
  58. }
  59. } else {
  60. // Load existing files:
  61. $.ajax({
  62. // Uncomment the following to send cross-domain cookies:
  63. //xhrFields: {withCredentials: true},
  64. url: $('#fileupload').fileupload('option', 'url'),
  65. dataType: 'json',
  66. context: $('#fileupload')[0]
  67. }).done(function (result) {
  68. $(this).fileupload('option', 'done')
  69. .call(this, null, {result: result});
  70. });
  71. }
  72.  
  73. });


w folderze server/php/ jest index.php który odpala klasę wyżej

Ten post edytował qbas-s 4.03.2013, 16:30:04
Go to the top of the page
+Quote Post
!*!
post 4.03.2013, 16:28:15
Post #13





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Użyj odpowiednich tagów na forum.
Zmieniłeś te wartości na swoje?
JS to tylko dodatek, masz przez ajax odwołać się do skryptu dokładnie tak samo jakbyś to robił wpisując adres w przeglądarce.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 16:35:08
Post #14





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


nie ma tagu JS więc początkowo ustawiłem na Manual a teraz na HTML:)

jedyne co zmieniłem w tym JS to ścieżkę do klasy w:
  1. $('#fileupload').fileupload({
  2. // Uncomment the following to send cross-domain cookies:
  3. //xhrFields: {withCredentials: true},
  4. url: 'server/php/'
  5. });


i wszystko działa ślicznie prócz odczytu wartości z sesji - nawet nie mogę użyć wbudowanego systemu obsługi sesji Kohany bo dziedziczenie po innej klasie wywala Internal Server Error
Go to the top of the page
+Quote Post
!*!
post 4.03.2013, 16:39:27
Post #15





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Jest tag JavaScript.

Podaj pełną ścieżkę do skryptu. Opierasz to tylko JS? IMO nie ustalasz sesji w ogóle, tylko inicjujesz klasę asynchronicznie bezpośrednio.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 16:52:39
Post #16





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


mam tylko 5 tagów i żaden z nich nie jest JS. Podałem pełną ścieżkę do klasy i to samo

Cytat
IMO nie ustalasz sesji w ogóle, tylko inicjujesz klasę asynchronicznie bezpośrednio

co masz na myśli?

sesje inicjuję wcześniej w klasie kohany i tam też następuje zapisanie user id do niej.

Ten post edytował qbas-s 4.03.2013, 16:53:18
Go to the top of the page
+Quote Post
!*!
post 4.03.2013, 16:57:38
Post #17





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


To wpisuj z palca [javascript].

Skrypt ma działać tak jak opisałem wyżej. Spróbuj zrobić do niego odwołanie na czysto w JQuery.ajax, aby sprawdzić czy działa. Jak tak, to problem leży po stronie tamtego kodu, a jak nie, to wina leży po Twojej wink.gif

Sesje inicjujesz w klasie kohany, ale czy ją wywołujesz razem ze skryptem do którego odwołujesz się asynchronicznie?

Ten post edytował !*! 4.03.2013, 16:58:53


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
qbas-s
post 4.03.2013, 17:00:58
Post #18





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


Cytat
Sesje inicjujesz w klasie kohany, ale czy ją wywołujesz razem ze skryptem do którego odwołujesz się asynchronicznie?


jak takie odwołanie wygląda?
Go to the top of the page
+Quote Post
!*!
post 4.03.2013, 17:16:40
Post #19





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Ścieżka do skryptu == odwołanie do niego.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
qbas-s
post 5.03.2013, 01:12:36
Post #20





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


skrypt uploadu jest wczytywany do widoku właśnie przez kontroler w którym jest zapisywana wartość do sesji. Dziedziczenie po tej klasie tak jak już wspominałem wyrzuca Internal Server Error - wywołanie bezpośrednio w tle tej nadrzędnej klasy chyba by nie było dobrym pomysłem



EDIT:
skrypt ładowany w tle nie odczytuje też cookies

Ten post edytował qbas-s 5.03.2013, 01:11:59
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:47