Spouštění scriptu na jiném webu - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

Spouštění scriptu na jiném webu

17. července 2002, 00.00 | Popis řešení praktického problému jednoho ze čtenářů Builder.cz. Můžete se tak dozvědět jak v ASP stránkách využít pomocí Javascriptu funkcionalitu PHP. Což se vám může hodit v programování web aplikací, a to nejen v tomto konkrétním případě.

Poznámka redakce: Následující text není klasický článek, jak jej znáte z formátu Builder.cz. Jedná se praktický příspěvek jednoho ze čtenářů našeho serveru, řešící zajímavý konkrétní problém.

Potřeboval jsem vyřešit problém se spouštěním scriptů na jiném webu a s vracením hodnot do procesu ( JAVAscript), který jej spustil. Vzdáleně podobný princip používají různá počítadla, ale ty vracejí nazpět buď čísla, nebo obrázky. Já vracím nazpět JAVAscript kód, např: eval ("DNS='muj pocitac'"); Tento kód se pak provede na straně klienta, tzn. mohu naplnit u klienta proměnné, které mohu v dalším kroku dostat do SESSION.

Popis problému


Potřeboval jsem ve svém ASP modulu spustit script PHP na jiném webu, který by vrátil IP, DNS, Browser a OS návštěvníka webu, aniž by se při tom otevírala další okna. Nemohl jsem použít Active X od Pstruhu, který toto plně řeší. Protože v PHP není zjištění DNS problém použil jsem tuto konstrukci:

Test.html

<html>
<head>
        <title>DNS</title>
</head>
<body onload="Start();">
<script language="JavaScript"><!--

 var DNS="";            // nutne pocatecni vynulovani
 var IP="";
 var OS="";
 var Browser="";

