Avatar billede bacce.dk Nybegynder
22. maj 2003 - 15:51 Der er 47 kommentarer og
1 løsning

javascript variabler til php variabler ?

Hejsa
Jeg sidder og bygger på noget statistik halløj og i denne statistik vil jeg også gerne se lidt om brugerens opløsning samt antal farver.
Mig bekendt kan netop de 2 her kun findes ved hjælpe af javascript og har så dette stykke kode liggende

<script type="text/javascript">
<!--
var colord = window.screen.colorDepth;
var res = window.screen.width + "x" + window.screen.height;
//-->
</script>

meen så er problemet.. hvordan kan jeg bruge dem i php variabler ??
Avatar billede fangel Nybegynder
22. maj 2003 - 15:54 #1
dette kan du ikke uden at reloade...

forklaring:
---
PHP er et server-side programmerings sprog (det er derfor at du skal have en server for at kunne teste det)... når en browser spørger efter en side, tænker webserveren "ohhh, den fil hedder .php, så jeg må hellere få PHP til at kigge på den", der efter kigger PHP i filen efter <?php og ?> tegn, hvis den møder sådanne tegn fortolker den det er står imellem.
når dette er sket siger PHP "så, nu må du godt sende siden til browseren" til webserveren. så sender webserveren siden til browseren.
Når (og ikke før) siden så kommer frem til browseren tænker den "det kan være der står noget JavaScript i filen, jeg må hellere tjekke", så leder den efter <script> tegn, og hvis de finder sådan nogle, så fortolker browseren det der står imellem som JavaScript. derefter vises siden for brugeren.

DERFOR, kan du ikke få JavaScript til at udskrive en JavaScript variabel, da PHP er færdig med at kigge på siden, længe før JavaScript overhovedet ved om der er noget JavaScript på siden...

SÅ, det du vil lave er altså umulig med mindre du reloader din side... du kan altså KUN overføre fra PHP til JavaScript, men IKKE omvendt..
---

Morten Fangel
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 15:56 #2
hmm nogen anden ide til hvordan jeg så kan hive disse oplysninger ud ?
Avatar billede ohmish Nybegynder
22. maj 2003 - 16:00 #3
jeg har en.. øjeblik
Avatar billede fangel Nybegynder
22. maj 2003 - 16:00 #4
du kan gøre det ved atfå PHP til fx at generere et billede... og dette billede kunne du føde med infoerne...

<script type="text/javascript">
<!--
var colord = window.screen.colorDepth;
var res = window.screen.width + "x" + window.screen.height;

document.write = '<img src="billedescript.php?colord=' + colord + '&res=' + res + '" alt="stats">';
//-->
</script>

tag dig ikke af JS fejl... mit JS har aldrig været!

Morten
Avatar billede fangel Nybegynder
22. maj 2003 - 16:01 #5
(må jeg lige komme med et offtopic spørgsmål selvom det ikke er mig der har oprettet... hvormeget "lydder" 27db af? er det så meget så man ikke gidder side ved siden af det i 20 timer i træk? (om en HDD))
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 16:03 #6
Dea_pg>> det er noget i stil med dette jeg har taget mig eget ud fra, meeen ville dog gerne undvære denne codument.writhe da det hele er skrevet i oop og jeg ikke kan se hvordan jeg så får lavet kaldet
Avatar billede ohmish Nybegynder
22. maj 2003 - 16:05 #7
dea_pg har jo ret..

men du kan så bruge denne løsning:
<body onload="window.location='side2.php?screen='+screen.width+'x'+screen.height+'&colors='+screen.colorDepth;">


så kan du på side2.php sige:

<?php
if ($_GET['screen']) {
echo $_GET['screen']; }
?>
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 16:05 #8
hmm for at svare på dit Q aner ikke hvor meget det larmer meen jeg har 5 servere og 2 workstations med både nye og gamle hdd'er og jeg overlever da 20 timer om dagen :-))
meen her lyder sel.f også som et stort køle lager med alle de blæsere :-)
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 16:07 #9
hmm vender lige tilbage lidt senere..
Jeg tror egentlig jeg har fundet på noget som kan bruges ud fra dea_pg's eks..
Avatar billede fangel Nybegynder
22. maj 2003 - 16:08 #10
tak... fordi jeg er igang med at lave et system der kører næsten passivt (eneste køling bliver 2x 7v 40mm blæsere)... hele projektet kommer ned i en kasse på 400x300x45mm ;) meget småt!

