Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery][php] Przekazanie zmiennej, a sesja
k0b3
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Witam!

Przymusowo zapoznaje się z frameworkiem jQuery, ponieważ wykorzystuje go do pewnego projektu.
Po woli odkrywam potencjał tego skryptu, jednak nadal mam z nim problemy.

Zatrzymałem się na prostej sprawie, mianowicie.
Zależy mi, aby móc przekazac dane do sesji.
Mam taki skrypt w js:
  1. <?php
  2. $('#pan_2').click(function () {
  3. if ($(".pan_2:first").is(":hidden")) {
  4. $(".pan_2").slideDown();
  5.  $("#cover_2").replaceWith('<img id="cover_2" src="images/cover_1.png" />');
  6.  // tu ma nastąpic przesłanie do sesji jakiegoś stringa
  7. } else {
  8. $(".pan_2").slideUp();
  9.  $("#cover_2").replaceWith('<img id="cover_2" src="images/cover_0.png" />');
  10.  // tu ma nastąpic przesłanie do sesji jakiegoś stringa
  11. }
  12. });
  13. ?>


w phpie prosto bym to zrobił:

$_SESSION['xxx'] = 'asd';
w js nie mam pojecia! (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Jeśli się nie da, to jak za pomocą jQuery przesłac zmieną do phpa? Wypełnienie sesji zrobie sobie w php

Czekam na odp, pozdr
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
paziek
post
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

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


Nie znam się na jQuery, więc napiszę jak potrafię

JavaScript
  1. <?php
  2. //przykładowe użycie
  3. send('&co=panel_1&wartosc=1'); //wyśle do test.php wartości: $_POST['co']==='panel_1' oraz $_POST['wartosc']==='1'
  4.  
  5. function send(p) {
  6. try {var http = new XMLHttpRequest();}
  7. catch(e) {http = new ActiveXObject('Microsoft.XMLHttp');}
  8. http.open('post','test.php',true);
  9. http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  10. http.setRequestHeader("Content-length", p.length);
  11. http.setRequestHeader("Connection", "close");
  12. http.send(p);
  13. }
  14. ?>

Przypisać te dwie zmienne do sesji po stronie PHP już chyba dasz radę?
Gdybyś miał problem z przypisaniem ich po stronie JS to pisz.

Co do ich pobierania i użycia przy wejściu jakiejś osoby, to już najlepiej zrobić getem pewnie:
JavaScript
  1. <?php
  2. function getSession() {
  3. try {var http = new XMLHttpRequest();}
  4. catch(e) {http = new ActiveXObject('Microsoft.XMLHttp');}
  5. http.open('get','test.php',true);
  6. http.onreadystatechange=function() {
  7. if(this.readyState===&& this.status===200) {
  8. if(!http.responseXML) {
  9. //koleś nie ma żadnych informacji w sesji na temat ustawień interfejsu
  10. } else {
  11. var d=http.responseXML.documentElement;
  12. var panel_1 = d.childNodes[0].firstChild.nodeValue;//0 lub 1 (string, nie liczba!)
  13. var panel_2 = d.childNodes[1].firstChild.nodeValue;// 0 lub 1 (string, nie liczba!)
  14. //itd.
  15. }
  16. }
  17. }
  18. http.send(null);
  19. }
  20. ?>

test.php
  1. <?php
  2. if($_SERVER['REQUEST_METHOD']==='GET') {
  3.  if($zalogowany) {
  4.  header('Content-type: text/xml; charset=utf-8');
  5.  echo '<?xml version="1.0" encoding="utf-8"?><daneSesji><panel_1>'.$_SESSION['panel_1'].'</panel_1><panel_2>'.$_SESSION['panel_2'].'</panel_2></daneSesji>';
  6.  } else {
  7.  //nie ma sensu nic wysyłać
  8.  }
  9. }
  10. ?>

Ważne aby nie było żadnych spacji między tagami XML, bo Firefox uzna je za (słusznie) jedno z childNodes i klapa.
Można to oczywiście zrobić na różne sposoby w pętlach itp. ale to już sam kombinuj ;-)



ps. ZNACZNIE łatwiej i wydajniej będzie to zrobić w ciasteczkach, do których JavaScript ma bezpośredni dostęp.
Wiążą się z tym jednak dwa problemy:
1. Jeśli koleś jakoś zgubi ciastko, to zgubi też ustawienia. Można więc zapisywać je również do sesji i próbować odtworzyc gdyby je zgubił.
2. Ktoś może ukraść te tajne/poufne informacje o tych skrycie ukrywanych ustawieniach interfejsu (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował paziek 16.08.2008, 12:36:24
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 15:11