Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przekazywanie danych w formularzu( echo $_POST)
Forum PHP.pl > Forum > Przedszkole
starterphp
Witam,
Jestem w trakcie nauki php, wiec prosze nie karcic smile.gif Robie sobie powiedzmy taki, a la skrypt logowania, sprawdzajac sobie jak to wszystko dziala smile.gif

Pytanie 1. Zmienna nie wyswietla sie na nastepnej stronie? Dlaczego? Co jest zle?

logowanie.html
  1. <form name="loginForm" id="authForm" novalidate="" role="form" ng-submit="logIn(loginForm)" method="post" action="post.php">
  2. <input name="username" id="username" ng-model="login" autofocus="autofocus" tabindex="1" maxlength="63" required="required" type="text">
  3. <input name="password" id="password" ng-model="password" tabindex="2" maxlength="16" required="required" type="password">

zalogowany.php
  1. Zalogowales sie jako:
  2. <?php echo $_POST['username']?>


Pytanie 2
Czy moge teraz korzystac z $_POST['username'] caly czas? Np z zalogowany.php ktos przejdzie do nastepnej strony ksiega_gosci.html, to po przejsciu w wychodze stad.html bede mogl mu wyswietlic: Wroc do nas $_POST['username'] questionmark.gif
viking
Formularz to zbiór przeróżnych inputów tak samo jak np PIT roczny. Zatem powininny być one wewnątrz niego zawarte. Dane możesz zapisać w sesji. Sesja musi startować na każdej z podstron.
starterphp
A pierwsze pytanie? W wielu tutorialach jest podane cos na wzor tego co zrobilem. Sa przestarzale, cos sie zmienilo?

Co do drugiego pytania to rozumiem, ze bez mysql za daleko to nie pojdzie?
nospor
Dostales odpowiedz na pierwsze pytanie...

Moze przerob wpierw podstawy formularzy w HTML bo to dosc podstawowa wiedza.
starterphp
Zle wkleilem kod, formularz dziala poprawnie. Mam zrobiony formularz z dwoma inputami. Prosze tylko o odpowiedz czemu po wpisaniu:

<?php echo $_POST['username']?> nic sie nei wyswietla>

Register globals musi byc na ON?

Korzystalem z tego tutoriala:
http://phpkurs.pl/przekazywanie-danych/

Na czym mi zalezy?

Mam cos takiego (zalozmy, ze jest to test z pytaniami)

Logowanie --> strona 1 --> strona 2 --> strona 3

Chcialbym, zeby na kazdej z tych podstron wyswietlal sie login uzytkownika wpisany w logowanie. html, bez uzywania bazy danych. Possible?
nospor
To badz tak mily i wklej poprawny kod jaki masz a nie wprowadzasz nas wblad

edit:
co ci zwraca
print_r($_POST);

?


Cytat
Register globals musi byc na ON?
OFF
starterphp
Nic.

Probowalem tez: print_r($_POST, true);

Przekierowalem logowanie.php na post.php, w ktorym znajduje sie:

post.php
  1. <?php $file = '1.txt';file_put_contents($file, print_r($_POST, true), FILE_APPEND);?>


i drukuje mi:

1.txt
  1. (
  2. [username] => 11111111111
  3. [password] => ad
  4. )


wiec wszystko dziala.

Dlaczego, wiec nie drukuje mi na mojej podstronie?
viking
Może zacznijmy od tego czy masz uruchomiony jakikolwiek serwer? Następnie włącz raportowanie błędów zgodnie z Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy
nospor
Pewnie masz jakies durne css i nie widzisz tego. Wyswietl sobie zrodlo strony tam gdzie masz print_r (ctrl+u w wiekszosci przegladarek) i powinienies zobaczyc co tak naprawde tam masz
starterphp
Wrocilem wszystko do poprzedniego staniu i nagle dzialaaaaa. Nie wiem co bylo przyczyna, bo tylko przekopiowalem pliki na serwer. Moze hosting zmulil, nie mam pojecia.
Dzieki wszystkim za pomoc exclamation.gif

