10. maj 2005 - 13:37Der er
10 kommentarer og 1 løsning
javascript variabel til php
Hej Jeg forsøger at lave et lille statistik program til min side, og her vil jeg gerne hente skrærm opløsningen ind og det er så umiddelbart ikke noget problem men hvordan får jeg lige kørt den over i en php variable til at sætte ind i en database.
Jeg har tidliger hørt at da JS jo er client side og PHP serverside så er det lidt specielt, men JS skulle på en eller anden måde køres først og så php på siden blev kørt på en anden måde med en fake gif eller noget? er der nogen der ved mere om det? Her er starten på scriptet jeg henter ind i siderne via en include
<Script language="JavaScript"> if (navigator.appName == 'Netscape' && document.layers != null) { wid = window.innerWidth; hit = window.innerHeight; } if (document.all != null){ wid = document.body.clientWidth; hit = document.body.clientHeight; } //document.write('Height '+hit+', Width '+wid); </script>
<?PHP $display = ""; function ConnectDB(){ // connects to database $conn = mysql_connect('localhost', 'data', '4321') or die('Could not connect: ' . mysql_error()); mysql_select_db('data_com') or die('Could not select database'); return $conn; } function WriteLog(){ $remoteIP=$_ENV["REMOTE_ADDR"]; $query="INSERT INTO Data SET Dato_ind=now(), Dato_ud=now(), Ip=\"$remoteIP\" "; $results=mysql_query($query); } $conn=ConnectDB(); WriteLog(); $conn->close;
På fake_gif.php kan du så lave noget dataopsamling som du nu lyster. Er du rigtig sej returnerer du et GIF-billede med den rigtige header, så er alt som det skal være ;)
Så du mener at fake_gif skulle se nogenlunde således ud
<?PHP function ConnectDB(){ // connects to database $conn = mysql_connect('localhost', 'data', '4321') or die('Could not connect: ' . mysql_error()); mysql_select_db('data_com') or die('Could not select database'); return $conn; } function WriteLog(){ $remoteIP=$_ENV["REMOTE_ADDR"]; $query="INSERT INTO Data SET Dato_ind=now(), height=\"$height\", Dato_ud=now(), Ip=\"$remoteIP\" "; $results=mysql_query($query); } $conn=ConnectDB(); WriteLog(); $conn->close;
?>
og at document.write('<img src="fake_gif.php?height='+hit+'&width='+wid+'" border="0">'); er på samme side som :
<Script language="JavaScript"> if (navigator.appName == 'Netscape' && document.layers != null) { wid = window.innerWidth; hit = window.innerHeight; } if (document.all != null){ wid = document.body.clientWidth; hit = document.body.clientHeight; } //document.write('Height '+hit+', Width '+wid); </script>
??????????
Synes godt om
Slettet bruger
10. maj 2005 - 14:30#3
Noget i den stil, men $query="INSERT INTO Data SET Dato_ind=now(), height=\"$height\", Dato_ud=now(), Ip=\"$remoteIP\" "; bør nærmere være $query="INSERT INTO Data SET Dato_ind=NOW(), height=\"" . $_GET['height'] . "\", Dato_ud=now(), Ip=\"" . $remoteIP . "\"";
Iøvrigt er der ingen grund til at bruge $_ENV brug $_SERVER i stedet, $_ENV er en global variabel, med en global variabels risiko for "forurening" fra andre scripts.
Synes godt om
Slettet bruger
10. maj 2005 - 14:32#4
Og ja, document.write skal være lige efter dit andet JS :)
Skærm bredden får du med screen.width og højden med screen.height
Sådan set kan det være hip som hap, for der er jo ikke rigtig noget at bruge det til, med mindre man hendler med skærmrensemidler og gerne vil have en idé om, hvormange kvadratmeter skærm, der er på markedet :)
eller har i et andet forslag uden at bruge en reload eller er der en anden måde at gøre det på, så man kan nøjes med at at lave et tage på en side?
Jeg bruger dette i øjeblikket: Hvor statInsert_2_test.php indeholder indeholder ovenståenden <?php define ("pageName", "Test side forside"); include_once ("statInsert_2_test.php"); ?>
Jeg har ændret den lidt og prøvet at lave dette script istedet
Så dette er det jeg bruger nu, som et stk java script: <Script language="JavaScript"> var kundeNr = "46927471"; var pageName = "Test side forside"; var res = window.screen.width + "x" + window.screen.height; document.write('<img src="statInsert_2_test.php?Display=' + res +'&kundeNr=' + kundeNr + '&pageName' + pagename +'" border="0">'); </script>
Men er der ikke nogen måde så man kan lave denne del <Script language="JavaScript"> var kundeNr = "46927471"; var pageName = "Test side forside"; var res = window.screen.width + "x" + window.screen.height; document.write('<img src="statInsert_2_test.php?Display=' + res +'&kundeNr=' + kundeNr + '&pageName' + pagename +'" border="0">'); </script> som et delvist php script så at hvis brugeren ikke bruger javascript så tager den de andre elementer med over.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.