Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z przekazaniem wartosci zmiennej
Forum PHP.pl > Forum > PHP
kajko84
witam

otoz mam taki problem: mam 3 pliki (3 rozne skrypty php): kopiuj.php aktualizuj.php usun.php

1. skrypt kopiuj.php ma za zadanie upload wybranego przez usera pliku na serwer poprzez formularz typu file i 'przeslanie' nazwy tego pliku do 2 kolejnych skryptow
2. skrypt aktualizuj.php ma odczytac nazwe tego pliku i zaktualizowac baze mysql
3. skrypt usun.php ma odczytac nazwe tego pliku i usunac go z serwera po czym wyzerowac wartosc zmiennej zawierajacej nazwe pliku tak zeby mozna bylo bez problemu zrobic co trzeba z kolejnym plikiem smile.gif

zrobilem to za pomoca setcookie ($_COOKIE) i na serwerze testowym wszystko smigalo jak ta lala...
fragment kodu wygladal tak:

plik kopiuj.php

  1. <?php
  2. if ($request == 'GET') {
  3.  
  4. echo "<tr class=tabela_wiersze align=center><td colspan=2>n";
  5. echo "<form enctype='multipart/form-data' action='$self' method='POST'>
  6. <table width=400 border=0 align=center cellpadding=0 cellspacing=0>
  7. <tr class=tabela_wiersze align=center><td colspan=2><br>
  8. <input type='hidden' name='MAX_FILE_SIZE' value='1500000' />
  9. Wybierz plik: <input name='uploadedfile' class='przycisk' type='file' /><br />
  10. </td></tr><tr class=tabela_wiersze align=center><td colspan=2>
  11. <input type='submit' class='przycisk' value='Kopiuj plik' />
  12. </td></tr></table></form>n";
  13. echo "</tr></td>n";
  14. }
  15.  
  16. elseif ($request == 'POST') {
  17.  
  18. $target_path = "./";
  19. $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
  20. $_FILES['uploadedfile']['tmp_name'];
  21. $nazwa = ($_FILES['uploadedfile']['name']);
  22.  
  23. setcookie('nazwa_pliku', $nazwa, time()+1800);
  24. ?>


natomiast pliki aktualizuj.php i usun.php odczytywaly to tak:

  1. <?php
  2. if (isset($_COOKIE['nazwa_pliku'])) {
  3. $nazwa_pl = ($_COOKIE['nazwa_pliku']);
  4. ?>


plik usun.php resetowal ciastko ustawiajac czas na ujemny:

  1. <?php
  2. setcookie('nazwa_pliku', '', time() - 1800);
  3. ?>


PROBLEM pojawil sie gdy przenioslem stronke na zupelnie inny serwer docelowy na ktorym cookies najwyrazniej nie dzialaja poprawnie. blad wyglada tak:

Warning: Cannot modify header information - headers already sent

jak rozwiazac problem? jak przeslac nazwe tego pliku jaka zmienna do kolejnego skryptu? moze ktos ma jakies propozycje? bede bardzo wdzieczny...
pozdrawiam
zbig13
Blad oznacza, ze przed wyslaniem/odczytaniem cookie przeslales juz do przegladarki jakies naglowki (tagi html, zwykle znaki, moze to byc nawet spacja). Najprosciej w tym przypadku skorzystac z bufora, zobacz: ob_start" title="Zobacz w manualu php" target="_manual, ob_flush" title="Zobacz w manualu php" target="_manual, ob_clean" title="Zobacz w manualu php" target="_manual
kajko84
wielkie dzieki 'zbig13'!

problem rozwiazany, a wystarczylo dodac na poczatku i koncu kazdego pliku odpowiednio ob_start(); oraz ob_end_flush(); biggrin.gif

wszystko pieknie smiga smile.gif jeszcze raz dzieki i pozdrawiam
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.