Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][AJAX]Odświeżanie div bez przeładowania
Forum PHP.pl > Forum > Przedszkole
djtomaszq
Chciałem aby div czatu odświeżał mi się bez przeładowania w ajaxie ale nie wiem jak to ułożyć żeby nie było problemów.

index.php część ajaxowa
  1. var object = false;
  2.  
  3. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  4. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  5.  
  6. function getData(dataSource, divID)
  7. {
  8. if (object.readyState==4 || object.readyState==0)
  9. {
  10. var obj = document.getElementById(divID);
  11.  
  12. object.open("GET", dataSource);
  13.  
  14. object.onreadystatechange = function()
  15. {
  16. if (object.readyState == 4 && object.status == 200)
  17. obj.innerHTML= object.responseText;
  18. }
  19. object.send(null);
  20. }
  21. }
  22.  
  23. function odswiezaj()
  24. {
  25. getData('glowna.php','czat');
  26. setTimeout("odswiezaj()", 1000);
  27. }
  28.  
  29. </script>


index.php czesc diva
  1. <script language=javascript>
  2. odswiezaj();
  3. </script>
  4.  
  5. . . . . .
  6.  
  7. <li><a href="index.php?parent=czat">CZAT</a></li>
  8.  
  9. . . . . .
  10.  
  11. CASE "czat":
  12. INCLUDE 'czat/czat.php';
  13. BREAK;


czat.php

  1. <div id="czat"><?
  2.  
  3. srand(time());
  4. $numer = rand(1, 10);
  5. echo $numer;
  6.  
  7. ?></div><?


.htaccess
  1. <Files *.php>
  2. order deny,allow
  3. deny from all
  4. </Files>
  5.  
  6. <Files index.php>
  7. allow from all
  8. </Files>
  9.  
  10. <Files logout.php>
  11. allow from all
  12. </Files>
  13.  
  14. <Files error.php>
  15. allow from all
  16. </Files>
  17.  
  18. <Files glowna.php>
  19. allow from all
  20. </Files>


Chodzi chyba głównie o tą linijkę: getData('glowna.php','czat');

jak wpiszę tak jak jest wyżej to odświeża mi ok ale dlatego że w .htaccess odblokowałem plik glowna.php a TEGO NIE CHCE. Jeśli go zablokuje z powrotem to w divie pokazuje błąd 403..

Jak to rozwiązać odpowiednio ?
kapslokk
Czyli jednocześnie chcesz mieć odblokowany plik glowna.php i zablokowany. tongue.gif
Stwórz w indexie funkcje która bedzie Ci pobierała dane które chcesz wypluć i przez index to wszystko wygrzebuj.
Poza tym
  1. setTimeout("odswiezaj()", 1000);

wydaje mi sie, że powinno być:
  1. setTimeout(odswiezaj, 1000);
djtomaszq
Hmm.. no chce, żeby nie można było wejść bezposrednio na www.domena.pl/pliki/glowna.php ale można było na www.domena.pl/index.php?parent=czat gdzie inlcuduje tylko zawartosc tego pliku pliki/glowne.php ktore beda sie odswiezac na tym divie..
Przy pierwszym wejsciu na tą strone jesli plik glowne.php jest zablokowany strona sie pojawia normalnie ale odswiezona juz z bledem..


Edit.. Teraz to juz nie wiem jak to wszystko wygrzebywac.. smile.gif

Cytat(kapslokk @ 29.07.2015, 20:21:26 ) *
wydaje mi sie, że powinno być:
  1. setTimeout(odswiezaj, 1000);


Bez tego nie odświeża strony.. smile.gif
kapslokk
Czyli w indexie masz coś w stylu:

  1. if($_GET['parent'] == 'czat'){
  2. include_once('glowne.php');
  3. }

