Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] pobieranie url do formularza
Forum PHP.pl > Forum > Przedszkole
roghatt
Witam.
Taki przyklad:
mam na stronie przycisk "polec znajomemu" otwiera sie popunder z formularzem gdzie sa dwa pola:
nadawca i e-mail odbiorcy.
Jak zrobic ze po kliknieciu w "polec znajomemu" adres URL strony na ktorej kliknelismy wpisal sie automatycznie w dodatkowe pole w formularzu... zeby osoba emaile dostala adres podstrony ktora mu polecamy.
jest takie cos mozliwe?

plik z linkiem:
  1. <a target="nazwa" href="polec" onclick="window.open('polec.php', 'nazwa', 'width=600,height=460').focus(); return false">
  2. poleć znajomemu</a>


formularz z wyslaniem:
  1. <form method=post action=polec.php>
  2.  
  3. <table>
  4. <tr><td bgcolor=F5F5F5>Nadawca: </td><td><input type=text name=imie class="z"></td></tr>
  5. <tr><td bgcolor=F5F5F5>E-mail odbiorcy: </td><td><input type=text name=email class="z"></td></tr>
  6. <tr><td colspan=2><input TYPE="image" src="wyslij2.gif" name=submit border="0"></td></tr>
  7. </table>
  8. </form>
  9.  
  10. <?php
  11. $od = "From: ".$_POST['imie']." r\n";
  12. $temat_u = "Polecam Ci stronę";
  13. $tresc_u = "Czesc tu ".$_POST['imie']."! Polecam ci ta strone bo jest super ";
  14. if (!empty($email) && preg_match("/@/",$email))
  15.  
  16.   {
  17.      
  18.             mail($email, $temat_u, $tresc_u, $od);
  19.  
  20. echo " <table><tr><td class=\"z\">Dziękujemy za polecenie naszej strony.</td></tr><tr><td><a href=\"java script:window.close()\" class=\"zamknij\"><center>zamknij</center></a></td</tr></table>";
  21.  
  22.    }
  23.  
  24. ?>
batman
Kod
opener.window.location

W tej zmiennej powinna znajdować się wartość z adresu strony, która otworzyła nowe okno. Wystarczy, że zapiszesz tą wartość do formularza.
JoShiMa
Cytat(freelinkz @ 23.10.2008, 10:06:17 ) *
Witam.
Taki przyklad:
mam na stronie przycisk "polec znajomemu" otwiera sie popunder z formularzem gdzie sa dwa pola:
nadawca i e-mail odbiorcy.
Jak zrobic ze po kliknieciu w "polec znajomemu" adres URL strony na ktorej kliknelismy wpisal sie automatycznie w dodatkowe pole w formularzu... zeby osoba emaile dostala adres podstrony ktora mu polecamy.
jest takie cos mozliwe?


  1. <tr><td bgcolor=F5F5F5>E-mail odbiorcy: </td><td><input type="text" name="url" value="<? echo $_SERVER['SCRIPT_FILENAME']?>"></td></tr>


Jeśli potrzebujesz adres wraz z parametrami przekazywanymi przez GET pokombinuj z innymi kluczami superglobalnej tablicy $_SERVER

PS. Wartości atrybutów powinny być w cudzysłowach u Ciebie ich nie ma.
roghatt
Cytat(JoShiMa @ 23.10.2008, 08:57:19 ) *
  1. <tr><td bgcolor=F5F5F5>E-mail odbiorcy: </td><td><input type="text" name="url" value="<? echo $_SERVER['SCRIPT_FILENAME']?>"></td></tr>


Jeśli potrzebujesz adres wraz z parametrami przekazywanymi przez GET pokombinuj z innymi kluczami superglobalnej tablicy $_SERVER

PS. Wartości atrybutów powinny być w cudzysłowach u Ciebie ich nie ma.




znalazlem HTTP_REFERER i tutaj mi wpisalo adres strony wiec pewnie to to... zaraz potestuje na zywo na stronie..


Cytat(JoShiMa @ 23.10.2008, 08:57:19 ) *
  1. <tr><td bgcolor=F5F5F5>E-mail odbiorcy: </td><td><input type="text" name="url" value="<? echo $_SERVER['SCRIPT_FILENAME']?>"></td></tr>


Jeśli potrzebujesz adres wraz z parametrami przekazywanymi przez GET pokombinuj z innymi kluczami superglobalnej tablicy $_SERVER

PS. Wartości atrybutów powinny być w cudzysłowach u Ciebie ich nie ma.



a jednak jest jeden problem bo to dziala tylko pod Mozilla. nie wpisuje mi adresu do pola pod IE.
Jest na to jakis sposob?
JoShiMa
Wyświetl sobie zarówno pod IE jak i pod FF zawartość tablicy $_SERVER i zobaczysz, które pole będzie dla Ciebie najbardziej odpowiednie.

SCRIPT_FILENAME w obu wypadkach wyświetla to samo, a czegoś takiego jak HTTP_REFERER to ja w ogóle nie widzę u siebie.

