Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekierowanie na stronę z danymi POST
Forum PHP.pl > Forum > PHP
pkr
Witam, potrzebuję napisać skrypt, który przekierowuje na daną stronę https wraz z formularzem POST. Zapewne jest to proste zagadnienie z cURL, lecz nie jestem za bardzo zorientowany w temacie. Przeglądałem dokumentację PHP ale nie mogłem znaleźć odpowiednich informacji. Z góry dzięki za pomoc smile.gif
emtiej
header

  1. header("Location: www.stronaaaaaa.pl/index.php?id=$id&zmienna=$zmienna&zmienna2=$zmienna2"); // możesz metodą post wysłać duuużo danych na inny adres w ten sposób
darko
Cytat(emtiej @ 18.01.2010, 13:53:02 ) *
header

  1. header("Location: www.stronaaaaaa.pl/index.php?id=$id&zmienna=$zmienna&zmienna2=$zmienna2"); // możesz metodą post wysłać duuużo danych na inny adres w ten sposób

To jest $_GET, a nie $_POST winksmiley.jpg Poza tym wcale nie tak duużo, długości urli są ograniczone.
pkr
Ważne dla mnie jest, aby to POSTem szło. Zmienne nie mogą być widoczne w adresie.
nospor
Cytat
apewne jest to proste zagadnienie z cURL, lecz nie jestem za bardzo zorientowany w temacie. Przeglądałem dokumentację PHP ale nie mogłem znaleźć odpowiednich informacji.

http://pl2.php.net/manual/pl/function.curl-setopt.php
pierwszy z brzegu komentarz:
Cytat
<?php

/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/

$ch = curl_init();

$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');

curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);
?>

A tego typu komentarzy jest wiecej...
emtiej
Sory mój błąd... "musk" nie taki już biggrin.gif

W takim razie sam jestem ciekawy jak wysłać dane post na inny adres...

Może to ci pomoże http://xion.org.pl/2009/09/19/przekierowanie-z-post-em/ chociaż nie wiem w jakim celu chcesz przekierować te dane, a to by nam trochę wyjaśniło
pkr
@nospor - niestety w ten sposób nie mogę uzyskać przekierowania. Wyświetla się tylko zwrócona treść. Jeśli http zamienię na https to już w ogóle nic się nie wyświetla.

@emtiej - chodzi mi o integracje skryptu z Dotpay. Muszę napisać skrypt, który wysyła formularz na https://ssl.dotpay.pl przez PHP.
nospor
no to piszesz normalny formularz, ktory w action ma:
..action="https://ssl.dotpay.pl"...
I juz ci form leci na dotpay smile.gif
darko
Wysyła, to nie to samo, co przekierowuje. (Nie)głupie pytanie: nie możesz po prostu podać adresu https://ssl.dotpay.pl dla wartości atrybutu action formularza?
pkr
Normalny formularz musi być jeszcze parsowany pod kątem wysokości wpisanej kwoty. Dlatego nie mogę wysłać go bezpośrednio do Dotpay. JS odpada, gdyż można wyłączyć. Chyba muszę wysłać to do innego skryptu, dopiero potem przez cURL do Dotpay.
nospor
Cytat
Normalny formularz musi być jeszcze parsowany pod kątem wysokości wpisanej kwoty.
Przeciez nawet jak sparsujesz, a potem jakims cudem przekierujesz na dotpay, to koles w dotpay i tak bedzie mogl wpisac inna kwote
pkr
Jak wyślę POSTem do dotpay to kwoty już nie można edytować. Można wybrać kanał płatności oraz wpisać dane nadawcy.
nospor
Cytat
Jak wyślę POSTem do dotpay to kwoty już nie można edytować.
no ok, tu mnie masz smile.gif
pkr
No i tu jest problem smile.gif muszę zrobić przekierowanie SSL wraz z POSTem, a nie bardzo wiem jak. A może ma ktoś inny pomysł na rozwiązanie tego problemu?
darko
Cytat(pkr @ 18.01.2010, 14:45:07 ) *
No i tu jest problem smile.gif muszę zrobić przekierowanie SSL wraz z POSTem, a nie bardzo wiem jak. A może ma ktoś inny pomysł na rozwiązanie tego problemu?

Może help/faq/manual Dotpay coś podpowie ?
starach
http://www.php.net/manual/en/function.header.php#89447
  1. /*
  2. Found this script after much despair, should be useful to lot of people.
  3. To submit a form using POST method through PHP, just add the data to be posted as header. This essentially saves one extra html page sent to the browser when user has to be redirected. Mostly found this technique useful for redirecting to payment gateways.
  4. */
  5.  
  6. <?php
  7. $host = "www.example.com";
  8. $path = "/path/to/script.php";
  9. $data = "data1=value1&data2=value2";
  10. $data = urlencode($data);
  11.  
  12. header("POST $path HTTP/1.1\r\n" );
  13. header("Host: $host\r\n" );
  14. header("Content-type: application/x-www-form-urlencoded\r\n" );
  15. header("Content-length: " . strlen($data) . "\r\n" );
  16. header("Connection: close\r\n\r\n" );
  17. header($data);
  18. ?>
