• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Operacje a cookie php/javascript

Mały hosting, OGROMNE możliwości
0 głosów
1,165 wizyt
pytanie zadane 4 października 2017 w PHP przez Raster22 Obywatel (1,640 p.)

Siema. Celem tego jest wysłanie cookie, odebranie go i wstawienie do pewnego ifa. Więc tak.Na początku wysyłałem cookie przez JS     document.cookie  a później odbierałem go przez php (zmienna z kodem JS który odbiera cookie i wyswietla). Gdy dawałem echo $zmienna_z_cookie wyswietliła się zawartośc ale jak już wstawiałem w petle to nie działało. Kod:

<button onclick="wyslij_pl()" href="index.php">Polski</button> 
 <button onclick="wyslij_en()" href="index.php">English</button> 
 <script type="text/javascript">
	function wyslij_pl(){
	document.cookie = 1; 
	window.setInterval(location.reload(true), x);
	}
	function wyslij_en(){
	document.cookie = 2; 
	window.setInterval(location.reload(true), x);
	}
$jezyk =  '<script type="text/javascript"> var x = document.cookie; document.write(x)</script>';

Więc domyślam sie ze to co zrobiłem nie pobiera takiej prawdziwej wartości i tu właśnie pytanie. Finalnie tak czy siak musze wartość mieć w php`ie. Macie jakieś pomysły co moge zrobić? Najlepiej jakbym mógł wyslać cookie przez php`a ale chyba tak sie nie da...

komentarz 4 października 2017 przez Ehlert Ekspert (215,210 p.)
Musiałbyś doinstalować V8 do php, żeby interpretować js w locie. Podobno da się.

http://php.net/manual/en/book.v8js.php
komentarz 4 października 2017 przez Raster22 Obywatel (1,640 p.)
A innego sposobu nie ma ?
komentarz 4 października 2017 przez Ehlert Ekspert (215,210 p.)

$_COOKIES

komentarz 4 października 2017 przez Comandeer Guru (607,960 p.)

Musiałbyś doinstalować V8 do php, żeby interpretować js w locie. 

O.o 

2 odpowiedzi

0 głosów
odpowiedź 4 października 2017 przez Comandeer Guru (607,960 p.)

Bo źle używasz document.cookie, które ma bardzo specyficzną składnię. Jak jej nie stosujesz, to nie działa.

Poza tym nie zapominaj, że ciasteczka są parą klucz → wartość, a Ty traktujesz document.cookie wyłącznie jako miejsce do przechowywania wartości.

W PHP do ustawiania ciasteczek jest funkcja setcookie, która jest o wiele bardziej przyjazna.

komentarz 5 października 2017 przez Raster22 Obywatel (1,640 p.)
Wiem że setcookie jest lepsza ale jak ją wysłać za pomocą buttona?
komentarz 5 października 2017 przez Comandeer Guru (607,960 p.)
Można zrobić z tego zwykły formularz i serwer sobie ustawi ciasteczko na podstawie wysłanych danych.
komentarz 5 października 2017 przez Raster22 Obywatel (1,640 p.)
mógłbyś bardziej wyjasnić?
komentarz 5 października 2017 przez Comandeer Guru (607,960 p.)
<form>
    <button name="lang" value="pl">Polski</button>
    <button name="lang" value="en">Angielski</button>
</form>

I po stronie serwera ustawiasz w ciasteczku wartość $_GET['lang'].

komentarz 5 października 2017 przez Raster22 Obywatel (1,640 p.)
Nie rozumiem. daje ten form i to już mi wysyła ciasteczko?  2. Potrzebuje jeszcze odświeżyć stronę. Zrobię to bez js?
komentarz 5 października 2017 przez Comandeer Guru (607,960 p.)

po stronie serwera ustawiasz w ciasteczku wartość $_GET['lang']

 

komentarz 5 października 2017 przez Raster22 Obywatel (1,640 p.)
ok dzięki!
komentarz 5 października 2017 przez Raster22 Obywatel (1,640 p.)
a tak zapytam. Do tego mogę dodać jeszcze onclick? Chodzi o to czy button bedzie mogl wyslac ciastko + wykonać funkcje?
komentarz 5 października 2017 przez Comandeer Guru (607,960 p.)

No można, chociaż lepiej w takim wypadku byłoby się podpiąć pod submit formularza.

0 głosów
odpowiedź 5 października 2017 przez Raster22 Obywatel (1,640 p.)
<button onclick="wyslij_pl()" href="index.php">Polski</button> 
 <button onclick="wyslij_en()" href="index.php">English</button> 
 <script type="text/javascript">
	function wyslij_pl(){
	
	var cookie_pl = '<?php setcookie("jezyk", "pl", time()+3600); ?>';
	document.cookie = cookie_pl;
	window.setInterval(location.reload(true), x);
	}
	function wyslij_en(){
	var cookie_en = '<?php setcookie("jezyk", "en", time()+3600); ?>';
	document.cookie = cookie_en;
	window.setInterval(location.reload(true), x);
	}

zrobiłem coś takiego, jak daje echo $_COOKIE['jezyk']; to cały czas wartośc jest en. Klikam w PL i dalej jest en, wiecie może dlaczego ak jest?

Podobne pytania

+2 głosów
1 odpowiedź 1,031 wizyt
pytanie zadane 16 kwietnia 2021 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
1 odpowiedź 731 wizyt

93,718 zapytań

142,631 odpowiedzi

323,262 komentarzy

63,266 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...