// tento prikaz zavola na zadanem serveru PHP modul a do
// promenne "DNS","IP","OS" a "Browser" preda jmeno pocitace uzivatele.
// v tomto miste se generuji prikazy: eval('DNS="jmeno
pocitace"');eval('IP="127.0.0.1"'); ....
//******************************************************
 document.write('<'+'SCRIPT language="javascript"
SRC="http://emailsender.wz.cz/include/dns.php'+ '">' + '</'+'script>');  
// Na jednom radku.  V TOMTO JE CELA FLIGNA !!
//******************************************************
//-->

 function Start()
 {
 document.form.DNS.value=DNS; // promene DNS, IP, OS, Browser 
                              //se naplni prikazy EVAL,
 document.form.IP.value=IP; // ktere vygeneruje PHP modul
 document.form.OS.value=OS;
 document.form.Browser.value=Browser;
 document.form.submit(); // v modulu DALSI.ASP jiz budou promenne dostupny
                         // v SESSION k dalsimu zpracovani
 }
</script>

<FORM name="form" action="dalsi.asp">
        <input type="hidden" name="DNS" value="">
        <input type="hidden" name="IP" value="">
        <input type="hidden" name="OS" value="">
        <input type="hidden" name="Browser" value="">
</form>
Tato stranka se za chvili sama prepne a je zobrazen vysledek.
</body>
</html>

Dalsi.asp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <title>Untitled</title>
</head>
<%
session("DNS")=request("DNS")
session("IP")=request("IP")
session("OS")=request("OS")
session("Browser")=request("Browser")
%>
<body>
Data jsou predány z adresy : http://emailsender.wz.cz/dns.php
<br>
<b>DNS=<%=session("DNS")%></b><br>
<b>IP=<%=session("IP")%></b><br>
<b>OS=<%=session("OS")%></b><br>
<b>Browser=<%=session("Browser")%></b><br>
</body>
</html>

Modul PHP dns.php

<?
function GetOS()
{
/* $system obsahuje nazev operacniho systemu - stejnym zpusobem pomoci
eregi() se zjisti, zda urcity nazev operacniho systemu vyhovuje promenne
$HTTP_USER_AGENT */
$HTTP_USER_AGENT=getenv("HTTP_USER_AGENT");
 if(eregi("linux",$HTTP_USER_AGENT))
 {
 $BPlatform = "Linux";
 }
 elseif(eregi("win32",$HTTP_USER_AGENT))
 {
 $BPlatform = "Windows";
 }
 elseif((eregi("(win)([0-9]{2})",$HTTP_USER_AGENT,$match)) ||
(eregi("(windows) ([0-9]{2})",$HTTP_USER_AGENT,$match)))
 {
 $BPlatform = "Windows $match[2]";
 }

elseif(eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
 {
 $BPlatform = "Windows NT $match[2]";
 }
 elseif(eregi("(windows
nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
 {
 $BPlatform = "Windows NT $match[3]";
 }
 elseif(eregi("mac",$HTTP_USER_AGENT))
 {
 $BPlatform = "Macintosh";
 }
 elseif(eregi("(sunos)
([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
 {
 $BPlatform = "SunOS $match[2]";
 }
 elseif(eregi("(beos)
r([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
 {
 $BPlatform = "BeOS $match[2]";
 }
 elseif(eregi("freebsd",$HTTP_USER_AGENT))
 {
 $BPlatform = "FreeBSD";
 }
 elseif(eregi("openbsd",$HTTP_USER_AGENT))
 {
 $BPlatform = "OpenBSD";
 }
 elseif(eregi("irix",$HTTP_USER_AGENT))
 {
 $BPlatform = "IRIX";
 }
 elseif(eregi("os/2",$HTTP_USER_AGENT))
 {
 $BPlatform = "OS/2";
 }
 elseif(eregi("plan9",$HTTP_USER_AGENT))
 {
 $BPlatform = "Plan9";
 }
 elseif(eregi("unix",$HTTP_USER_AGENT) || eregi("hp-ux",$HTTP_USER_AGENT))
 {
 $BPlatform = "Unix";
 }
 elseif(eregi("osf",$HTTP_USER_AGENT))
 {
 $BPlatform = "OSF";
 }
 else{$BPlatform = "Unknown";}
return trim($BPlatform);
}

//**************************************************
function GetBrowser()
//  Vrátí název, verzi a platformu
{
 $HTTP_USER_AGENT=getenv("HTTP_USER_AGENT");
 // Browser
 if(eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}",$HTTP_USER_AGENT,$match) ||
eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}",$HTTP_USER_AGENT,$match))
 {
 $BName = "Opera"; $BVersion=$match[2];
 }

elseif(eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
 {
 $BName = "Konqueror"; $BVersion=$match[2];
 }

elseif(eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})",$HTTP_USER_AGENT,$m
atch))
 {
 $BName = "Lynx "; $BVersion=$match[2];
 }
 elseif(eregi("(links) \(([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
 {
 $BName = "Links "; $BVersion=$match[2];
 }
 elseif(eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
 {
 $BName = "MSIE"; $BVersion=$match[2];
 }
 elseif(eregi("(netscape6)/(6.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
 {
 $BName = "Netscape "; $BVersion=$match[2];
 }
 elseif(eregi("mozilla/5",$HTTP_USER_AGENT))
 {
 $BName = "Netscape"; $BVersion="1";
 }
 elseif(eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
 {
 $BName = "Netscape"; $BVersion=$match[2];
 }
 elseif(eregi("w3m",$HTTP_USER_AGENT))
 {
 $BName = "w3m"; $BVersion="Unknown";
 }
 else{$BName = "Unknown"; $BVersion="Unknown";}
 return trim($BName).trim($BVersion);
}

$DNS=trim(gethostbyaddr($REMOTE_ADDR));
// do promenne "DNS" se dosadi jmeno pocitace. Tento prikaz se provede
// u klienta v prohlizeci !!!
echo "eval('DNS=\'".$DNS."\'');";
echo "eval('IP=\'".$REMOTE_ADDR."\'');";
echo "eval('OS=\'".GetOS()."\'');";
echo "eval('Browser=\'".GetBrowser()."\'');";
?>

Zdrojový kód je uveřejněn na serveru emailsender.wz.cz

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » JavaScript  

 » Rubriky  » Web  

 » Rubriky  » ASP  

 » Rubriky  » Windows  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: