WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Windows-script för automagiskt formulär (https://www.wn.se/forum/showthread.php?t=9950)

Dr. Blau 2005-09-21 15:39

Nu jäklar...
Har inte scriptat i Windows-miljö så jag har ingen koll på om detta går/hur man gör.

Jag har en lokal miljövariabel på en burk som är av intresse för en php-applikation.
Hur får jag över den från burken till PHP?

Min tanke är att ha något slags lokalt script på burken som när man dubbelklickar på det startar webbläsaren går till rätt adress och liksom emulerar en formulärifyllning...

Så att sidan som laddas är ett PHP-script som kollar om en $_POST[''] kommer och om den är satt läser av den och säger "Tack, den där tar jag" typ.
Och att $_POST-variabeln då är den miljövariabel jag är intresserad av.

Funkar det, och i så fall - hur fanken gör jag?
Om det inte funkar, finns det nåt annat bra?
Är det nån som överhuvudtaget fattad vad jag lallar om? :)

Charlie 2005-09-21 16:46

Det finns kanske effektivare sätt men ett vore att t ex anropa php/mysql och lagra miljövariabeln i en fil / databas först.

Du kan anropa ett php-script genom php.exe och dessutom skicka in parametrar till php-scriptet som du kan hämta via arrayen $argv;

Sedan hämtar du filens/databasens innehåll i formulärscriptet.

Jonas 2005-09-21 17:27

Genom $_ENV så får du tillgång till dessa.

Tex:
Kod:

$_ENV['OS']
returnerar "WINDOWS_NT" på min maskin.

Dr. Blau 2005-09-21 20:56

Mja, env-variablerna gäller ju för den maskin webbservern och PHP körs på.

Jag vill ha över en miljövariabeln från en klientmaskin. Kanske var lite oklart uttryckt av mig...
Alltså: Variabeln jag är intresserad av ligger på klientens dator, jag vill ha över den till servern på något sätt så att PHP kan ta hand om den.

Jonas 2005-09-22 00:30

Citat:

Ursprungligen postat av Dr. Blau
Mja, env-variablerna gäller ju för den maskin webbservern och PHP körs på.


Måste inte vara en webserver ;)

Citat:

Ursprungligen postat av Dr. Blau
Jag vill ha över en miljövariabeln från en klientmaskin. Kanske var lite oklart uttryckt av mig...
Alltså: Variabeln jag är intresserad av ligger på klientens dator, jag vill ha över den till servern på något sätt så att PHP kan ta hand om den.

Då skall du nog kolla på Xyzi's lösning...

Dr. Blau 2005-09-22 11:42

Citat:

Originally posted by Jonas@Sep 22 2005, 00:30

Måste inte vara en webserver

I det här fallet är det ju dock det... :)

Problemet med Xyzi:s lösning är att det inte finns någon möjlighet att köra/komma åt PHP från klientmaskinerna...

Charlie 2005-09-22 17:32

Jo, även jag misstolkade vad du ville ha gjort.

Det finns inget sätt att ifrån serverns sida ta reda på vilka miljövariabeler besökaren har satta, såvida webbläsaren inte skickar denna information via ett HTTP-anrop.

Den enda lösningen jag kan se är ett JavaScript som skickar uppgifterna till servern (_om_ webbläsare tillåter javascript att komma åt miljövariablerna vilket jag starkt betvivlar)... annars kanske du kan ta en titt på java applets (också hyfsat begränsade, men kanske).

Dr. Blau 2005-09-23 12:21

Citat:

Ursprungligen postat av Xyzi
Jo, även jag misstolkade vad du ville ha gjort.
Det finns inget sätt att ifrån serverns sida ta reda på vilka miljövariabeler besökaren har satta, såvida webbläsaren inte skickar denna information via ett HTTP-anrop.


Exakt, det är ju det som är problemet.

Citat:

Ursprungligen postat av Xyzi
(_om_ webbläsare tillåter javascript att komma åt miljövariablerna vilket jag starkt betvivlar)...

JavaScript får läsa en del miljövariabler (typ systemets bakgrundsfärg) men inget jag är intresserad av.

Det lutar helt enkelt åt att det får bli en liten app på klienten som hämtar och skickar variabeln.

Micke_N 2005-09-23 12:51

Allt är möjligt med t ex ActiveX eller Applets. Där var en annan tråd om liknande saker innan på

http://webmasternetwork.jx.se/f12t9878.html

Där jag la ett litet exemple på en ActiveX som får tillgång till klienten. Här finns inte några direkta begränsningar.

/Micke

Dr. Blau 2005-09-23 15:09

Okej, jag har som sagt ingen koll på scripting i Win, har trixat lite vidare utifrån kod-exemplet ovan men det går inte så bra...

Vad jag försöker göra till och börja med är att skapa en liten dutt som bara hämtar miljövariabeln och lägger den i ett hidden-fält i ett formulär.

Det enda den behöver göra är att köra kommandot "set" i kommandoprompten för att spotta ur sig alla satta miljövariabler. Sedan ta resultatet av detta kommando och returnera det så att det skrivs ut där jag kallar VB-mojängen.

Tok-grundläggande såklart men hej och hå vad dålig jag är på den biten. :)

