Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] komunikacja między stronami
Forum PHP.pl > Forum > Przedszkole
Kshyhoo
Witam. Mam problem z przekazaniem danych z pliku do pliku. Mam formularz w kilku krokach, gdzie dostępne są zmienne "folder", "kolor1" i "kolor2". W pliku głównym inkluduję dodatkowy plik "krok3.php" - w tym pliku obecne są wcześniej wymienione zmienne. W pliku "krok3.php" inkluduję kolejny plik - "sklej02.php" - i tu już nie mam zasięgu zmiennych... Dodam, że w tym ostatnim pliku ma być skrypt łączący grafikę, więc nie może być nic przed nagłówkiem...
Skoro dane w formularzu przesyłane są POSTem, dane do pliku z grafiką próbowałem przesłać GETem.

krok3.php
Kod
$sklej = $_POST['folder'];
$kolor = $_POST['kolor1'] || $_POST['kolor2']

             $kolor1 = $_POST['kolor1'];
             $kolor2 = $_POST['kolor2'];

             include ($sciezka2.'p02/sklej02.php?sciezka=$sciezka2&kolor1=$kolor1&kolor2=$kolor2');

sklej02.php
Kod
$url = "http://localhost/herb/";
$sciezka2 = $_GET['sciezka'];
$kolor1 = $_GET['kolor1'];
$kolor2 = $_GET['kolor2'];

             echo ($_GET['sciezka']);
             echo "
";
             echo ($_GET['kolor1']);
             echo "
";
             echo ($_GET['kolor2']);


Ma ktoś jakiś pomysł?
erix
A sesje? tongue.gif
Kshyhoo
Moderator a jaką treściwą odpowiedź dał... To forum schodzi na psy.
Maveral
W krok3.php, w includzie, masz zmienną, która nie występuje("$sciezka2"). Z tego co piszesz, to w pliku "krok3.php" chcesz includować plik "sklej02.php". W takim razie Twój kod nie ma szans wykonać się poprawnie, gdyż zmienną "$sciezka2", której chcesz użyć w "krok3.php" do includa "sklej02.php", tworzysz dopiero w "sklej02.php". Komputer to nie wróżka winksmiley.jpg
Kshyhoo
Obecnie mam tak:
krok3.php
Kod
$adres = $url.$sciezka2."p02";
$kolor1 = $_POST['kolor1'];
$kolor2 = $_POST['kolor2'];
include ($sciezka2.'p02/sklej02.php');

sklej02.php
Kod
echo "<br />adres: ";
echo ($adres);
echo "<br />kolor1: ";
echo ($kolor1);
echo "<br />kolor2: ";
echo ($kolor2]);
echo "<br />plik: ";

Niby wyświetlane są dane, ale gdy chcę wykonać jakiś inny kod w pliku sklej02.php, nie działa...

Tu przykład < działa tylko pierwsza i druga grafika w kolorze białym...
golaod
@offtop to Kshyhoo

Widzisz jakiś związek bycia moderatorem z tą odpowiedzią ? Gość napisał problem bo z oczywistych powodów szkoda mu w ogóle zajrzeć na chociażby stronę webmade.org gdzie ma dobrze opisane zasięgi zmiennych. Skoro jemu się nie chciało potrudzić o to, to i moderator napisał moim zdaniem bardzo sugestywną odpowiedź "a sesje?", co w moim mniemaniu powinno założyciela topicu skłonić do refleksji. Może wtedy będzie na tyle "fajny", że wpisze w google "sesje php" i przestanie zawracać głowę takimi oczywistymi rzeczami które są rozpisane przynajmniej na 50 stronach polskich....
Kshyhoo
Myślisz, że nie szukałem wcześniej pomocy gdzie indziej? Niestety, jak już kiedyś pisałem na tym forum, nie każdy uczył się X lat, nie każdy wie, po co sięgnąć, alby uzyskać odpowiednie rozwiązanie - najlepsze, najskuteczniejsze i najprostsze. Uważam, że jeżeli ktoś nie chce się podzielić swoją wiedzą a chce sobie "pokiepkować" z innych, niech zostanie gwiazdą kabaretu albo politykiem PiS... A może zamiast sesji mam sięgnąć po prom kosmiczny? Dla mnie jedno i drugie jestfajne z nazwy, ale o jednym i drugim wiem tyle samo.
golaod
Wpisz w google zasięg zmiennych php albo np. dla takich, co nie wiedzą po czym szukać 'zmienne a include'. Uwierz mi nawet na najgłubsze frazy google znajdzie dobrą stronę...
Po drugie nie programuję od X lat w php jednak znane mi jest: http://rtfm.bsdzine.org/. Tobie też by się przydało.

