Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kolejność wykonywania kodu
Forum PHP.pl > Forum > Przedszkole
tomazzi
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?
webdice
Jeśli pole formularza subbmitted istnieje to zapisz do pliku wartość z pola formularza newstring.

PS. Używaj tagów bbcode.
b4rt3kk
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.
abort
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.
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.