Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwne zachowania zmienyych POST
Forum PHP.pl > Forum > PHP
miamaji
Witam wszystkich,
Tworzyłam sobie stronę internetową i m.in. pracowałam na zmiennych POST od jakiegoś czasu nic mi nie działa. Nie potrafię znaleźć przyczyny problemu. Nagle nie widzę żadnej zmiennej POST. Dodam może że na innych komputerach wszystko działa dobrze. Dla przykładu mam kod
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
</head>
<body>
<?php
print_r ($_POST);
print_r ($_GET);    
?>
<div id="main">
<form name="exception" action="" method="post">
    <input type="text" name="Exception" value=""/>
    <input type="submit" name="edit" title="Save" value="Send"/>
</form>
</div>
</body>
</html>

Oczywiście tablica POST jest pusta (Na innych komputerach działa poprawnie). Przesyłając GETem wszystko gra. A i jeszcze jedno pracuje na ie 6 (MUSZE) na ff wszystko gra.

Z góry dziękuje za wskazówki.
Pozdrawiam
Maveral
Hmmm dziwne, bo Twój kod najzwyczajniej wyrzuca mi tablicę z tym, co napiszę w formularzu (sprawdziłem pod IE i Operą). Dlaczego nie wyciągasz konkretnych wartości z formularza poprzez np. $_POST['Exception']? I chyba warto by jednak zdeklarować "action" w formularzu.
miamaji
Action = "" z tego co wyczytałam domyślnie przesyła dane do bieżącej strony, natomiast print_r ($_POST); wyświetla wszystkie dane POST. No i w sumie wyświetla ale na ie 6 i nie na moim komputerze sad.gif
morpheouss
A czy szanowny kolega jest mi w stanie wytłumaczyć dlaczego porzysta z metody POST zamiast z GET?
wookieb
1) Wyczysc pamiec podreczna
2) Dorzuc action. I co z tego ze domyslnie wysle na aktualna strone jak IE jest zbiorem wszystkich nieszczesc swiata
3) Jak dodasz action i nadal nie bedzie dzialac to dorzuc do niego jakis losowy ciag np
  1. <?php
  2. echo '?'.time();
  3. ?>


Cytat
A czy szanowny kolega jest mi w stanie wytłumaczyć dlaczego porzysta z metody POST zamiast z GET?

Post jest bardziej uniwersalny.
nospor
Cytat
A czy szanowny kolega jest mi w stanie wytłumaczyć dlaczego porzysta z metody POST zamiast z GET?
A co ma piernik do wiatraka?
Poza tym przewaznie forma wysyla sie postem. getem wysyla sie w szczegolnych przypadkach, np. czesto przy wyszukiwarkach. Twoje pytanie wiec jest conajmniej dziwne i nic nie wnosi do tematu.

co do action to nie powinien miec wplywu na to zachowanie.
miamaji
Wszystkie punkty wykonane. Żaden nie pomógł. Ale jak to tak może być żeby działało kiedyś a teraz nie działa?

W sumie IE
sada
u mnie działa bez poprawek (FF)
maly_swd
A czy w IE nie masz powlaczanych wysokich zabezpieczen, kiedys cos tez mi nie dzialalo poprawnie na ie6
miamaji
Mam medium
golaod
To zmień na low lub wcale.

Przy okazji sprawdź czy sesje Ci działają.

Tak wiem - po co. Jednak jak ciasteczka też będą dead to może po prostu wina TEJ konkretnej aplikacji IE (zły build czy coś tongue.gif)
miamaji
Chciałabym poruszyć ponownie ten temat i zapytać się o Wasze zdanie.
Niechcący natknęłam się na przyczynę dziwnego zachowania zmiennych $_POST. Jeśli wchodzę na stronę z "strefy bezpiecznej" czyli z plików strony umieszczonej w folderze z nałożonymi uprawnieniami do folderu bez uprawnień czyli "strefy niezabezpieczonej" nie moge wykonywać operacji na zmiennych $_POST, tzn. mogę ale ich nie ma (znikają smile.gif giną uciekają albo skrzętnie się chowają)
Czy może ktoś wie jak rozwiązać ten problem. Dodam może że na początku w pliku "przechodnim " dodałam usnet ($_POST), ale nic nie dało.