kender som sagt ikke så meget til JS så der må jeg melde pas...

Morten
Avatar billede ohmish Nybegynder
22. maj 2003 - 16:11 #11
dea_pg>

27 db er ikke meget. men det er for meget, hvis det kommer fra en blæser/hd.
en computer skal helst ikke over samlet 20 db.
Avatar billede fangel Nybegynder
22. maj 2003 - 16:15 #12
tak... (kender du en billig (30-40gb) disk (helst som shg fører))

bacce => skriv lige hvad din løsning bliver... kunne blive interesant at se... især hvis man får PHP til at generer en graf over trafik som billede... (kan godt finde en guide til det)

Morten
Avatar billede ohmish Nybegynder
22. maj 2003 - 16:19 #13
Avatar billede roenving Novice
22. maj 2003 - 16:20 #14
Du kan overføre dine javascript-variablers værdier til skjulte felter på f.eks. en form, så skulle de være der, når brugeren navigerer (som du så kunne få til at foregå som en submit)
Avatar billede ohmish Nybegynder
22. maj 2003 - 16:21 #15
eller prøv www.edbpriser.dk
Avatar billede fangel Nybegynder
22. maj 2003 - 16:23 #16
ohmish=> hæ... nemdirect siger at Maxtors 30gb disk er "Ultra støjsvag", men maxtor selv siger: "Idle (sound power: bel) 2.7"... dette må tolkes som 27db... ;) men så tror jeg bare jeg tager den... ;) mange tak for hjælpen... (hvis du vil have lidt point kan jeg godt oprette et spm)
Avatar billede fangel Nybegynder
22. maj 2003 - 16:24 #17
roenving => ganske god ide... men det kræver nok en del gennemtænkning!
Avatar billede ohmish Nybegynder
22. maj 2003 - 16:33 #18
dea_pg> du ka oprette et spørgsmål, så finder jeg en støjsvag harddisk til dig. eller søg selv.. hehe
Avatar billede tipsen Nybegynder
22. maj 2003 - 17:03 #19
dea: Hvorfor ikke bare Seagate Barracuda - de er da mere støjsvage?
Avatar billede fangel Nybegynder
22. maj 2003 - 17:06 #20
tipsen => også rated til 25db ;) men vi lukker snakken om mit prob. her... ;)
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 18:50 #21
ok nu har jeg arbejdet lidt med det og har lavet følgende
på mine sider har jeg tilføjet dette.
<script type="text/javascript">
<!--
var ref=""+escape(top.document.referrer);
var colord = window.screen.colorDepth;
var res = window.screen.width + "x" + window.screen.height;
var self = document.location;
document.write("<img src='counter.php?referer=" + ref + "&amp;color=" + colord + "&amp;self=" + self + "&amp;res=" + res + "' style='float:left; border:0' alt='' />");
//-->
</script>

og min counter.php ser sådan her ud

<?php
require("functions.php");
$colour = $_REQUEST['color'];
$ref = $_REQUEST['referer'];
$a=new statistik();
$a->hits($colour, $ref);
if($a->err_no)
{
    echo "$a->err, $a->err_no";
}
header("Content-type: image/gif");
readfile("images/exit.gif");
}
?>

burde det ikke virke ??
den kalder slet ikke scriptet og den viser heller ikke det billede men et X som når sti til billed er forkert ?
Avatar billede fangel Nybegynder
22. maj 2003 - 18:58 #22
fordi du ikke bruger PHP billede funktioner til at lave billedet... kan finde en guide efter jeg har spist... (eller send en mail til morten_fangel@tdcadsl.dk, så husker jeg nok bedre)

Morten
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 19:56 #23
okey nu virker det næsten som det skulle jeg har kun et problem tilbage
da jeg nu skal igennem en anden fil først nemlig counter.php vil den så kunne nøjes med en $_SERVER['PHP_SELF'] da denne hele tiden bliver til counter.php men så har jeg i stedet lavet mit java kald sådan her
<script type="text/javascript">
<!--
var ref=""+escape(top.document.referrer);
var colord = window.screen.colorDepth;
var res = window.screen.width + "x" + window.screen.height;
var self = document.location;
document.write("<img src='counter.php?referer=" + ref + "&amp;color=" + colord + "&amp;self=" + self + "&amp;res=" + res + "' style='float:left; border:0' alt='' />");
//-->
</script>