Poza tym, przestań mędrkować, co jest dla Ciebie fajne z nazwy, a co nie. Napisałem już wcześniej: wystarczy się wysilić i przeczytać chociaż prostego tutka na webmade.org i uwierz mi, że po tym tutku będziesz na tyle dobry, żeby tu przyjść i dyskutować raczej o tym dlaczego Twoja funkcja rekurencyjna działa inaczej niż zamierzałeś.

Tak przy okazji lubię się dzielić swoją wiedzą bo sam tutaj znalazłem w cholerę odpowiedzi jak i w innych miejscach. Zobacz tylko ile ja sam otworzyłem tematów mając jakiś problem...jeden na który i tak nie dostałem odpowiedzi jednak sam ją w końcu znalazłem. Napisz mi tylko mędrku dlaczego mam się dzielić wiedzą o tym samym 5000 tys. razy ?

Poza tym piszesz o plikach krok1 krok2 krok3...które includujesz ? A jak to się ma do wysyłania formularza ? Chciałbym, żebyś mi wyjaśnił bardziej konstrukcję Twojego skryptu bo trochę to dziwne. Najlepiej go tu wklej, będzie zdrowiej.
Maveral
Chodzi o to, że starasz się przekazac zmienne z $_POST bez ponownego ich wysyłania. Żeby to prosto wytłumaczyć - w kroku 1 wybierasz sobie rodzaj tarczy herbowej i wysyłasz Twój wybór do następnego kroku. W kroku 2 wysyłasz kolor tarczy do kroku 3, ale komputer sam sobie nie wyśle ponownie wyboru z kroku 1. Do tego najlepiej użyć tablicy super globalnej, a taką znajdziesz właśnie w sesjach pod postacią $_SESSION. Dlatego "erix" o tym pisał winksmiley.jpg I nie ma się co spinać, tylko wystarczy trochę o tym poczytać, bo sesje nie są trudne. Sam zobaczysz jak ci to ułatwi sprawę.
Kshyhoo
OK. W pliku mam formularz w wielu krokach (ogólne ramy):
herb.php
Kod
<?php
  include('config.php');
  if (isset($_POST['krok']) && $_POST['krok'] == "1") {
  
  // tu działający krok 1
  
  } elseif (isset($_POST['krok']) && $_POST['krok'] == "2") {
  
  // tu działający krok 2
include('krok2.php');
  
  } elseif (isset($_POST['krok']) && $_POST['krok'] == "3") {
  
  // tu problemowy krok 3
  include('krok3.php');
  
  } elseif (isset($_POST['krok']) && $_POST['krok'] == "4") {
  
  // tu będzie krok 4 i 5 jak znajdę siły;p
  
  echo "<form name='generator' action='".basename($_SERVER['PHP_SELF'])."' method='POST'>";
  } else {
  }

krok3.php
Kod
<?php
include('config.php');
  
  $sklej = $_POST['folder'];
  $kolor = $_POST['kolor1'] || $_POST['kolor2'] || $_POST['kolor3'] || $_POST['kolor4'] || $_POST['kolor5'] || $_POST['kolor6'] || $_POST['kolor7'] || $_POST['kolor8'] || $_POST['kolor9'] || $_POST['kolor10'] || $_POST['kolor11'] || $_POST['kolor12'] || $_POST['kolor13'] || $_POST['kolor14'] || $_POST['kolor15'] || $_POST['kolor16'];
  
  switch ($sklej) {
      case 'p01': // działający
              $grafa1 = ("/c000.png");
               $obraz1 = $sciezka2.$_POST['folder']."/".$_POST['kolor1'].$grafa1;
              echo "<img src='$obraz1'>";
      break;
  
      case 'p02': // nie działający
              $adres = $url.$sciezka2."p02";
              $kolor1 = $_POST['kolor1'];
              $kolor2 = $_POST['kolor2'];
  
              include ($sciezka2.'p02/sklej02.php');
              echo "<br />";
  //            echo "<img src='sklej02.php?plik=sklej02.png' />";
      break;
  
  }
  ?>