Z góry dziękuje za pomoc
golaod
Skoro dałeś usnet i nic nie dało łącznie z zakomunikowaniem Ci błędu tzn, że lepiej dodaj do wszystkich plików na początku error_reporting(E_ALL);
miamaji
ale nie pojawia się mi żaden błąd, poprostu nie są wykonywane opracje na zmiennych post (a muszą byc)
bigZbig
Nie rozumiem, o co chodzi z tą strefą bezpieczną i niezabezpieczoną. Generalnie użyta przeglądarka nie powinna mieć wpływu na istnienie lub nieistnienie zmiennych post, chyba że kliknięcie na przycisk submit nie zatwierdza formularza. Z takim przypadkiem spotkałem się raz kiedy miałem źle zdefiniowany formularz, ale w Twoim przypadku wszystko wydaje się być ok. Inny przypadek to taki kiedy zdarzenie submit było przechwytywane przez js, ale to też raczej nie dotyczy Twojego skryptu.
miamaji
Mam 2 foldery:
- pierwszy - ogólno dostępny
- drugi - z nałożonymi prawami.

W pierwszym znajduje się drugi. Mam pliki z kodem jednej strony w obydwu folderach. Bezpośrednio w przeglądarce (jestem na plikach w folderze z zabezpieczeniami) dokonuje operacji na zmiennych post, po czy przechodzę do podstrony ( plik z kodem umieszczony w folderze bez zabezpieczeń), która zawiera takie same operacje na zmiennych post i już one nie wiedzieć czemu nie działają. jeśli otworze przeglądarkę od razu na podstronie której kod znajduje sie w folderze bez zabezpieczeń wszystko działa poprawnie.

Dodam może, że muszę mieć zabezpieczenia na jednym z folderów, muszę używać zmiennych post i muszę pracować na ie 6.0 (z powodu czego bardzo ubolewam)
bigZbig
O jakie prawa chodzi? Czy masz na myśli htpasswd? Napisz też w jaki sposób przechodzisz na podstronę umieszczoną w folderze bez zabezpieczeń - poprzez zatwierdzenie formularza czy w jakiś inny sposób?
miamaji
Aby witryna wymagała uwierzytelnienia w IIS została na folder z "strefy bezpiecznej" odznaczona opcja Enable anonymous access oraz zaznaczona opcja integrated Windows authentication. Do foldera "bez zabezpieczeń" przechodze normalnie bez zatwierdzenia formularza
hostingekspert
dodałeś usnet()? a moze unset() hmm?

jeśli dodałeś unset($_POST) cała tablica i jej zawartość jest usuwana, a zaraz potem się do niej odwołujesz poprzez print_r nie otrzymasz nic.

dla jakiego celu i w jakim miejscu umieściłeś owe unset() questionmark.gif
miamaji
dodałam unset w pliku "przechodnim" który zawiera jedynie przekierowanie do innego (do tego w którym wykorzystuje post)
hostingekspert
czy poza tym kodem

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
</head>
<body>
<?php
print_r ($_POST);
print_r ($_GET);    
?>
<div id="main">
<form name="exception" action="" method="post">
    <input type="text" name="Exception" value=""/>
    <input type="submit" name="edit" title="Save" value="Send"/>
</form>
</div>
</body>
</html>


(tu błędów nie widzę)

niczego wcześniej nie masz? przepraszam ale nie mogę zrozumieć co masz namyśli z tym plikiem "przechodnim"

Cytat
Dodam może że na początku w pliku "przechodnim " dodałam usnet ($_POST), ale nic nie dało.


zademonstruj jak teraz wygląda Twój kod skoro piszesz o tym, że to dodałeś w swoim czwartym poście w tym temacie
miamaji
ot cały kod smile.gif
Kod
<?php
unset($_POST);
if (isset($_COOKIE['ulubionaStrona']))
{
     header('Location: http://link');
}
else
{
     header('Location: http://link');
}
?>
erix
  1. <?php
  2. unset($_POST);
  3. ?>

Na co to?

Poza tym, zmienne superglobalne powinno się resetować przez:
  1. <?php
  2. $_POST = array();
  3. ?>
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.