Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX] - dublowanie strony
Forum PHP.pl > Forum > Przedszkole
Malpa of Hell
Mam problem z ładowaniem części strony poprzez AJAX'a (advajax).

Problem polega na tym że gdy klika się w odnośnik, strona ładuje tę część którą powinna ładować + dodatkowo to (ponieważ skrypt uznaje ze $_GET jest pusta) co mam jako zabezpieczenie.

Sprawa wygląda tak:

  1. (...)
  2.  
  3. <script type="text/javascript" src="advajax.js"></script>
  4. <script type="text/javascript">
  5. function reload(id) {
  6. advAJAX.setDefaultParameters({
  7.   onInitialization : function(obj) { document.getElementById(obj.tag).innerHTML = "Przygotowywanie..."; },
  8.   onLoading : function(obj) { document.getElementById(obj.tag).innerHTML = "<img src=\"load.gif\">"; },
  9.   onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = obj.responseText; },
  10.   onError : function(obj) { document.getElementById(obj.tag).innerHTML = "Błąd..."; }
  11. });
  12. advAJAX.get({ url: id, tag: "e3" });
  13. }
  14.  
  15.  
  16. (...)
  17.  
  18. <div id="e3">
  19.  <tr><td colspan="3" style="background: url(img/<?php echo strip_tags($_GET['page']); ?>.gif) no-repeat; width: 683px; height: 194px;"></td></tr>
  20.  <tr><td style="background: url(img/layout_13.gif) repeat-y; width: 489px;">
  1. <?php
  2. $page=strip_tags($_GET['page']);
  3. if (empty($page)) { require 'inc/news.php'; } else {
  4. if (file_exists('inc/'.$page.'.php')) {
  5. require 'inc/'.$page.'.php'; } else {
  6. require '404.txt'; }
  7. }
  8. ?>
  9.  
  10. </div>




A linki mają postać:

  1. <a onclick="reload('?page=cośtam')">cośtam</a>




Męczę się z tym od kilku dni i za cholere nie moge znaleść rozwiązania.  worriedsmiley.gif
elpaw
Wpierw zastanów się nad bezpieczeństwem tego skryptu. Wcześniej czy później zauważysz, że w taki sposób załączając pliki z kodem w zależności od wybranej opcji tworzysz dość realne zagrożenie dla bezpieczeńśtwa.
Malpa of Hell
A dodając po file_exists();, basename(); załatwie sprawę bezpieczeństwa?

I może ktoś mi podpowie jak to zrobić żeby strona się nie dublowała.  sadsmiley02.gif
drPayton
Cytat(Malpa of Hell @ 7.10.2008, 21:04:18 ) *
A dodając po file_exists();, basename(); załatwie sprawę bezpieczeństwa?
(...)


Checknij: http://www.hackthissite.org/articles/read/989
Malpa of Hell
No dobra, filtrowanie danych na 99% załatwione, tylko niech ktoś podpowie (googlowanie nauczyło mnie że na tacy to tutaj nie dają) jak do cholery zrobić to z ajax'em.  dry.gif
drPayton
Dobrze rozumiem, że dodaję plik news.php?

Jeśli tak, to możesz np zamiast sprawdzać GET, w plikach dołączanych AJAX'em ustawić jakąś zmienną, a w php sprawdzać czy ona istnieje i na tej podstawie decydować czy te news.php pokazać czy też nie...
Malpa of Hell
Obecnie kod ma taką postać:

  1. <?php
  2.  foreach($_GET as $name=>$value){
  3.  $_GET[$name] = htmlspecialchars($value);
  4.  }
  5.  
  6. $page=strip_tags($_GET['page']);
  7.  
  8. if (file_exists('inc/'.$page.'.php')) {
  9.  
  10.  echo '<tr><td colspan="3" style="background: url(img/'.$page.'.gif) no-repeat; width: 683px; height: 194px;"></td></tr>
  11.  <tr><td style="background: url(img/layout_13.gif) repeat-y; width: 489px;">';
  12.  
  13. require 'inc/'.$page.'.php'; } else {
  14. require '404.txt'; }
  15. ?>



Lecz nadal nie działa tak jak powinno...

A w ajaxie jest zmienna
  1. reload('?page=cośtam');
Więc dalej nie kapuje o co chodzi

Inaczej zmiennej to chyba dodać nie potrafie do linku...
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.