Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak przeładować stronę po kliknieciu wstecz
Forum PHP.pl > Forum > PHP
qazzaq123
Witam wszystkim!

Proszę o pomoc z następującym problemem.
W stronie rejestracja.php mam kod ktory pobiera z bazy danych ilosc zarejestowanych uzytkownikow i zaleznie od limitu wyswietla jeden formularz rejestracyjny, a gdy limit zostanie osiagniety wyswietla drugi formularz.

Kod ala:
select z bazy ilości osob

IF (liczba < max) { wyswielt formularz rejestracyjny_1 }
ELSE { wyswielt formularz rejestracyjny_2 }

Jezeli zostalo jeszcze jedno miejsce osobie wyswietli sie formularz_1 ta wpisze swoje dane i po wcisnieciu Wyslij zostanie otwarta strona PHPList z informacja o rerjestracji i prosba o aktywacje. Teraz jezeli osoba kliknie w przegladarce 'Wstecz' nadal na stronie bedzie wyswietlony fomularz_1 zmiast formularza_2 i osoba bedzie mogla wpisac kolejna osobe.

Moj pomysl to zaczytanie strony ponownie po wcisniecu wstecz przegladarki. jak to wykonac?
likemandrake
Nie masz co nawet próbować tego rozwiązać w przedstawiony przez Ciebie sposób... Albo to co chcesz osiągnąć w ogóle nie będzie możliwe, albo nie będzie działało poprawnie w każdej przeglądarce.

Można to w pewien sposób rozwiązać przez użycie JS, ale to jest sposób bardzo zawodny.

Twoim zadaniem jest w skrypcie PHP sprawdzać, czy operacja która ma zostać wykonana, jest dozwolona, bo tylko to da Ci bardzo dużą pewność, że wszystko poszło tak jak należy.

Nie wiem jak wyglądają te dwa formularze i jak rozróżniasz, czy żądanie przyszło z formularza pierwszego czy drugiego, w każdym razie musisz sprawdzić, czy żądanie które przyjdzie z jakiegokolwiek formularza jest w ogóle dozwolone.

Tyle teorii.
qazzaq123
Ta teorie rowniez znalem:) ale myslalem ze sie obejdzie przeladowaniem, jedna pojawilby sie wtedy rowniez problem iz kilka "ostatnich" osob w tym samym czasie mogloby zarejestrowac sie juz poza gorna granica osob.

W tym problem iz przycisk Submit w akcji przekazuje POST'em dane na strone juz nie moja tylko na strone PHPList'a i nie za bardzo usmiecha mi sie grzebac w tych stronach.
Na razie rowniez teoretycznie podpowiedziano mi ze jezeli mam stona aa.php to formularz wysylam POSTem rowniez na strone aa.php sprawdzam ilosc osob w bazie i jezeli jeszcze nie max to musze wykonac 'redirecta' danych w POST na ta strone PHPList.
Teraz pozostalo to tylko rozwiazac praktycznie smile.gif

Czy ktos robil takiego redirecta, moglbym prosic o jakis przyklad?
likemandrake
No więc w skrypcie robisz taki test:

  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  3.    // prawdopodobnie zostal wyslany formularz, z podkresleniem na prawdopodobnie, poniewaz wcale to nie problem
  4.    // wymusic metode wysylania post ze spreparowanymi danymi
  5.  
  6.    // jezeli cos sie nie zgadza, wyswietlamy komunikat bledu najlepiej z odpowiednim formularzem
  7.  
  8.    // jezeli jestes pewien co do poprawnosci danych, aby dane przekazac na PHPList metoda POST, musisz uzyc cURL, nie widze innego
  9.    // bezpiecznego sposobu
  10.  
  11.    // jezeli poprawnie wyslano dane przez cURL, gratulujesz sukcesu ;)
  12. } else {
  13.    // wyswietlamy formularz
  14. }
  15. ?>
qazzaq123
OK. Dzieki za odpowiedz!
cURL dziala bez zarzutow i nie ma zabawy z zdanym JavaScript. cURL porzadne rozwiazanie.

Jednak teraz pojawil mi sie problem zwiazany z wartoscia zwracana przez cURL.
Mianowicie strona do ktorej wysylam w cURL'u (PHPList po zasubskrybowaniu) wyswietla strone z informacja o subskrypcji itd.
Chcialbym ten komunikat jak najbardziej wyswietlac!

I teraz PYTANIE czy mozna rezultat z cURL przeslac GET'em na inna strone i tam wyswietlic?questionmark.gifquestionmark.gif?
Sprobowalem zrobic to jak ponizej jednak i tak zawartosc strony wyswietla mi sie na stronie gdzie mam formularz a nie na stronie przekierowanej header()

W czym jest problem?questionmark.gifquestionmark.gif?

Na stronie gdzie mam formularz i wywoluje cURL
Kod
.
.
.
// Wykonanie cURL
$result = curl_exec($ch);
                        
$adres_strony = http://www.mojastrona.pl/ . "resultphplist.php?res=" . $result;

//Proba przekierowania gdyz wartosc w result to strona html
header('Location: $adres_strony');
exit();


Natomiast w pliku "resultphplist.php" znajduje tylko kod:
Kod
<?php
    echo($_GET['res']);
?>
likemandrake
Bardziej profesjonalnie jest nie wyświetlenie tego Twojego formularza i wyświetlenie informacji o statusie rejestracji. Może z kodu zwróconej strony wytnij komunikat który Cię interesuje.

A co do tego co chciałbyś mieć...
Przekierowanie robisz metodą GET, są tu dwa problemy. Pierwszy to taki, że zawartość $result musisz puścić przez funkcję urlencode() aby poprawnie przygotować link pod który odsyłasz, a drugie to to, że żądanie GET ma ograniczenie długości, którego POST nie ma.

Długość adresu (część żądania GET) nie może przekroczyć 256 znaków.
qazzaq123
"likemandrake" Wielkie dzieki za pomoc i cenne uwagi duzo mi pomogly i ulatwily Twoje informacje!

Znalazlem jeszcze dwa rozwiazania:

[1]
Jezeli ktos mialby podobny problem to mozna jeszcze rozwiazac to w taki sposob ze formularz POSTEM ze strony 'aa.php' mozna wyslac na strone 'bb.php' ktora ma w sobie tylko obsluge POSTA i tam wykonac cURL z wykonaniem strony rejestracji na PHPList, a rezlutat wyswielic na 'bb.php' stronie echo($result);.

[2]
W PHPList mozna konfigurowac strone 'Thank you page' jej naglowek, stopke i tresc. Mozna usunac wszystko z sekcji header oraz footer a tresc komunikatu wyswietlic na stronie z formularzem a nastepnie wykonac exit().
Przy takim wykonaniu trzeba pamietac tylko o:
-Obsluga POST musi byc wstawiona w kodzie przed wyswietleniem formularza
-Przed wykonaniem cURL upewnic sie ze wprowadzone dane do rejestracji w kazdym przypadku zarejestruja uzytkowika, gdyz w innym przypadku zostanie wyswietlona inna strona PHPList z bledem

To na tyle wg mnie w tym temacie.
Jeszcze raz dzieki!
likemandrake
To teraz zasłużone "Pomógł" tongue.gif
qazzaq123
Alez oczywiscie "klikniete". Jestem swiezy na forum, dzieki ze sie upomniales smile.gif
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.