Micke_N 2005-09-23 15:42

Citat:

Originally posted by Dr. Blau@Sep 23 2005, 15:09
Det enda den behöver göra är att köra kommandot set i kommandoprompten för att spotta ur sig alla satta miljövariabler. Sedan ta resultatet av detta kommando och returnera det så att det skrivs ut där jag kallar VB-mojängen.
Tok-grundläggande såklart men hej och hå vad dålig jag är på den biten.

Men då har du ju den lösning som jag lämnade i andra tråden. Där är det ju hur enlkelt som helst att bara byta ut och starta CMD.EXE på klienten och köra SET och sedan är allt klart för att skicka upp resultatet på servern.

Dr. Blau 2005-09-23 15:56

Citat:

Originally posted by Micke_N@Sep 23 2005, 15:42

Men då har du ju den lösning som jag lämnade i andra tråden. Där är det ju hur enlkelt som helst att bara byta ut och starta CMD.EXE på klienten och köra SET och sedan är allt klart för att skicka upp resultatet på servern.

Jo, har trixat lite mer med koden nu, och fått den att spotta ur sig svaret från set i en msg-box enligt sista raden.
Men hur får jag den att istället skriva ut resultatet i value-värdet i typ en

<input type="hidden" name="resultatet" value="en massa grejs" />

?

Micke_N 2005-09-23 17:55

Citat:



Men hur får jag den att istället skriva ut resultatet i value-värdet i typ en
input type=hidden name=resultatet value=en massa grejs /
?


Det går att lösa på ett par olika sätt men ett är ju att direkt där MSGBOX:en är istället göra ett anrop mot din server och antingen POST/GET skicka det till en sida som tar hand om det.

Dr. Blau 2005-09-23 18:45

Citat:

Originally posted by Micke_N@Sep 23 2005, 17:55

ett är ju att direkt där MSGBOX:en är istället göra ett anrop mot din server och antingen POST/GET skicka det till en sida som tar hand om det.

Den grejen är jag sugen på.
Det vore burro-hygglo om du kunde peka ut rätt riktning... :)

Micke_N 2005-09-23 19:15

Citat:

Originally posted by Dr. Blau@Sep 23 2005, 18:45

Den grejen är jag sugen på.
Det vore burro-hygglo om du kunde peka ut rätt riktning...


Hehe, har jag inte redan gjort det :-) Hela ActiveX:en för att komma åt systemet på klienten :-)

Nu är det bara att skriva ihopa någon liknande (dock i javascript men du kan säkert hitta exempel i VB också eller skriva om mitt VB exempel till javascript stället)

http://www.w3schools.com/dom/dom_http.asp

/Micke

Charlie 2005-09-24 14:15

Ditt exempel var väldigt häftigt. Jag har inte tänkt på att man kan åstadkomma sådana saker på det sättet. Hur som helst tror jag att ni missförstår varandra.

Dr. Blau undrar hur man skickar in resultatet till servern istället för att presentera det i en msgbox.

Gammal
Citat:

'Du gör ju såklar vad du vill med resultatet
MsgBox m_Output

Ny
Citat:

document.getElementById("info").value = m_Output;
document.getElementById("sform").submit();

och sedan någonstans i html-koden
<form id="sform">
<input type="hidden" id="info" name="envvar">
</form>

... med reservation för eventuella buggar.
Det skulle även gå att generera ett formulär on the fly men detta gick snabbast att skriva.

Micke_N 2005-09-25 20:27

Citat:

Originally posted by Xyzi@Sep 24 2005, 14:15
Ditt exempel var väldigt häftigt. Jag har inte tänkt på att man kan åstadkomma sådana saker på det sättet. Hur som helst tror jag att ni missförstår varandra.

Dr. Blau undrar hur man skickar in resultatet till servern istället för att presentera det i en msgbox.

Gammal
Citat:

'Du gör ju såklar vad du vill med resultatet
MsgBox m_Output

Ny
Citat:

document.getElementById("info").value = m_Output;
document.getElementById("sform").submit();

och sedan någonstans i html-koden
<form id="sform">
<input type="hidden" id="info" name="envvar">
</form>

... med reservation för eventuella buggar.
Det skulle även gå att generera ett formulär on the fly men detta gick snabbast att skriva.

Jo, jag vet vad han var ute efter

Som jag sa i ett tidigare
"
Det går att lösa på ett par olika sätt men ett är ju att direkt där MSGBOX:en är istället göra ett anrop mot din server och antingen POST/GET skicka det till en sida som tar hand om det.

"

Så den lösningen jag tipsade om hade direkt skickat värdet till valfri server med hjälp av HttpRequest objektet. Men det går givetvis att göra på det sättet som du visar också.

Dr. Blau 2005-09-28 14:34

Det var faktiskt Xyzi:s lösning jag var ute efter till en början. Det lirar med hur min app är uppbyggd i övrigt. Kanske inte det snyggaste men jag kanske ändrar nån gång. :)

Jag visste inte om VBScript använde samma syntax som JS för att fiffla med html-element och när jag sökte runt fick jag inte lika snabbt och enkelt svar som det Xyzi gav. :)


Alla tider är GMT +2. Klockan är nu 09:31.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson