Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie skad pochodza dane?
Forum PHP.pl > Forum > PHP
brekmar
Witam, mam takie pytanie, czy istnieje jakas funkcja w php a raczej czy wogole jest to mozliwe aby sprawdzic skad przywedrowaly dane smile.gif, chodzi mi o to ze mam np strone formularz.html jak sama nazwa wskazuje jest na niej jakis formularz ktory wysyla metoda post dane, no i czy w skrypcie php do ktorego dane leca mozna jakos sprawdzic czy przylecialy z tego formularz.html?
matix
Myślę, że sprawę rozwiąże $_SERVER['HTTP_REFERER'];

Pozdro smile.gif
legorek
Tylko weź pod uwagę to, że niektóre programy (jak np. Norton Internet Security) powodują że przeglądarki nie wysyłają tych danych. O tym decyduje użytkownik. Cytat z manuala:
Cytat
Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.
brekmar
No faktycznie dziala smile.gif, mam Norton Internet Security i jak jest wlaczony to zmienna jest pusta a jak go wylacze to podaje dokladny adres smile.gif
domis86
przy generowaniu formularza daj mu w hidden unikalny token i zapamietaj go w sesji czy gdzies, wtedy gdy przyjdzie request to sprawdzisz czy token byl wygenreowany -> bedziesz wiedzial ze to z twojej strony aarambo.gif
brekmar
a mam pytanie, czy jest taka sama funkcja dla metody GET?
Strzałek
Hmmm, wydaje mi się że mylisz pojęcia. Poczytaj co to jest funkcja, metoda i zmienna winksmiley.jpg

W super globalnej (chyba tak to się nazywa biggrin.gif ) zmiennej $_SERVER przechowywane są różne rzeczy takie jak właśnie referer, numer ip, host itp. Zobacz sobie co tam siebie poprzez:

  1. <?php
  2. echo '<pre>'.print_r($_SERVER, 1).'</pre>';
  3. ?>


Natomiast w $_GET siedzą dane przesłane metodą GET (np. strona.pl/index.php?zmienna_get=wartosc ) Natomiast w $_POST siedzą informacje przesłane metodą ... POST winksmiley.jpg Są to dane przesłane formularzem gdyż tą metodą najczęściej przesyłane są dane z formularzy.
brekmar
nie myle pojec, moznac w formularzu przeciez zrobic method="get" i dlatego pytam czy wysylajac formularzem dane poprzez get tez da sie odczytac z jakiej strony przylecialy

Ok juz wiem, dzieki za pomoc smile.gif
L_Devil
To jest metoda wysyłania formularza, nie funkcja winksmiley.jpg

$_SERVER['HTTP_REFERER']; jest niezależne od obecności formularza, ale ciężko mu zaufać. Zrób tak:

Kod
Plik form.html:

<form method="GET" action="skrypt.php">
<input type="text" name="costam" value="Tu wpisz tekst" />
<input type="hidden" name="refer" value="form.html" />
<button type="submit">Wyślij</button>
</form>

Plik form2.html:

<form method="GET" action="skrypt.php">
<input type="text" name="costam" value="Tu wpisz inny tekst" />
<input type="hidden" name="refer" value="form2.html" />
</form>


Plik skrypt.php:
  1. <?php
  2. switch($_GET['refer'])
  3. {
  4. case 'form.html':
  5.  // formularz przybył z form.html
  6. break;
  7. case 'form2.html':
  8.  // formularz przybył z form2.html
  9. break;
  10. default:
  11. die('nieznany formularz: ' . $_GET['refer']);
  12. break;
  13. }
  14. ?>
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.