problemet er så at javascripts self indeholder hele URL og ikke kun /index.php fek.s og jeg vil kun have /filnavn.php skrevet ind.
Det har jeg så prøvet at redigere med denne stump kode
$str = "http://".$_SERVER['SERVER_NAME'];
$str2 = eregi_replace("www.","",  $str);
$self = eregi_replace("$str|$str2|\?.*", "", $self);
if($self == "/")
{
$self = "/index.php";
}
problemet er bare at den bliver totalt ignoreret og den skriver stadig hele URL.
hvad skal der mere til ?
Avatar billede roenving Novice
22. maj 2003 - 20:12 #24
-- self er et reserveret ord i javascript, så det kan du få problemer med bruge som variabelnavn, men så kan du:

var slf = document.location.substring(document.location.lastIndexOf("/"))
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 20:49 #25
hmm når jeg bruger variablen self i javascript er det for at få hele URL ud men denne
$str = "http://".$_SERVER['SERVER_NAME'];
$str2 = eregi_replace("www.","",  $str);
$self = eregi_replace("$str|$str2|\?.*", "", $self);
if($self == "/")
{
$self = "/index.php";
}
er i php og er slet ikke i nerheden af javascript da det er en hel 3. fil
det er derfor det undrer mig.
Avatar billede fangel Nybegynder
22. maj 2003 - 20:52 #26
det er her det går galt...

var self = document.location;

ændre det til fx

var self_loc = document.location;
document.write("<img src='counter.php?referer=" + ref + "&amp;color=" + colord + "&amp;self_loc=" + self_loc + "&amp;res=" + res + "' style='float:left; border:0' alt='' />");

Morten
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 20:52 #27
har også prøvet at kalde dem for $self02 og det virker heller ikke
med andre ord det her virker ikke
$str = "http://".$_SERVER['SERVER_NAME'];
$str2 = eregi_replace("www.","",  $str);
$self = eregi_replace("$str|$str2|\?.*", "", $self);

php reagerer overhovedet ikke på det
Avatar billede roenving Novice
22. maj 2003 - 20:53 #28
Jeg henviste kun til javascript-koden ;-)

-- i php har du sikkert ikke den slags problemer, da self henviser til det aktive window-objekt i javascript og et aktivt window-objekt i php *g*
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 21:11 #29
dea_pg>> Det giver nøjagtig samme resultat og som sagt det er ikke javascript koden men php koden er fucker i det
Avatar billede fangel Nybegynder
22. maj 2003 - 21:16 #30
Nej.. jeg har lige testet... hvis JS variablen hedder "self" får jeg følgende fejl:

Error: setting a property that has only a getter
Source File: http://127.0.0.1/JS-PHP-billede.htm
Line: 14

hvis den hedder "self_loc" indeholder den "http://127.0.0.1/JS-PHP-billede.htm"

Morten
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 21:19 #31
okey jeg tror i springer mine spm's over.. så prøver igen
Ja jeg står med den komplette URL og den smidder jeg så ind i phpkoden og vil i phpkoden så splitte den så jeg kun får /filnavn.php
denne kode ser således ud.....
$str = "http://".$_SERVER['SERVER_NAME'];
$str2 = eregi_replace("www.","",  $str);
$self = eregi_replace("$str|$str2|\?.*", "", $self);

Den giver ingen fejl men den bliver heller ikke udført....
hvis den virkede ville alle problemer være løst og jeg kunne komme videre....

glem alt om javascript delen det virker fint både med
var self_loc = document.location;
&
var self = document.location;
Avatar billede fangel Nybegynder
22. maj 2003 - 21:20 #32
og med denne kode:

---
<script type="text/javascript">
<!--
var ref=""+escape(top.document.referrer);
var colord = window.screen.colorDepth;
var res = window.screen.width + "x" + window.screen.height;
var self_loc = document.location;
document.write("<img src='billede-data.php?referer=" + ref + "&amp;color=" + colord + "&amp;self_loc=" + self_loc + "&amp;res=" + res + "' style='float:left; border:0' alt='' />");
//-->
---

får jeg den til at kalde billede med denne sti:

http://127.0.0.1/billede-data.php?referer=&color=32&self_loc=http://127.0.0.1/js-php-billede.htm&res=1280x1024

så det virker altså...

