![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
czesc,
troche sie zaplatalem... mam prosta forme z name, email i guzik Submit. po wcisnieciu Submit chce by: 1. zapisalo sie do bazy name, email 2. sciagnal sie plik opcja1 ktora probuje:
a w php mam wowczas:
na poczatku tego php moge dodac zapisa do bazy, ale jak pobrac do niego wartosci name i email |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
zaraz probuje, dzieki
pytanie: jesli robie tak:
to wtedy przeladowuje akutalna strone. I wtedy moge uzyc var_dump($_POST); by zobacz ustawione wartosci. a tuta robie:
czyli z odp rozumiem, ze $POST bedzie dostepna w downloadFile.php pliku. A w jaki sposob moglbym zobaczyc co rzeczywiscie tam jest dostepne? bo var_dump($_POST); mi tam nie zadziala. .......................................... albo jeszcze inaczej czy daloby sie zrobic to w ten sposob:
by przeladowac obecna strone, wtedy moge sprawdzic czy $POST name i email sa ustawione i zapisac je do bazy, tylko jak wowczs zapoczatkowac pobieranie pliku? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
genialne, dzieki. teraz php pokazuje co dostaje w $POST a zatem latwiej mi zakododowac jego zawartosc.
jeszcze musze dopytac: 1. w przypadku uzycia oddzilenego php ktory sciaga plik, zapisuje do bazy i wysyla email .... jesli potrzebuja jeszcze jakiesj wartosc ktora nie jest w form a zatem nie jest dostepna w POST to co najlepiej zrobic? Czy wstawic ja do form jako hidden wartosc by w ten sposob byla dostepna w php? 2. czy nie da sie zrobic tego (jak pisalem w opcji2) by nie uzywac dodatkowego pliku php, a zeby logika wyslania emaila, zapisu do bazy (te dwie wiem ze sie da) oraz sciagniecia pliku byly czescia glownej strony? cos jak:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
1. Ale o jaką wartość chodzi? Czemu nie możesz tego na sztywno wstawić do skryptu?
2. Wstaw po prostu do else ten kod, który teraz masz w oddzielnym pliku. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
ad2.
jak pobieranie pliku przeniose to dostaje blad typu: Warning: Cannot modify header information - headers already sent by (output started at /moj-plik-download/index.php:5) in /moj-plik-download/index.php on line 173 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
Bo przed header wysyłasz coś innego do przeglądarki (html, echo w php).
http://phpedia.pl/wiki/Cannot_add_header_i...rs_already_sent |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
tak, wiem, czytalem o tym, to prawda wysylam, ale to by oznaczalo ze moj else musialby robic tylko te rzeczy i nic nie rysowac.
Czyli moze jednak w oddzilnym pliku sprobuje (IMG:style_emoticons/default/smile.gif) @Acu, jeszcze jedno, bo znow utknalem (IMG:style_emoticons/default/smile.gif) wciskam guzik DOWNLOAD, ...jesli uzywam tej opcji (<form action="downloadFile.php" method="post">) to $POST wartosci sa dostepne w downloadFile.php i to dziala juz OK: pobieram plik i zapisuje info do bazy. ... tylko ze jeszcze to na stronie glownej (gdzie jest guzik) musze sie jakos dobrac do tych wartosci z $POST, bo teraz po kliknieciu ten guzik DOWNLOAD musi zniknac i wypisac musze podziekowania. na stronie glownej dodalem dla debugowania : var_dump($_POST); ale zarowno przed wcisnieciem guzika jak i po, tablica $POST jest pusta. rozumiem, ze to zachowawnie jest zwiazane z <form action="downloadFile.php" method="post"> bo w przeszlosci gdy uzywalem <form name="before_form" method="POST" action=""> (akcja pusta) to $POST byl dostepny na stronie glownej/wywolujacej. .... jeszcze taki mialem pomysl, ale tez niewypal (IMG:style_emoticons/default/sad.gif) chcialem w tym skrypcie php na jego koncu zrobic tak: $_SESSION['FM_downloaded'] = true; header("Location: ". $_SERVER['REQUEST_URI']); a potem w glownym programie sprawdzac czy zmienna sesyjna jest ustawiona i jesli tak, to nie wyswietlac ponownie formularza. Niestety poniewaz w tym php mam juz na koncu:
to wywolanie trugi raz: header("Location: ". $_SERVER['REQUEST_URI']); nie dziala jakis pomysl ktos moze? ogolnie, tak jak pisalem wyzej, daze to tego by po wypelnioneniu formularza i wcisnieciu guzika Submit od razu sciagal sie plik (i to sie robi) ale tez by przeladowywala sie strona glowna i juz nie pojawial formularz. .... naczytalem sie w google, chyba to jednak nie takie proste, musze zmienic sposob rozwiazania (IMG:style_emoticons/default/sad.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Cytat ogolnie, tak jak pisalem wyzej, daze to tego by po wypelnioneniu formularza i wcisnieciu guzika Submit od razu sciagal sie plik (i to sie robi) ale tez by przeladowywala sie strona glowna i juz nie pojawial formularz. Zrób to na odwrót. Po przesłaniu formularza: - ustaw zmienną sesyjną na true - przekieruj na stronę formularza - sprawdz zmienna sesyjna i jezeli jest true to nie wyswietlaj formularza, ustaw zmienna sesyjna na false albo ją usuń i pobieraj plik, w przeciwnym wypadku po prostu pokaz formularz |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
teraz sobie Wiadomosci ogladalem i wymyslilem cos takiego:
1. na stronie glownej mam formularz 2. wypelniam go i wciskam guzik "Request file", to spowoduje przeladowanie strony glownej, z ustawionymi wartociami w $POST. to pozwoli mi w php na glownej stronie obsluzyc: a.sprawdzenie poprawnosci danych wpisanych przez uzytkownika, b. zapisanie info do bazy, c. wyswietlenie drugiego guzika o nazwie "Download file". 3. wcisniecie guzika "Download file" pobierze plik taki pomysl, ale czy dobry to sam jeszcze nie wiem. Zrób to na odwrót. Po przesłaniu formularza: - ustaw zmienną sesyjną na true - przekieruj na stronę formularza - sprawdz zmienna sesyjna i jezeli jest true to nie wyswietlaj formularza, ustaw zmienna sesyjna na false albo ją usuń i pobieraj plik, w przeciwnym wypadku po prostu pokaz formularz to tez super pomysl, zaraz sprawdze w praniu. @Turson: w Twoim rozwiazaniu otrzymuje ten blad: "Cannot modify header information - headers already sent by ..." z ktorym nie potrafie sobie poradzic. Probuje. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Wklej treść błędu w Google a na pewno sobie poradzisz. Dość popularny temat. No i pochwal się kodem
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
tak, buszuje w google, ...no i poradzilem sobie ze przenioslem ta logike (sprawdzenie czy zmienna $SESSION ustawiona jest (przez php)) na sam poczatek glownej strony, wtedy bledu o headerze nie dostaje, ale plik sie czemus nie sciaga. Sprawdzam jeszcze.
wyglada to tak: formularz jest tak:
w pliku downloadFile.php zapisuje do bazy info i na koncu ustawiam zmienna $SESSION po czym przekierowuje na strone glowna:
a na stronie glownej, na samym poczatku zrobilem:
czy dam exit; po readfile() czy nie dam, nic nic nie zmienia. Bledu header teraz nie wyrzuca teraz, bo jest na poczastku, ale z jakiegos powodu pliku nie sciaga. A sam kod pobrania pliku powinen byc OK, bo jak go wkleje do php i usune stamtad przekierowanie header("Location: /strona_glowna/"); to dziala. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Po readfile daj exit
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
nie pomoga, nie ma zadnego bledu na stronie, ...ale nie sciaga pliku.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
Możesz to wszystko uprościć w ten sposób, że:
form action="" po naciśnięciu Wyślij javascriptem: otwierasz w nowym oknie downloadFile.php + wysyłasz formularz, na stronie głównej wyświetlasz komunikat albo na stronie głównej dajesz iframe src="downloadFile.php" 1px i chyba też powinno zadziałać. Ten post edytował Aqu 13.04.2015, 21:24:29 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
@Turson:
bravo!!!! jak wstawialem ten kod sciagania na poczatku strony glownej to wstawilem go nawet przed: <?php session_start(); ?> (IMG:style_emoticons/default/sad.gif) (( shame. i wtedy nie widzial $_SESSION['FM_downloaded'] czyli nie wchodzil do IF, czyli nie sciagal. Juz dziala. Krok do przodu. Wielkie dzieki. czyli w sumie wrocilismy do wersji ktora wczesniej rozwazalem z Acu, ze mozna by wszystko zrobic na stronie glownej, bez oddzielnego php. Musze to przemyslec, bo teraz w sumie w php pliku jest tylk zapis do bazy i ustawianie Session. A co to znaczy wlaczenie pelnego logowania? Oj, sporo nauki przede mna (IMG:style_emoticons/default/smile.gif) Ten post edytował robert1974 13.04.2015, 21:37:38 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
oic... znow cos nie tak... wlasnie patrze, ze jak po pobierz plik robie exit to on juz nie przetwarza reszty strony / reszty kodu z tego pliku.
czyli nie moge zrobic sprawdzenia czy jesli $SESSION ustawiona to nie wyswietlaj formularza ponownie. znow cos robie zle? |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Więc przenieś pobieranie na sam koniec pliku jak już jest strona załadowana. Tyle że przed pobieraniem bodajże musisz wyczyścic bufor, bo wcześniej był content
|
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
zatoczylismy kolo (IMG:style_emoticons/default/smile.gif) , bo jesli przenoisze ta czesc sprawdzajaca i sciagajaca plik nizej to dostaje slynny blad: Warning: Cannot modify header information - headers already sent by
kombinuje jeszcze z tymi funkcjami: ob_start(); ob_end_flush(); ob_end_clean() ale wciaz nie ogarniam. |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Tak tylko dodam: unikaj readfile do pobierania plików. W przypadku większych plików (a wbrew pozorom wcale nie tak dużych) z łatwością przekroczysz limit dostępnej pamięci i wysypiesz aplikację. Readfile wczytuje zawartość całego pliku do pamięci, a na potrzeby pobierania pliku to trochę bez sensu. Dla 1mb plików problem raczej nie wystąpi, ale w ramach "dobrych zwyczajów" proponuję rozważyć jakieś rozwiązanie z porcjowaniem czy wykorzystaniem serwera HTTP do pobierania pliku. (IMG:style_emoticons/default/smile.gif)
Ten post edytował Nattfarinn 14.04.2015, 08:02:36 |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
dzieki za komentarz, dobra uwaga, ja pliki mam akurat male, ... no i wydawalo mi sie ze to wygodne rozwiazanie w stylu, wciaskasz guzik i masz plik u siebie.
niestety, wciaz sie z tym zmagam i cos robie zle. Ten post edytował robert1974 14.04.2015, 08:07:45 |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Przypomniało mi się, że nie musisz używać niczego specjalnego do pobierania pliku. header() na ścieżkę z plikiem powininen wymusic przeglądarce pobieranie
|
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 2.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
a ja sie dzis poddalem z tamtym rozwiazaniem :-( ... i sprobowalem swojego pomyslu z 2 krokowym sciagnieciem. Wyglada ze dziala. Ale walka byla. Dzieki za pomoc.
dzieki i za ten kolejny pomysl, sprobuje z tym headerem tylko, ale jak psychicznie odpoczne od tematu (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 01:37 |