sklej.php
Kod
<?php
header ("Content-type: image/png");
  
  $obraz1 = $adres."/".$kolor1."/c001.png";
  $obraz2 = $adres."/".$kolor2."/c002.png";
  
  $plik=$obraz1;
  $rysunek=imagecreatefrompng ($plik);
  
  imagepng($rysunek);
  imagedestroy($rysunek);
  $rysunek;
  
  // i dla testu:
              echo "<br />adres: ";
              echo ($adres);
              echo "<br />kolor1: ";
              echo ($kolor1);
              echo "<br />kolor2: ";
              echo ($kolor2);
              echo "<br />plik: ";
              echo $adres."/".$kolor1."/c001.png";
  ?>

Zauważcie, że testowe dane się wyświetlają, więc należy sądzić, że mają zasięg w pliku sklej02.php.
erix
  1. Cytat
    To forum schodzi na psy.

    A ja bym powiedział, że lenistwo użytkowników wzrasta. Nie będę o tym dyskutował, to nie jest na to miejsce. Nie tylko mnie się to tyczy - macie coś jeszcze do powiedzenia, jest dział na opinie i hydepark, jest także PW.
  2. takie dane przesyła się w sesji, bo raz:
    1. masz mniejszy bałagan
    2. większą kontrolę nad danymi
    3. user nie musi tyle wysyłać za każdym razem oprócz ?krok=N
  3. już pomijam fakt, że Twój skrypt jest dziurawy jak polskie drogi, ale chyba nie muszę przypominać o przyklejonym wątku dotyczącym bezpieczeństwa skryptów?
Kshyhoo
1. Nie jestem leniwy, szukałem informacji.
2. Nie znam obsługi sesji.
3. Dziurawy... to tylko ma być skrypt łączący grafiki, do banku mi się włamią ;p
erix
Cytat
1. Nie jestem leniwy, szukałem informacji.

Spierałbym się... Celowo podałem jeden kluczowy wyraz w drugim poście.

Cytat
2. Nie znam obsługi sesji.

A widzisz - zabierasz się za budowę zamku bez cegieł?

Cytat
3. Dziurawy... to tylko ma być skrypt łączący grafiki, do banku mi się włamią ;p

Żebyś się nie zdziwił. [; Żadna okazja wykorzystania dziurawego skryptu nie będzie zmarnowana.
Kshyhoo
Przetestowałem wszelkie sposoby załadowania zmiennych. Tekstowo zmienne się wyświetlają, ale jak podpiąć kod obrazka, to:
Cytat
Warning: Cannot modify header information - headers already sent by (...) C:\AppServ\www\herb\graf2\p02\sklej02.php on line 3

Te "sposoby" to to.
golaod
Cytat
Warning: Cannot modify header information - headers already sent by

Skoro nie jesteś leniwy to czemu jeszcze nie znalazłeś odpowiedzi na ten błąd? Dzięsiątki postów na pewno było na ten temat.
Kshyhoo
Odpowiedź znalazłem, ale nie rozwiązanie. Jak takiś mądry, to wskaż mi chociaż jeden. I bez tego wiem, że dwa razy nagłówka się nie da wysłać a przed nim nie może być żadnego znaku. Ale nie każdy rodzi się naukowcem i wie wszystko. Gdybym wiedział, nie pisałbym posta i nie narażał na zbędną krytykę.
erix
Cytat
Ale nie każdy rodzi się naukowcem i wie wszystko.

Coraz więcej rodzi się leniem. Masz google, szukajkę, czego Ci jeszcze trzeba? Kogoś, kto Cię wyręczy?

Cytat
Jak takiś mądry, to wskaż mi chociaż jeden.

A wystarczy ten głupi błąd wpisać do wyszukiwarki...

Zamykam, są dziesiątki wątków na ten temat.
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.