Jeszcze możesz sklejać:
SERVER_NAME
z
REQUEST_URI
batman
@JoShiMa
SCRIPT_FILENAME - nazwa bieżącego skryptu
HTTP_REFERER - adres z jakiego weszło się na bieżący skrypt. Może być puste, jeśli weszłaś na dany adres bezpośrednio (bez klikania w link).

Jeśli autorowi chodzi o adres, który otworzył okienko, musi użyć HTTP_REFERER. Ja jednak skorzystałbym z obiektu opener w javascript.
JoShiMa
Jeśli do formularza polecającego wchodzi się przez link to faktycznie HTTP_REFERER (przegapiłam jednak) ale wersja przeglądarki nie ma tu wpływu. Może inne błędy powodują kłopoty.
roghatt
Cytat(batman @ 23.10.2008, 10:28:03 ) *
@JoShiMa
SCRIPT_FILENAME - nazwa bieżącego skryptu
HTTP_REFERER - adres z jakiego weszło się na bieżący skrypt. Może być puste, jeśli weszłaś na dany adres bezpośrednio (bez klikania w link).

Jeśli autorowi chodzi o adres, który otworzył okienko, musi użyć HTTP_REFERER. Ja jednak skorzystałbym z obiektu opener w javascript.



wlasnie HTTP_REFERER jedynie jest tu dobrym rozwiazaniem bo on wpisuje adres z jakiego sie weszlo w skrypt. ale to HTTP_REFERER nie dziala pod IE

Przyklad:
http://plan.pl/tomek/polec/
tutaj po kliknieciu wyswietla ten adres czyli http://plan.pl/tomek/polec/
I to dziala tylko pod mozilla

A pod IE wszystko jest czyste...
Gdzies czytalem ze pod IE jest z tym problem wlasnie...
innego rozwiazania nie ma?

Cytat(JoShiMa @ 23.10.2008, 10:40:06 ) *
Jeśli do formularza polecającego wchodzi się przez link to faktycznie HTTP_REFERER (przegapiłam jednak) ale wersja przeglądarki nie ma tu wpływu. Może inne błędy powodują kłopoty.


ja niestety bledu nie widze zadnego, nie wiem jak sobie z tym poradzic pod IE

a wyglada to u mnie tak:
  1. <form method=post action=polec.php>
  2.  
  3. <table>
  4. <tr><td bgcolor=F5F5F5>Nadawca: </td><td><input type="text" name="imie" class="z"></td></tr>
  5. <tr><td bgcolor=F5F5F5>E-mail odbiorcy: </td><td><input type="text" name="email" class="z"></td></tr>
  6. <tr><td bgcolor=F5F5F5>Polecany adres URL: </td><td><input type="text" name="url" value="<? echo $_SERVER['HTTP_REFERER']?>"></td></tr>
  7. <tr><td colspan=2><input type="submit" value="Wyslij"></td></tr>
  8. </table>
  9. </form>
  10.  
  11. <?php
  12. $od = "From: ".$_POST['imie']." r\n";
  13. $temat_u = "Polecam Ci stronę";
  14. $tresc_u = "Czesc tu ".$_POST['imie']."! Polecam ci ta strone ".$_POST['url']." bo jest super ";
  15. if (!empty($email) && preg_match("/@/",$email))
  16.  
  17.   {
  18.      
  19.             mail($email, $temat_u, $tresc_u, $od);
  20.  
  21. echo " <table><tr><td class=\"z\">Dziękujemy za polecenie naszej strony.</td></tr><tr><td><a href=\"java script:window.close()\" class=\"zamknij\"><center>zamknij</center></a></td</tr></table>";
  22.  
  23.    }
  24.  
  25. ?>
batman
Cytat
wlasnie HTTP_REFERER jedynie jest tu dobrym rozwiazaniem bo on wpisuje adres z jakiego sie weszlo w skrypt. ale to HTTP_REFERER nie dziala pod IE
Pewnie masz coś ustawione w firewallu/antywirusie/przeglądarce, że HTTP_REFERER nie jest wysyłany.
Sprawdź javascriptowy obiekt opener. Z tym nie powinno być problemu.
JoShiMa
Ha ha ha. Pod FF też Ci nie działa.

Masz jeszcze błąd. Może to szczegół, ale:

  1. <? echo $_SERVER['HTTP_REFERER']; ?>
batman
Średnik nie jest potrzebny jeśli jest to ostatni średnik. A w tym przypadku jest. Jednak nie zaszkodzi go dodać.
JoShiMa
A ciekawe, czy w ogóle się ten php wykonuje. Wpisz tam może echo "cokolwiek";
roghatt
pod FF wyswietla sie... minute temu podmienialem plik i moze dlatego nie dzialalo.

a opener w JS z tego co czytalem nie pobiera adresu z poprzedniego okna z ktorego kliknelo sie w link
batman
Cytat(freelinkz @ 23.10.2008, 13:12:03 ) *
a opener w JS z tego co czytalem nie pobiera adresu z poprzedniego okna z ktorego kliknelo sie w link

