Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Kolejność wykonywania kodu
tomazzi
post 23.10.2012, 22:55:12
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 14.09.2012

Ostrzeżenie: (0%)
-----


Mam taki mały kawałek kodu:

  1. <?php
  2.  
  3. if(isset($_POST['subbmitted'])){
  4.  
  5. $file = "D:\\plik.txt";
  6. $fd = fopen($file, "w+") or die("nie idzie");
  7.  
  8. $fout = fwrite($fd, $_POST['newstring']);
  9.  
  10. fclose($fd);
  11.  
  12.  
  13. }
  14. $file = "D:\\plik.txt";
  15. $fd = fopen($file, "r") or die("nie idzie");
  16.  
  17. $initial = fread($fd, filesize($file));
  18. fclose($fd);
  19. $target = $_SERVER['PHP_SELF'];
  20. $view = <<<EOT
  21.   <HTML>
  22.   <FORM METHOD="POST" ACTION="$target">
  23.   <INPUT TYPE="text" SIZE=50 NAME="newstring" VALUE="$initial">
  24.   <INPUT TYPE="hidden" NAME="subbmitted" VALUE=1>
  25.   <INPUT TYPE="submit" VALUE="Wyslij">
  26.   </FORM>
  27.   </HTML>
  28.  
  29. EOT;
  30.  
  31. echo $view;
  32. ?>


Wszystkie funkcje i działanie jest dla mne jasne jednak nie do końca rozumiem jak po kolei jest on wykonywany. Tzn. według mojego rozumowania wygląda to tak:
Jeśli wartość zmiennej POST ustawiona jest na 1, a jest wchodzimy w pętle, otwieramy plik zapisujemy do niego zmienną POST['newstring'] i to nie rozumiem. Przecież wartość tej zmiennej jest inicjowanan dopiero po wyjściu z pętli, więc w jaki sposób może już być zapisana do pliku?
Powód edycji: [webdice]: Dodałem tag.
Go to the top of the page
+Quote Post
webdice
post 23.10.2012, 23:02:02
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Jeśli pole formularza subbmitted istnieje to zapisz do pliku wartość z pola formularza newstring.

PS. Używaj tagów bbcode.
Go to the top of the page
+Quote Post
b4rt3kk
post 23.10.2012, 23:30:26
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Zmienna zostaje utworzona w momencie przesłania formularza, nie ma znaczenia czy znajduje się on przed czy po kodzie PHP. Z momentem wciśnięcia submit powstaje tablica $_POST.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
abort
post 24.10.2012, 06:28:39
Post #4





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Masz klasyczną formatkę HTMLową generowaną przez skrypt php, który sam sprawdza wartości i "coś" robi. Normalne otwarcie strony to jest żądanie GET, i wtedy posługujesz się tablicą _GET do odczytania wartości przekazywanych w URI. Twoja formatka przekazuje dane przez metodę POST i "linkuje" do tego samego skryptu, który generuje formatkę. Masz więc (pseudokod):
Kod
if (metoda == "GET") {
  stwórz_formatkę_html ();
}
if (metoda == "POST") {
  przetwórz_dane_z_formatki();  // znajdzie dane z formularza w tablicy $_POST
}


Zauważ, że w zależności od tego, czy wpiszesz adres strony w przeglądarce, czy przekażesz do skryptu dane z forma, to:
1. metoda będzie inna
2. wykona się tylko jeden z w/w bloków kodu

P.S.
Nawet w Win możesz odwoływać się do plików postaci "d:/katalog/plik.txt" czy też "../katalog/plik.txt" - zauważ, że takie rozwiązanie zapewnia 100% przenośność kodu pomiędzy Win a uniksami - nie jestem pewien, czy "..\\katalog\\plik.txt" zadziała na uniksach tak jak na windowsie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 00:08