Maciekcz
28.06.2003, 20:23:43
Potrzebuje napisac skrypt ktory wyslalby formularz w trybie "POST", ale aby nie trzeba byo nacisnac przycisku wyslij. (automatycznie ma sam "naciskac" oczywiscie nie powinien byc nawet widoczny).
Dzieki za odp.
Maciek
Jabol
28.06.2003, 20:30:00
a może w js.[xml:1:a5b8d7c2ee]<body onLoad="ktorys_z_js_globalnych_obiektow.formularz.submit();">
[...]
<form name="formularz" method="post" action="przetworz.php">
</form>
[...]
</body>[/xml:1:a5b8d7c2ee]Nie jestem dobry w te klocki, ale może Cię to naprowadzi
Maciekcz
28.06.2003, 20:36:59
Raczaej chciałbym to z php odpalać, ponieważ skrypt ma być uruchamiany z lynxa a lynx chyba nie obsluguje JS.
Ale dzieki.
Moze ktos bawil sie w cos takiego pod php?
Jabol
28.06.2003, 20:40:21
niestety... nikt się w to nie bawił (a conajmniej nie z sukcesem), ponieważ z oczywistych względów jest to po prostu mechanicznie (elektronicznie

) niemożliwe, bo php to SERVER SIDE, co oznacza, że nie ma wpływu na to, co się dzieje u uzytkownika!!!
Maciekcz
28.06.2003, 20:46:49
Intuicja popowiada mi ze to jest mozliwe... Jestes pewnien? Przeciez mozna wywolac w php inna strone z danego skryptu np. przez
[php:1:fd6a4d9251]<?php
header('Location: ...");
?>[/php:1:fd6a4d9251].
Myslalem ze przy okazji jakos mozna przeslac formularz.
Ale moze gdzies moja intuicja sie myli

, jesli tak to prosze o wytlumaczenie mi (jej) tego?
Dzieki
Jabol
28.06.2003, 20:57:44
bo php może oddziaływac na przeglądrke tylko w ograniczonyn zakresie. Header to tak naprawde nic więcej jak specyfikacja protokołu http, którą wykorzystujesz w celu uzyskaniu pewnych celów (ale, boże, przcież nie wysłanie formularza). Ale przeglądarka nie może wywołać wywołania formularza. Ten temat wałkowaliśmy tutaj już tysiące razy. Teraz się zastanów, w jaki sposób, coś co jest wykonywane po stronie serwera może mieć wpływ na to co jest po stronie klienta? Przecież php nawet nie wchodzi do klienta. Więc nawet jak robisz coś za pomocą header, to nie robisz tego za pomocą php, ale za pomocą protokołu http, który ma taką a nie inną specyfikację (i ta specyfikacja nie obejmuje wywoływania formularza, o ile mi wiadomo).
Tak naprawdę wszystko, co php "robi" po stronie klienta robi za pomocą wysyłania odpowiedniego kodu html lub nagłówków. Ale one nie mogą wywoływać zdarzeń takich jak wysłanie forumlarza (chyba, że wyśle js)!
Niech twoja intuicja to przemyśli, może niech wciśnie przycisk szukaj i poczyta troche i niech zrozumie, że to możliwe nie jest.
Maciekcz
28.06.2003, 21:10:58
Dobra zastanowiłem się i nadal nie rozumiem, być może jestem "niekumaty" a być może ty zarozumiały.
Zwróć uwagę ze mój skrypt ma juz z gory ustalone pola do wysłania stałe i niezmienne (jest jakby klientem a nie serwerem) ktory uruchamia skrypt na innym serwerze.
Wiec jezeli dziala w ten sposob metoda get
[php:1:d05928bcef]<?php
header("Location: httpL//skrypt.php?zmienna=teskt&zmiennadwa=drugitekst");
?>[/php:1:d05928bcef]
<b>To dlaczego niemialaby dzialac metoda post?</b>
Nadal tego nie rozumiem, ale jezeli masz na mnie naskakiwac to lepiej nie odpowiadaj....
Uwierz mi ze szukalem podobnych postow na forum i nie znalazlem... (byc moze za krotko szukalem, ale to juz inna sprawa)
Jezeli ktos moglby mi objasnic ta roznice pomiedzy post i get to bede wsdzieczny.
zalew
28.06.2003, 22:35:42
nie czaje jednego.. chcesz wyslac zmienne zaraz po zaladowaniu sie pliku rozumiem ? skoro nie wymagasz od usera wpisywania czegokolwiek to po co ci formularz ?
Maciekcz
28.06.2003, 23:06:14
Pisze skrypt ktory bedzie wysylal smsa raz dziennie. wykorzystuje linuksowego crontaba i lynxa, ktory mialby otworzyc strone ktoraby wyslala formularz. Dane kore ma wyslac SMSem ustali mi skrypt. To ma byc skrypt tylko dla moich potrzeb.
Jabol
29.06.2003, 09:38:05
Hmmm... a jestem ciekawy, czy wiesz, gdzie znajdują się i jak wyglądają dane przy pobieraniu ich metodą post. Ja wiem. Wysyłanie danych metodą post polega na wysłaniu przez przeglądarke czegoś w takim stylu.
Kod
POST /scrypt.php HTTP/1.1
Host: xxx.pl
[...]
Content-Type: application/x-www-form-urlencoded
Content-Length: xxx
zmienna=bleble+bleble+cos+cos+innegp&inna_zmienna=jakas_wartosc
A wysłania nagłówków przez przeglądarke nie wymusisz. Tak to już jest.
A do twoich celów mógłbyś po prostu uruchamiać skrypt za pomocą crontaba. To robisz po prostu tak:
Kod
/usr/local/bin/php /home/xxx/scrypty/scrypt.php
albo umieszczasz na początku skryptu
Kod
#!/usr/local/bin/php
Teodor
29.06.2003, 10:05:49
mam dosc podobna sytuacje:
Mam skrypcik ktory sprawdza moje konta pocztowe i jak dostane maila to wysyla mi sms'a.
tylko ze u mnie w skrypcie nie ma ani kawalka html (czyli zadnych naglowkow) wiec jezeli Twoj skrypt nie wymaga niczego od uzytkownika to po co POST?
No chyba ze uzywasz skryptu ktory korzysta z innej strony na ktorej jest jakis formularz to wtedy proponuje przyjrzec sie socketom (fsockopen,fputs)
a co do crona to moim zdaniem wystarczy curl
Pozdrawiam
Maciekcz
30.06.2003, 09:12:48
Rzeczywiscie fsockopen i fputs( ,'POST ....') zalatwily sprawe, dzieki.
A jednak bylo to mozliwe (do przemadrzalego pana Jabola).
wirtus
30.06.2003, 13:01:18
maciekcz
przemadrzaly t zdecydowanie jestes TY
rozwiazanie jest zupelnie inne niz to, ktore ty proponowales i nie ma nic wspolnego z a header !!!!!!!
Wiec moze zastanow sie chlopie co piszesz
dragossani
30.06.2003, 14:20:38
Jabol miał rację co do wpływania na działanie przeglądarki z poziomu php. Od początku wystarczyło spojrzeć na problem nieco szerzej. Co chcemy osiągnąć? Wysyłkę danych metodą post - a nie autosubmit formularza. Sprawa rozbiła się o nieprecyzyjnie sformuowane pytanie.
Maciekcz
30.06.2003, 15:59:58
Tak nieprecyzyjnie zadalem pytanie, ale jak mozna sie pytac precyzyjnie o cos, o czym sie nie ma zielonego pojecia.
Dobra koniec watku
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.