![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 12.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Problem jest następujący. Gdzie przechowywane są zmienne wysłane z formularza metodą POST i jak je usunąc? unset nic nie pomaga!! (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Problem polega na tym, że wypełnione pola formularza zostają przekzazane do fukcji php która sprawdza poprawność wypełnionego formularza (np. czy wszystkie wymagane pola zostały wypełnione). Skrypt je sprawdza i jeżeli nie ma żadnych błędów wywołuje kolejną funkcję zawierającą nowy formularz do wypełnienia. Problem pojawia się w tym momecie, kiedy te pola formularzy mają taką samą nazwę. Może przedstawie algorytm działania wszystko dzieje się w funkcji switch 1) Wypełnienie formularza (Krok_1) 2) Przekazanie danych do skryptu sprawdzającego (Dodaj_1) 3) Analiza wypełnienia -> kiedy pojawią się puste pola skrypt wywołuje funkcję Krok_1 z zaznaczonymi polami które nie zostały poprawnie wypełnione. 4) Zapisanie zgromadzonych danych do bazy danych MySQL 5) Wywołanie funkcji wypełnienia kolejnego formularza (Krok_2) Ten sam algorytm dotyczy funkcji Krok_2. W funkcjach tych mam zdefioniowaną obsługę błędów. Jeżeli funkcja dodaj znalazła pole nie wypełnione przekazuje informacje o błędzie w zmiennej i wywołuje ponownie funkcję krok_1(ze zmienna). W plikach tych mam wprowadzone warunki wyświetlania pól za pomocą
Użytkownik wypełnia pola formularza krok_1 wywołuje funkcje dodaj_1 i otwiera funkcję krok_2 - tu już niektóre pola są wypełnione - A tak ma nie być!!! Zastosowanie unset w dodaj_1 - nic nie pomaga Zastosowanie $_POST = array(); w dodaj_1 - także nic nie daje? Co z tym zrobić?? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
zmienne z POSTU znajdują się w $_POST
np. $_POST['nazwazmiennej']; można to usunąć tak: unset($_POST['nazwazmiennej']); |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Problem jest następujący. Gdzie przechowywane są zmienne wysłane z formularza metodą POST i jak je usunąc? unset nic nie pomaga!! (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Na pewno?A próbowałeś tak:
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 12.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
powiem tak, wporwadzenie
nic nie pomogło, zmienna dalej pozostaje zapisana. Ale zapomniałem dodać, że przed wywołaniem funkcji switch umieściłem session_start(); w którym przechowuje numer ID. Teraz nasówa się pytanie, czy po wysłaniu formularza - zmienne z niego zapisują się w sesji?? Chyba nie - tak mi się wydaje?
...
w dodaj_1() umieszczam
i w krok_2 ta "wartosc1" dalej przechowuje dane Ten post edytował smarcz 21.02.2007, 19:28:13 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Przykład:
Zobacz, jak to działa... |
|
|
![]()
Post
#6
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
jak unset nie działa to moze po prostu $_POST['zmienna'] = ''; (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 12.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Powiem tak! Nie rozumiem dlaczego w tym samym warunku funkcji switch przy wczytywaniu funkcji stworzonych przez użytkownika i w jednej z nich zastosowaniu unset($_POST) w pozostałych funkcjach zmienne zachowują swoje argumenty.
tak to wygląda po kilku testach: case "d2" dodaj_1() - tu kasuje zmienne za pomocą unset - sprawdzam za pomocą echo $zmienna - zmienna nie istnieje naglowek_2() pomoc_2() krok_2() - tu te same zmienne - wcześniej wykasowane przez unset w dodaj_1() mają nadal przypisane argumenty?? break; tak więc w dodaj_1() po zastosowaniu waszych rad - wartości zmiennych zostają usunięte, ale w tym samym warunku switch w krok_2() nadal istnieją(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) PHP odczytuje kod linia po linii - tak więc logicznie myśląc wygląda to tak: odczyt warunków funkcji dodaj_1(); -> usunięcie zmiennych z pamięci (tablicy) odczyt warunków funkcji naglowek_2(); odczyt warunków funkcji pomoc_2(); odczyt warunków funkcji krok_2(); -> tu powinny zmienne nie mieć przypisanych argumentów? Nieprawdaż? Rozwiązałem problem przez zapisanie zmiennej action do sesji - odczytuje z jakiego kroku ("d1") został przekierowany formularz if($action=="d1"){ unset($_POST); } w tedy uzyskuje pożądany efekt!! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Inaczej nic z tego? Natomiast kiedy kontrola formularza odkryje błąd i wywoła funkcję krok_2() z błędami argument $action="d2" czyli nie spełnia warunków i nie usuwa zapisanych zmiennych. Ale jeżeli macie jeszcze inne rozwiązanie to piszcie! Może komuś się przyda, lub jest prostsze i nie zajmuje zbędnej pamięci w sesji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował smarcz 22.02.2007, 10:17:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 14:34 |