tak ?
Jesteś w stanie wrzucić cały plik?
djtomaszq
Tak

  1. <div id="TRESC">
  2. <?
  3. SWITCH ($_GET['parent']){
  4.  
  5. CASE "forum":
  6. INCLUDE 'forum/forum.php';
  7. BREAK;
  8.  
  9. CASE "czat":
  10. INCLUDE 'czat/czat.php';
  11. BREAK;
  12. ... itd


EDIT. Rozumiem, że nikt nie potrafi pomóc...
kapslokk
  1. function odswiezaj()
  2. {
  3. getData('index.php.php?ajax=1&glowna=1','czat');
  4. setTimeout("odswiezaj()", 1000);
  5. }

Index.php na poczatku dodaj sobie
  1. if(isset($_GET['ajax']) && isset($_GET['glowna'])){
  2. include('glowna.php'); exit;
  3. }
djtomaszq
Wyskakuje strona w stronie i do tego error 403

Problem jest z tym kodem chyba

  1. getData('index.php?parent=czat','czat');


Wtedy wyswietla mi w divie "parent=czat" jeszcze raz całą strone index.php a powinno tylko zawartosc pliku czat.php
czyli powinienem wpisać

  1. getData(czat/czat.php','czat');


ale nie moge bo mam zablokowany ten plik w .htaccess a jeśli go odblokuje to bedzie wszystko gralo tylko że wtedy będzie możliwe wejsce na strone www.domena.pl/czat/czat.php co nie może mieć miejsca, nie wiem w którą stronę z tym kombinować... :/
kapslokk
Dlatego w indexie, powinieneś zrobić coś, co jeżeli przekażesz jakieś parametry to wyrzuci Twój czat, a jeśli ich nie przekażesz to normalnie stronę.
djtomaszq
To już nie mam pojęcia jak to spiąć bo Twój pomysł nie działa..
kapslokk
Wrzuć cały kod... Tzn przynajmniej index.php, postaram się coś wykminić smile.gif
djtomaszq
plik glowna.php miesci sie w czat/glowna.php

index.php
  1. <?php
  2. include_once 'config.php';
  3. ?>
  4. <html>
  5. <head>
  6. <title>W</title>
  7. <link rel="Shortcut icon" href="http://cdns2.freepik.com/darmowe-zdjecie/wariant-pi%C5%82ka_318-49974.jpg" />
  8. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  9. <link href="http://localhost/~w/css/style.css" type="text/css" rel="stylesheet" />
  10. <link href="http://localhost/~w/css/style_forum.css" type="text/css" rel="stylesheet" />
  11. <link href="http://localhost/~w/css/style2.css" type="text/css" rel="stylesheet" />
  12.  
  13. <script language=javascript>
  14.  
  15. var object = false;
  16.  
  17. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  18. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  19.  
  20. function getData(dataSource, divID)
  21. {
  22. if (object.readyState==4 || object.readyState==0)
  23. {
  24. var obj = document.getElementById(divID);
  25.  
  26. object.open("GET", dataSource);
  27.  
  28. object.onreadystatechange = function()
  29. {
  30. if (object.readyState == 4 && object.status == 200)
  31. obj.innerHTML= object.responseText;
  32. }
  33. object.send(null);
  34. }
  35. }
  36.  
  37. function odswiezaj()
  38. {
  39. getData('glowna.php','TRESC');
  40. setTimeout("odswiezaj()", 1000);
  41. }
  42.  
  43. </script>
  44.  
  45. </head>
  46. <body>
  47.  
  48. <div id="top">
  49. <div id="NAGLOWEK"><span>Logo</span></div>
  50. <div id="LOGOWANIE"><?php include 'pliki/logowanie.php'; ?></div>
  51. <div id="menu_glowne"><center>
  52. <ul>
  53. <li><a href="index.php?parent=glowna">STRONA GŁÓWNA</a></li>
  54. <li><a href="index.php?parent=forum">FORUM</a></li>
  55. <li><a href="index.php?parent=czat">CZAT</a></li>
  56. <li><a href="#">MECZ</a></li>
  57. <li><a href="#">KONTAKT</a></li>
  58. <li><a href="#">POMOC</a></li>
  59. </ul></center>
  60. </div>
  61.  
  62. <div id="TRESC">
  63. <?
  64.  
  65. SWITCH ($_GET['parent']){
  66.  
  67. CASE "forum":
  68. INCLUDE 'forum/forum.php';
  69. BREAK;
  70.  
  71. CASE "czat":
  72. INCLUDE 'czat/czat.php';
  73. BREAK;
  74.  
  75. CASE "rejestr":
  76. INCLUDE 'pliki/register.php';
  77. BREAK;
  78.  
  79. CASE "logi":
  80. INCLUDE 'pliki/login.php';
  81. BREAK;
  82.  
  83. CASE "profi":
  84. include 'pliki/profile.php';
  85. BREAK;
  86.  
  87. CASE "lista":
  88. INCLUDE 'pliki/userlist.php';
  89. BREAK;
  90.  
  91. CASE "edycja":
  92. INCLUDE 'pliki/editprofile.php';
  93. BREAK;
  94.  
  95. DEFAULT:
  96. include 'glowna.php';
  97. BREAK;
  98. }
  99. ?>
  100. </div>
  101.  
  102. <div id="STOPKA"> Copyright &copy 2015 Theo</div>
  103. </div>
  104. </body>
  105. </html>


glowna.php
  1. <?php
  2. if(!$_SESSION['logged'])
  3. echo '
  4. <div id="REJESTRACJA" style="padding-top: 50px; padding-bottom: 50px; color: #666666; ">
  5. <center>
  6. Musisz się
  7. <a href="index.php?parent=logi">ZALOGOWAĆ</a>
  8. aby mieć dostęp do tej strony!
  9. Nie masz konta? Załóż je
  10. <a href="index.php?parent=rejestr">TUTAJ!</a>
  11. </center>
  12. </div>
  13. ';
  14. else
  15. {
  16. ?>
  17. <div id="czat">
  18.  
  19. <script language=javascript>
  20. odswiezaj();
  21. </script>
  22.  
  23. <?
  24.  
  25. srand(time());
  26. $numer = rand(1, 10);
  27. echo $numer;
  28.  
  29. ?></div><?
  30. }
  31. ?>


smile.gif
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.