.htaccess i metoda POST

0

Cześć,

Proszę o pomoc. Mam problem z metodą POST i plikiem .htaccess. Chcę, żeby po kliknięciu 'Submit' w formularzu na jednej stronie przeniesiono się do nowej strony wraz z danymi z formularza POST, jednak żeby link strony był 'Rewrite' przez .htaccess. Jak to zrobić?

Mój formularz:
<form action="portal" method="post" style="margin-left:0px; margin-top:30px;">

Mój .htaccess:

RewriteEngine on
RewriteRule ^portal$ /index.php?start=portal
RewriteBase /

Dodam, że start=portal przenosi się metodą GET, to działa.

Z góry Dzięki!

0

Chyba coś przekombinowałeś.

Masz dwie opcje:

  1. FORM ACTION może zawierać adres jaki chcesz (np. innej strony niż tej na której jest formularz):

http://www.w3.org/TR/html401/interact/forms.html

  1. Po odebraniu danych możesz klienta przekierować przez header location:
header( 'Location: http://www.przyklad.com/inna_strona.html' ) ;
0

vpiotr dzięki za odpowiedź. Być może to odpowiada na moje pytanie... jednak ja nie dostrzegłem rozwiązania problemu mojego :(

OK, to może jeszcze raz.

Formularz jest na stronie: www.mojastrona.pl/logowanie, czyli zgodnie z plikiem .htaccess ponizej na stronie www.mojastrona.pl/index.php?start=logowanie

RewriteEngine on
RewriteRule ^logowanie$ /index.php?start=logowanie
RewriteRule ^portal$ /index.php?start=portal
RewriteBase /

Mam to tak zrobione, że jedną i drugą stronę obsługuje index.php bo wewnątrz mam IFRAME, jak poniżej:

<?php
		$start=$_GET['start'];
		if($start=='logowanie'){
			echo '<iframe src="login.php" width="100%" frameborder="0" scrolling="no" id="iframe" onload=\'javascript:resizeIframe(this);\'></iframe>';
		}
		elseif($start=='portal'){
			        $login=$_POST['login'];
				$haslo=$_POST['haslo'];
				echo $login+' '+$haslo;
			echo '<iframe src="portal.php" width="100%" frameborder="0" scrolling="no" id="iframe" onload=\'javascript:resizeIframe(this);\'></iframe>';
		}
	?>

Ta część gdzie wyświetlam login i hasło jest na próbę, żeby zobaczyć czy działa POST, później w pliku portal.php, który jest źródłem dla IFRAME też to wyświetlam i też pojawia się jedynie '0'.

Podsumowując - problem polega na tym, że chce:

  1. Używać IFRAME, żeby tylko zmieniać środek strony a nie header i footer, który zawsze jest taki sam
  2. Żeby mimo używania IFRAME i cały czas jednego bazowego pliku index.php, żeby adres strony zmienił się z /logowanie na /portal
  3. Żeby dane po wysłaniu formularza w pliku login.php, który jest źródłem dla IFRAME przy adresie /logowanie przeszły metodą POST do pliku index.php z adresem /portal i ze źródłem dla IFRAME portal.php - zakładam, że jak dojdą do index.php z adresem /portal, to do portal.php, który jest cześcią IFRAME na pewno też.

Mam nadzieję, że to trochę rozjaśniło, choć wiem, że to zagmatwane. Jeśli Twoja odpowiedź już jest odpowiedzią na mój problem to może dzięki temu mojemu wyjaśnieniu będziesz w stanie dokładnie powiedzieć mi jak tej Twojej odpowiedzi użyć :)

0

Daruj sobie te iframy i zrób to na ajaxie. Iframy to masa nowych problemów (np. ściśle określone wymiary)

0

OK, a zakładając, że chcę użyć iframe'ów jednak? :)

0

ok znalazłem rozwiązanie, przede wszystkim używałem + do łączenia stringów zamiast kropki.... no cóż, po długim czasie wracam do PHP.

Natomiast w głównym pliku index.php przyjmuję dane z formularza POST, a potem przekazuje je do portal.php metodą GET w adresie.

Dzięki!

0

@drejas: Tu masz kod na to chciałeś w pierwszym poście:

RewriteEngine on
RewriteBase /
RewriteRule ^(logowanie|portal)$ /index.php?start=$1 [NC,P]
1

dziekuje!

0

Myślę, że zamiast przekazywania danych między stronami przez GET powienienś użyć sesji. Jeżeli zmienna sesyjna jest pusta pokazujesz formularz. W skrypcie obsługującym formularz wpisujesz dane z formularza do zmiennych sesyjnych i później masz dostęp do tych danych na każdej stronie. I robisz jeszcze opcję czyszczenia zmiennych sesyjnych np. w przypadku wywołania www.mojastrona.pl/index.php?stop=1

Nie wiem czy powiniene tu to dodawać, ale tutaj jest genialny kurs www.youtube.com/watch?v=Aw28-krO7ZM&list=PL7A20112CF84B2229&index=1

1 użytkowników online, w tym zalogowanych: 0, gości: 1