tongue.gif
pkr
Rozwiązanie podesłane przez Staracha ciekawie wygląda. Wyskakuje mi tylko ciągle Internal Server Error sad.gif Co powinienem wpisać do $path i $host żeby wysłać na https://ssl.dotpay.pl/ ?
PawelDanielewski
Cytat(pkr @ 18.01.2010, 13:44:47 ) *
Witam, potrzebuję napisać skrypt, który przekierowuje na daną stronę https wraz z formularzem POST. Zapewne jest to proste zagadnienie z cURL, lecz nie jestem za bardzo zorientowany w temacie. Przeglądałem dokumentację PHP ale nie mogłem znaleźć odpowiednich informacji. Z góry dzięki za pomoc smile.gif


pkr myślę, że na siłę utrudniasz sobie życie.

Jeśli obawiasz się, że internauta wpisze za małą kwotę sprawdź ją NIE NA WYJŚCIU do Dotpay`a a na księgowaniu plikiem z URLC.

  1. if($_POST['amount']<$moja_kwota){
  2. }


Jeśli natomiast zależy Ci aby po kliknięciu w przycisk formularza nie kierował na ssl.dotpay.eu a jeszcze stronę pośrednią (nie wiem w sumie po co, może chcesz wyświetlić kod na tej stronie do śledzenia konwersji).

Najprościej.
1. Podłącz sobie jQuery
2. Nadaj id swojemu formularzowi np. id="moj_formularz" zaraz za method="post"
3. zainicjuj na onload funkcję submit()

Taki oto kod wstawiasz pomiędzy <head></head>
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  2. <script language="javascript">
  3. $(document).ready(function(){
  4. $("#moj_formularz").submit( function () {
  5. return false;
  6. } );
  7. });
  8. </script>


Skrypt spowoduje, że po wejściu na stronę, formularz z automatu zostanie wysłany POSTEM do dotpay`a bez potrzeby kliknięcia w przycisk zatwierdzający formularza.


1. A jeśli boisz się, że ktoś wyłączy JS`a i będzie edytował pola formularza... uwierz mi, że JS nie ma tu niewiele do rzeczy. Jeśli dobrze pamiętam prosta i darmowa wtyczka do FireFox`a
https://addons.mozilla.org/en-US/firefox/addon/3829
jest w stanie dowolnie modyfikować dane o które tak się obawiasz. Wysokość kwoty, którą płaci klient powinno sprawdzać się na końcu na poziomie skryptu z parametru URLC. Jeśli internauta "cwaniakuje" i zamiast 100 zł wprowadzi na zmodyfikowaej zmiennej np. 20 zł, skrypt nie dopisze mu do bilansu tej kwoty a Ty będziesz miał wybór. Zrobić zwrot czy zachować wpłatę w ramach "kary".


2. cURL nie ma tutaj zastosowania.

3. Swoją drogą, dzisiaj napisałem artykuł o tym jak w trybie automatycznym integrować prawidłowo dotpay -> http://www.paweldanielewski.pl/index.php/2...enie-dotpay-v2/

Cytat(pkr @ 18.01.2010, 13:44:47 ) *
Witam, potrzebuję napisać skrypt, który przekierowuje na daną stronę https wraz z formularzem POST. Zapewne jest to proste zagadnienie z cURL, lecz nie jestem za bardzo zorientowany w temacie. Przeglądałem dokumentację PHP ale nie mogłem znaleźć odpowiednich informacji. Z góry dzięki za pomoc smile.gif


pkr myślę, że na siłę utrudniasz sobie życie.

Jeśli obawiasz się, że internauta wpisze za małą kwotę sprawdź ją NIE NA WYJŚCIU do Dotpay`a a na księgowaniu plikiem z URLC.

  1. if($_POST['amount']<$moja_kwota){
  2. }


Jeśli natomiast zależy Ci aby po kliknięciu w przycisk formularza nie kierował na ssl.dotpay.eu a jeszcze stronę pośrednią (nie wiem w sumie po co, może chcesz wyświetlić kod na tej stronie do śledzenia konwersji).

Najprościej.
1. Podłącz sobie jQuery
2. Nadaj id swojemu formularzowi np. id="moj_formularz" zaraz za method="post"
3. zainicjuj na onload funkcję submit()

Taki oto kod wstawiasz pomiędzy <head></head>
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  2. <script language="javascript">
  3. $(document).ready(function(){
  4. $("#moj_formularz").submit( function () {
  5. return false;
  6. } );
  7. });
  8. </script>


Skrypt spowoduje, że po wejściu na stronę, formularz z automatu zostanie wysłany POSTEM do dotpay`a bez potrzeby kliknięcia w przycisk zatwierdzający formularza.


1. A jeśli boisz się, że ktoś wyłączy JS`a i będzie edytował pola formularza... uwierz mi, że JS nie ma tu niewiele do rzeczy. Jeśli dobrze pamiętam prosta i darmowa wtyczka do FireFox`a
https://addons.mozilla.org/en-US/firefox/addon/3829
jest w stanie dowolnie modyfikować dane o które tak się obawiasz. Wysokość kwoty, którą płaci klient powinno sprawdzać się na końcu na poziomie skryptu z parametru URLC. Jeśli internauta "cwaniakuje" i zamiast 100 zł wprowadzi na zmodyfikowaej zmiennej np. 20 zł, skrypt nie dopisze mu do bilansu tej kwoty a Ty będziesz miał wybór. Zrobić zwrot czy zachować wpłatę w ramach "kary".


2. cURL nie ma tutaj zastosowania.

3. Swoją drogą, dzisiaj napisałem artykuł o tym jak w trybie automatycznym integrować prawidłowo dotpay -> http://www.paweldanielewski.pl/index.php/2...enie-dotpay-v2/
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.