Morten
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 21:23 #33
undskyld men igen læser du ikke hvad jeg skriver
jeg skriver netop at du skal glemme alt om java afdelingen det virker fint
Avatar billede fangel Nybegynder
22. maj 2003 - 21:29 #34
hmm... OK... lidt sjovere... men kan sagtens klares... (hvis du vil se et ex på hvordan dit script til at fange data og skrive dem i et billede kan se ud, så kig på

http://127.0.0.1/js-php-billede.php

skal lige lave lidt sjov, så man også får mapperne med når man laver lidt om på filen...

Morten
Avatar billede fangel Nybegynder
22. maj 2003 - 21:31 #35
bacce => sidste kommentar kom 40sek efter din kommentar om hvad det var problemet var... havde ikke set den... er kommet ind på det rigtige nu...

desuden skal det være

http://mfa.ath.cx/js-php-billede.php

glemte lige jeg sad på localhost..

Morten
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 21:33 #36
jamen det var da en fed url du der kom med...
mig bekendt har du ikke nogle scripts liggende på min win ??
127.0.0.1 works not...

men for at holde mig til mit spm....

nogen andre der kan fortælle hvad der er galt med dette kode ????

$str = "http://".$_SERVER['SERVER_NAME'];
$str2 = eregi_replace("www.","",  $str);
$self = eregi_replace("$str|$str2|\?.*", "", $self);
Avatar billede fangel Nybegynder
22. maj 2003 - 21:42 #37
nej... men jeg løste den på en lidt anden måde... ;)

$self = $_GET['self_loc'] . " ";
$self = substr($self, strpos($self, "/", 7), -1);

Morten
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 22:17 #38
hmm den fjerner det sidste p i .php ??
Avatar billede fangel Nybegynder
22. maj 2003 - 23:03 #39
du skal huske at tilføje et mellemrum til strengen... eller ændre det til:

$self = $_GET['self_loc'];
$pos = strpos($self, "/", 8)
$self = substr($self, $pos, strlen($self)-$pos);

Morten
Avatar billede bacce.dk Nybegynder
22. maj 2003 - 23:11 #40
okey glem det..
tror jeg finder en anden at spørge..
Jeg fatter hat af det du skriver ud og de virker ik alligevæl...
Avatar billede fangel Nybegynder
23. maj 2003 - 07:50 #41
en lille forklaring:

$self = $_GET['self_loc']; // gemmer GET variablen "self_loc" i den interne variabel "self"
$pos = strpos($self, "/", 8); // finder positionen på første "/" efter tegn 8
$self = substr($self, $pos); // beskærer variablen $self, den tager fra det $pos'ne tegn, og resten af strengen...

kom lige i tanke om at sidste parameter til substr var lige meget...

hvis du kører over https:// skal du ændre 8'tallet til 9!

Morten
Avatar billede bacce.dk Nybegynder
23. maj 2003 - 11:19 #42
Good en forklaring er somregle guld værd...
og ja så kom jeg langt om længe videre, meen det var sku godt nok tæt på jeg droppede det med farver og opløsning.
Men tak for det du... nu kan man igen komme videre med resten
Avatar billede fangel Nybegynder
23. maj 2003 - 12:26 #43
så lidt... jeg kan godt finde en guide til hvordan man laver grafer i PHP... hvis du altså er intereseret...

Morten
Avatar billede bacce.dk Nybegynder
23. maj 2003 - 13:36 #44
tjooo det kunne da være rart..
er netop nået til dette punkt og kunne da godt bruge lidt inspiration da jeg ikke helt har gjordt op med mig selv hvordan det skal se ud endnu
Avatar billede fangel Nybegynder
23. maj 2003 - 14:25 #45
Avatar billede bacce.dk Nybegynder
24. maj 2003 - 10:52 #46
okey det var faneme nogle fede artikler der lige lå og gemte sig der :-))
det gav mig virkelig inspira så det vil noget :-)
Avatar billede fangel Nybegynder
24. maj 2003 - 10:57 #47
PHPbuilder.net har mange gode ting liggende... ;)

Morten
Avatar billede bacce.dk Nybegynder
24. maj 2003 - 11:24 #48
Ja har været der en del, meen finder somregel ikke noget jeg lige står og mangler viden om, og derfor bliver det sjældent til meget, men den ene af disse artikler her er virkelig noget der kan bruges til ny viden :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester