Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z przekazaniem wartosci zmiennej, przekazanie wartosci zmiennej z formularza typu 'file' do inne
kajko84
post 24.11.2006, 15:02:48
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 24.11.2006

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
zbig13
post 24.11.2006, 15:30:53
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


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
Go to the top of the page
+Quote Post
kajko84
post 24.11.2006, 16:00:32
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 24.11.2006

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


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
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: 14.08.2025 - 00:43