Źle czytałeś. Właśnie zrobiłem mały test i wszystko ładnie działa (IE7, Fx3)
Kod
<html>
alert(opener.window.location);
</html>
roghatt
Cytat(batman @ 23.10.2008, 11:19:54 ) *
Źle czytałeś. Właśnie zrobiłem mały test i wszystko ładnie działa (IE7, Fx3)
Kod
<html>
alert(opener.window.location);
</html>



nie wychodzi mi to w js, jak i gdzie sie wpisuje adres ktory ma otworzyc...
JoShiMa
Teraz mi działa i w FF i w IE
batman
Cytat(freelinkz @ 23.10.2008, 13:41:12 ) *
nie wychodzi mi to w js, jak i gdzie sie wpisuje adres ktory ma otworzyc...

Ten kod wstawiasz do pliku otwieranego w popupie.
roghatt
Cytat(batman @ 23.10.2008, 12:16:24 ) *
Ten kod wstawiasz do pliku otwieranego w popupie.


Wstawilem.. to miedzy head.. i <script> </script>
nie wiem czy w ogole dobrze robie...wchodzac na formularz wyskakuje okienko z adresem strony... pod IE i tak nic sie nie dzieje.
a to referer zostac ma?
batman
Wklej tutaj kod obu stron i zobaczy się, czy nie ma jakiegoś błędu.
roghatt
Cytat(batman @ 23.10.2008, 12:35:22 ) *
Wklej tutaj kod obu stron i zobaczy się, czy nie ma jakiegoś błędu.



plik polec.php
  1. <html><head>
  2. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  3. <script>alert(opener.window.location);</script>
  4. <title>Polec Nas</title></head>
  5. <body bgcolor=FFFFFF>
  6. <?php echo $_SERVER["HTTP_REFERER"]; ?>
  7. <form method=post action=polec.php>
  8.  
  9. <table>
  10. <tr><td bgcolor=F5F5F5>Nadawca: </td><td><input type="text" name="imie" class="z"></td></tr>
  11. <tr><td bgcolor=F5F5F5>E-mail odbiorcy: </td><td><input type="text" name="email" class="z"></td></tr>
  12. <tr><td bgcolor=F5F5F5>Polecany adres URL: </td><td><input type="text" name="url" value="<? echo $_SERVER['HTTP_REFERER']?>"></td></tr>
  13. <tr><td colspan=2><input type="submit" value="Wyslij"></td></tr>
  14. </table>
  15. </form>
  16.  
  17. <?php
  18. $od = "From: ".$_POST['imie']." r\n";
  19. $temat_u = "Polecam Ci stronę";
  20. $tresc_u = "Czesc tu ".$_POST['imie']."! Polecam ci ta strone ".$_POST['url']." bo jest super ";
  21. if (!empty($email) && preg_match("/@/",$email))
  22.  
  23.   {
  24.      
  25.             mail($email, $temat_u, $tresc_u, $od);
  26.  
  27. echo " <table><tr><td class=\"z\">Dziękujemy za polecenie naszej strony.</td></tr><tr><td><a href=\"java script:window.close()\" class=\"zamknij\"><center>zamknij</center></a></td</tr></table>";
  28.  
  29.    }
  30.  
  31. ?>
  32. </body>
  33. </html>



a plik z ktorego klikamy:
  1.  
  2. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  3. <title>powiadom znajomego</title>
  4.  
  5. </head>
  6.  
  7. <a target="nazwa" href="polec" onclick="window.open('polec.php', 'nazwa', 'width=600,height=460').focus(); return false">
  8. poleć znajomemu</a>
  9. </body>
  10.  
  11. </html>
batman
W pliku poldec.php
  1. window.onload = function() {
  2. document.forms["form_polec"].elements["url"].value = opener.window.location;
  3. }

Musisz jeszcze dodać atrybut name do formularz o wartości form_polec.
roghatt
Cytat(batman @ 23.10.2008, 12:55:16 ) *
W pliku poldec.php
  1. window.onload = function() {
  2. document.forms["form_polec"].elements["url"].value = opener.window.location;
  3. }

Musisz jeszcze dodać atrybut name do formularz o wartości form_polec.



ale to musze dodac ogolnie do formularza?
  1. <form method="post" action="polec.php" name="form_polec">


a co z tym?
  1. value="<? echo $_SERVER['HTTP_REFERER']?>">


to zostaje?

jestem zielony z js i dopiero raczkuje
batman
Cytat
ale to musze dodac ogolnie do formularza?
Tak.

Cytat
to zostaje?
Nie.
roghatt
Cytat(batman @ 23.10.2008, 13:13:03 ) *
Tak.

Nie.



No to juz wszystko smiga:)pod FF i IE, juz zrozumialem jak to dziala smile.gif zawsze powoli sie czegos naucze smile.gif
dziekuje za pomoc
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.