Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]+[JS] Zapytanie SQL w JS, Ciągłe wywoływanie ostatniego zapytania...
peja1990
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Witam, piszę skrypt, który ma odpowiadać za zmianę języka witryny dla danego użytkownika serwisu (oparcie o adres IP dla gości) i mam pewien problem, gdyż mam do wyboru 3 języki (PL,EN,DE).
Chcę aby po kliknięciu w jedną z flag wysunęło się okienko w dolnym rogu witryny (pozycja fixed), gdzie pojawia się tekst o wyborze języka, informacja o ładowaniu języka itp.
To zrobiłem i działa bez zarzutu ale problem tkwi w tym, że do każdego skryptu dodałem zapytanie SQL, które ma update'ować rekord danego użytkownika np. gdy jego aktualny język to "pl", a kliknie w flagę angielską to zapytanie ma z'update'ować rekord dla jego IP w komórce "lang" z "pl->en".

Mój kod wygląda tak:
  1. <script type="text/javascript">
  2. // Język niemiecki
  3. $(document).ready(
  4. function() {
  5. $(".lang_de").click(
  6. function() {
  7. $(".popup").slideDown();
  8. setInterval(function() {
  9. $(".popup").slideUp();
  10. }, 6000);
  11. var sql = ['<?php mysql_query('UPDATE guests SET lang="de" WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"') or die (mysql_error()); ?>'];
  12. var contents = ['<?php echo $LANG['popup']['lang']['load']; ?>', '<?php echo $LANG['popup']['lang']['change']['de']; ?>'];
  13. var current = 0;
  14. setInterval(function() {
  15. document.getElementById('load_content').innerHTML = contents[current++];
  16. document.getElementById('load_sql').innerHTML = sql;
  17. }, 2000);
  18. setInterval(function() {
  19. parent.location='<?php $PHP_SELF; ?>';
  20. }, 8000);
  21. });
  22. });
  23. // Język angielski
  24. $(document).ready(
  25. function() {
  26. $(".lang_en").click(
  27. function() {
  28. $(".popup").slideDown();
  29. setInterval(function() {
  30. $(".popup").slideUp();
  31. }, 6000);
  32. var sql = ['<?php mysql_query('UPDATE guests SET lang="en" WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"') or die (mysql_error()); ?>'];
  33. var contents = ['<?php echo $LANG['popup']['lang']['load']; ?>', '<?php echo $LANG['popup']['lang']['change']['en']; ?>'];
  34. var current = 0;
  35. setInterval(function() {
  36. document.getElementById('load_content').innerHTML = contents[current++];
  37. document.getElementById('load_sql').innerHTML = sql;
  38. }, 2000);
  39. setInterval(function() {
  40. parent.location='<?php $PHP_SELF; ?>';
  41. }, 8000);
  42. });
  43. });
  44. // Język polski
  45. $(document).ready(
  46. function() {
  47. $(".lang_pl").click(
  48. function() {
  49. $(".popup").slideDown();
  50. setInterval(function() {
  51. $(".popup").slideUp();
  52. }, 6000);
  53. var sql = ['<?php mysql_query('UPDATE guests SET lang="pl" WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"') or die (mysql_error()); ?>'];
  54. var contents = ['<?php echo $LANG['popup']['lang']['load']; ?>', '<?php echo $LANG['popup']['lang']['change']['pl']; ?>'];
  55. var current = 0;
  56. setInterval(function() {
  57. document.getElementById('load_content').innerHTML = contents[current++];
  58. document.getElementById('load_sql').innerHTML = sql;
  59. }, 2000);
  60. setInterval(function() {
  61. parent.location='<?php $PHP_SELF; ?>';
  62. }, 8000);
  63. });
  64. });
  65. </script>
  66. <div class="top">
  67. <span class="line"></span>
  68. <div class="center">
  69. <div class="box">
  70. <ul class="left">
  71. <li class="log_webmail"><?php echo $LANG['top']['log_webmail']; ?></li>
  72. <li class="log_system"><?php echo $LANG['top']['log_system']; ?></li>
  73. </ul>
  74. <ul class="right">
  75. <li class="lang_de <?php if($GUEST['lang']=='de') {echo 'active';} ?>"></li>
  76. <li class="lang_en <?php if($GUEST['lang']=='en') {echo 'active';} ?>"></li>
  77. <li class="lang_pl <?php if($GUEST['lang']=='pl') {echo 'active';} ?>"></li>
  78. <li><?php echo $LANG['top']['change_lang']; ?></li>
  79. </ul>
  80. </div>
  81. </div>
  82. </div>
  83.  
  84. <div class="popup"><div class="bg"><?php echo $LANG['popup']['lang']['select'].$br.'<div id="load_content"></div>'.'<div id="load_sql"></div>'; ?></div></div>


Wszystko działa ładnie, lecz nie ważne którą flagę kliknę, zawsze wywoływane jest ostatnie zapytanie mySQL, w tym przypadku dla języka PL.
Dla przykładu: mój aktualny język to EN, klikam w DE, a skrypt i tak wywołuje zapytanie dla PL i zmienia mi język na PL a nie na DE.

Próbowałem to robić na wiele sposobów, lecz jeszcze nie udało mi się znaleźć odpowiedniego, dlatego piszę na forum mając nadzieję, że ktoś z Was mi pomoże (IMG:style_emoticons/default/smile.gif)

Za pomoc będę niezmiernie wdzięczny.
Za każdą odpowiedź daję "POMÓGŁ" !

Serdecznie pozdrawiam.
Kamil Dunaj.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kużdo
post
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Nadal nie zrozumiałeś. Po stronie przeglądarki nie powinno być żadnych zapytań mysql, kodów PHP itp, bo jest to niebezpieczne dla Twojego skryptu jak i całego serwera. Przez JS masz przesłać tylko i wyłącznie zmienną która informuje jakąś flagę kliknął user. Nic więcej. Reszta ma odbywać się po stronie serwera, tam gdzie nie ma nikt inny dostępu oprócz admina. Dodatkowo powinieneś filtrować tę zmienną czy aby na pewno zawiera to co planowałeś by zawierała. U ciebie są to dwuliterowe oznaczenia języków, więc możesz stworzyć tablicę zawierającą wszystkie dostępne języki i sprawdzać, czy przesłana zmienna znajduje się w tej tablicy, jeśli tak, to wszystko jest ok.
Go to the top of the page
+Quote Post

Posty w temacie
- peja1990   [PHP]+[JS] Zapytanie SQL w JS   22.09.2011, 12:57:37
- - phpion   Cytat(peja1990 @ 22.09.2011, 13:57:37...   22.09.2011, 13:04:57
- - peja1990   Dobrze mistrzu A jesteś w stanie mi pomóc ?   22.09.2011, 13:07:43
- - nospor   Ogólnie zachęcanie POMOGŁ jest żałosne. Co do tem...   22.09.2011, 13:08:28
|- - peja1990   Cytat(nospor @ 22.09.2011, 14:08:28 )...   22.09.2011, 13:16:23
- - sunpietro   Od siebie tylko dodam, że mieszanie kodu JS i PHP ...   22.09.2011, 13:33:48
- - peja1990   Super, a potrafisz to zrobić tak jak należy i żeby...   22.09.2011, 13:34:44
- - Kużdo   Nadal nie zrozumiałeś. Po stronie przeglądarki nie...   22.09.2011, 15:52:28
- - kpt_lucek   Ja osobiście zrobiłbym to tak: [HTML] pobierz, pl...   22.09.2011, 19:40:42
|- - peja1990   Cytat(kpt_lucek @ 22.09.2011, 20:40:4...   22.09.2011, 20:25:13
- - Kużdo   Po prywatnej korespondencji z peja1990 wiem, że ta...   22.09.2011, 19:52:42
- - kpt_lucek   Cytat(Kużdo @ 22.09.2011, 20:52:42 ) ...   22.09.2011, 19:55:50
- - nospor   Poprawka: <li lang="de" class=...   22.09.2011, 20:31:41
|- - peja1990   Cytat(nospor @ 22.09.2011, 21:31:41 )...   22.09.2011, 20:37:24
- - nospor   Odpal firebuga dla FIrefox i zobacz, czy ci ten aj...   22.09.2011, 20:38:38
|- - peja1990   Cytat(nospor @ 22.09.2011, 21:38:38 )...   22.09.2011, 20:46:42
- - nospor   Naprawdę nie musisz mnie/nas informować o tym. Pop...   22.09.2011, 20:49:46
|- - peja1990   Cytat(nospor @ 22.09.2011, 21:49:46 )...   22.09.2011, 20:52:11
- - nospor   TEn kod: $('li').click(function(){ .....   22.09.2011, 20:55:11
- - Kużdo   Nadal jestem zdania, że jest to zbędne, ponieważ p...   22.09.2011, 21:03:45
|- - peja1990   CytatTEn kod: $('li').click(function(...   22.09.2011, 21:08:49
- - Kużdo   Cytat(peja1990 @ 22.09.2011, 22:08:49...   22.09.2011, 21:28:22
- - peja1990   Cytat(Kużdo @ 22.09.2011, 22:28:22 ) ...   22.09.2011, 22:03:17


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: 4.10.2025 - 17:57