pobranie pliku i wyslanie emaila po Submit |
pobranie pliku i wyslanie emaila po Submit |
8.04.2015, 13:35:32
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 |
|
|
8.04.2015, 13:38:52
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) |
|
|
|
8.04.2015, 14:19:17
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? |
|
|
8.04.2015, 14:20:16
Post
#4
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) |
|
|
|
8.04.2015, 20:15:03
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:
|
|
|
8.04.2015, 20:29:59
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. |
|
|
8.04.2015, 20:54:12
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 |
|
|
8.04.2015, 20:56:25
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 |
|
|
13.04.2015, 18:17:10
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 @Acu, jeszcze jedno, bo znow utknalem 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 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 |
|
|
13.04.2015, 18:28:03
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 |
|
|
13.04.2015, 20:28:16
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. |
|
|
13.04.2015, 20:36:06
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
|
|
|
13.04.2015, 21:03:27
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. |
|
|
13.04.2015, 21:07:57
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
|
|
|
13.04.2015, 21:14:27
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.
|
|
|
13.04.2015, 21:17:41
Post
#16
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
|
|
|
13.04.2015, 21:23:34
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 |
|
|
13.04.2015, 21:33:11
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(); ?> (( 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 Ten post edytował robert1974 13.04.2015, 21:37:38 |
|
|
13.04.2015, 21:45:55
Post
#19
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
|
|
|
13.04.2015, 21:58:39
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? |
|
|
Wersja Lo-Fi | Aktualny czas: 12.06.2024 - 14:38 |