Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Blokada wykonania skryptu
Forum PHP.pl > Forum > PHP
mike
Witam,

Proszę was o poradę. Oto sytuacja, którą mam (w skrócie):
index.html
Kod
<script type="text/javascript">
    function goAction()
    {
        advAJAX.get({
            url: "action.php",
            onSuccess : function( obj )
                        {
                            document.getElementById( 'contentContainer' ).innerHTML = obj.responseText;
                        },
            onError : function( obj )
                      {
                          document.getElementById( 'contentContainer' ).innerHTML = 'Nie udało się wczytać danych.';
                      }
        });

        return false;
    }
</script>

<a href="#" onclick="goAction();">załaduj dane</a>
<div id="contentContainer">
test
</div>


action.php
  1. <?php
  2.  
  3. echo 'jakieś dane załadowane przez php';
  4.  
  5. ?>


Jak widać dzięki obiektowi advAJAX klinięcie w link spowoduje załadowanie danych do elementu <div>.

I teraz moje pytanie:
Macie pomysł jak zabezpieczyć plik action.php żeby wykonanie jego było możliwe tylko po wywołaniu "ajaxowym".
Bo przecież równie dobrze mogę sobie wkleić link do pliku action.php do URL'a i zobaczyć jego działanie bezpośrednio. A tego właśnie chcę uniknąć.

Pozdrawiam
hwao
ciezka sprawa winksmiley.jpg

Mozesz sprawdzac w $_SERVER skad user przyszedl, badz tez wysylac jakies dane extra ajaxem (co prawda zawsze da sie to obejsc, ale innego wyjscia nie ma) lub zwraca dane zaszyfrowane jakos i w js rozszyfrowywac.
mike
Problem nurtował mnie na tyle, że postanowilem zapytać twórcę advAJAX'a.
I odpowiedź jest taka:
Nie da się winksmiley.jpg
To zawsze będzie żądanie przeglądarki i zawsze będzie jakos można podejrzeć wyniki.

Postanowiłem więc sprawić, że bedzie to jak najtrudniejsze i:
1. Wysyłam żądanie za pomoca metody POST;
2. Sprawdzam czy wśród parametrów istnieje i jest ustawiony (mniejsza o wartość) parametr uniqueParameter (Ci którzy znają biblioteke advAJAX wiedzą co to jest winksmiley.jpg )

P.S.
~hwao też myślałem że $_SERVER mi pomoże, niestety wygląda ona tak samo przy obu żądaniach
sobstel
nie jestem jakos specjalnie zaznajomiony z ajaxem i nie jestem pewny czy to by pomoglo, ale mozna np. ustawic cookie (w ajaxowym kliencie), ktore skrypt ajaxowego serwera sprawdza i na koncu usuwa. albo poprzez token trzymany w sesji.

np. cookie moze byc ustawiane poprzez js zaraz przed wyslaniem żądania do serwera i usuwane przez sam skrypt serwera albo po prostu po odebraniu odpowiedzi.
hwao
Cytat(mike_mech @ 2006-01-05 19:12:21)
P.S.
~hwao też myślałem że $_SERVER mi pomoże, niestety wygląda ona tak samo przy obu żądaniach

ale wysylaja zadanie mozesz dodawac naglowki.
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.