Drugie pytanie:

Strona jest zrobiona jako test i wyglada to tak:
logowanie.html --> I zestaw pytan.html --> II zestaw pytan.html --> III zestaw pytan.html

Na kazdej z podstron chcialbym uzywac loginu uzytkownika, wpisanego w formularz logowania. Moge prosic o podpowiedz w jaki sposob przechowac dane z formularza, bez wykorzystania bazy danych?
viking
http://php.net/manual/pl/ref.session.php
starterphp
No to lecimy dalej smile.gif

Index.php
  1. <strong>Wpisz imie</strong>
  2. <form action="name.php" method"post">
  3. <input type="text" name="username"/>
  4. <input type="submit" name="Submit" value="Submit!" />
  5. </form>
  6.  
  7. <?php
  8. $_SESSION['post-data'] = $_POST;
  9. ?>


name.php
  1. <strong>Twoj login to:</strong>
  2. <strong><?php
  3.  
  4. echo $_SESSION['post-data'];
  5. ?></strong>


Wynik to:
Twoj login to: Array, print_r rowniez nie dziala.

Bede mogl sie odwolac bezposrednio do inputa username? Np:
echo $_SESSION['post-data']['username'];

No i czemu to neie dziala?
viking
Ciekawe jak może print_r nie działać dla array. $_SESSION['post-data']['username']
starterphp
W ogole nie rozumiem tego co napisales. Nie wiem czy to jakas ironia czy co? Wkleiles jakis moj kawalek kodu i tyle.
viking
Ty tak na poważnie nie rozumiesz co robisz?
Jak się odwołujesz do pól formularza? $_POST['username'] wybierze dane z <input type="text" name="username"/>. Tak? Skoro zrobiłeś $_SESSION['post-data'] = $_POST; to chyba oczywiste że pod kluczem post-data w sesji masz zapisaną całą tablicę POST. Zatem żeby wybrać username musisz zrobić echo $_SESSION['post-data']['username'] . Kiedy robisz echo $_SESSION['post-data']; wyświetla ci się array bo masz tam tablicę POST. I naprawdę w takiej sytuacji ciężko zrobić żeby print_r($_SESSION['post-data']) nie wyświetliło danych tablicy.
starterphp
I trzeba bylo tak od razu, chociaz poradzile msobie w inny sposob.

Dla potomnych, kod ostatecznie wyglada tak:
- session_start(); zawsze przed kodem html

index.php
  1. <?php
  2. ?>
  3.  
  4. <strong>Wpisz imie:</strong>
  5. <form action="name.php" method="post">
  6. <input type="text" name="username"/>
  7. <input type="submit" name="Submit" value="Submit!" />
  8. </form>


name.php
  1. <?php
  2. $_SESSION['username'] = $_POST['username'];
  3. ?>
  4.  
  5. <strong>Twoje imie to:</strong>
  6. <strong><?php echo $_SESSION['username'];?></strong>


viking
Rozumiem że to dział przedszkole ale jednak przypisywanie wartości do zmiennych to totalne podstawy PHP bez których nic zrobić nie można. Powinieneś poczytać w dokumentacji jeśli nie wiesz jak odwoływać się do zmiennych. A w sytuacji gdy echo wyświetla Array już bardziej oczywiste nie może być co zawiera zmienna. Przez przypadek zrobiłeś nawet poprawnie session_start na początku strony. Inaczej byś miał headers already sent. A na przyszłość nie pisz że "nie działa" tylko włącz pełne raportowanie błędów i czytaj komunikaty. Na stronie nie powinno być też żadnych błędów notice.
starterphp
A to i tak nie dzialalo: echo $_SESSION['post-data']['username'] . Nic sie nie wyswietlalo

Mysle, ze temat zostal wyczerpany, dziekuje wszystkim za pomoc.
viking
Bo pewnie było headers already sent.
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.