Avatar billede xpresand Nybegynder
23. april 2010 - 12:44 Der er 16 kommentarer og
1 løsning

Javascript til mysql database

Hej

Jeg har dette script som virker fint hvis jeg bruger den i echo"";

<?php
$country ="<script type=\"text/javascript\">
if (navigator.appName == 'Netscape')
    var language = navigator.language;
else
    var language = navigator.browserLanguage;

var code = language.substring(0,2);

document.write("" + code);
</script>";
?>


men lige så snart at jeg bruger $country i INSERT INTO så indsætter den ikke output'et men i stedet for hele javascriptet.

Findes der en løsning på problemet? Sådan at jeg kan få output'et fra javascriptet ind i min MySQL database?
Avatar billede repox Seniormester
23. april 2010 - 12:50 #1
Du kan ikke eksekvere javascript i en PHP variabel.
Hvis du skal have browserens sprogvalg, så brug det predefinerede superglobale array kaldet $_SERVER med indexet HTTP_ACCEPT_LANGUAGE.
$country = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
Avatar billede xpresand Nybegynder
23. april 2010 - 12:53 #2
Okay.
Kender godt den løsning, men det er nu mere fordi at jeg også har et script til OS, browser, reference osv. hvor javascript nok er den bedste løsning.
Avatar billede repox Seniormester
23. april 2010 - 12:57 #3
Baseret på dine tre ønsker af informationer, kan jeg ikke se hvorfor PHP ikke kan løfte den opgave - endda helt uden du er afhængig af at klienten kan eksekvere javascripten? Men nu ved jeg self. ikke hvad 'osv' indeholder.

Uanset, så kan du i hvert tilfælde ikke eksekvere javascript uden at det er klienten der læser det - det vil sige at du ikke kan gøre det gennem PHP.
Avatar billede xpresand Nybegynder
23. april 2010 - 13:01 #4
Det jeg har oplevet problemer med er reference som ikke har fungeret korrekt i php.

<a href="http://gixmo.dk/index.php?page=stats&brugerid=4bd169e316b5a" target="_blank"><img border="0" alt="gixmo.dk" src="http://gixmo.dk/counter.php?brugerid=4bd169e316b5a&billed=0"/></a>


Så når referencen så bliver sat ind i databasen bliver den ikke siden personen kommer fra, men siden hvor besøgtælleren er placeret.
Avatar billede repox Seniormester
23. april 2010 - 13:07 #5
Tælleren er vel også placeret på den side som personen kommer fra?
Indsætter jeg den kode på eksempelvis http://example.org/minside.php så vil http://gixmo.dk/index.php?page=stats&brugerid=4bd169e316b5a se referer som http://example.org/minside.php

Hvordan kan det være 'forkert'?
Avatar billede xpresand Nybegynder
23. april 2010 - 13:11 #6
Fordi, at jeg med reference mener:

hvis en person googler f.eks. gratis besøgstæller og de så finder linket til min side og går ind på den, så bliver referencen ikke

http://www.google.dk/search?hl=da&source/.../..&/ men derimod som sagt den side tælleren findes på.
Avatar billede repox Seniormester
23. april 2010 - 13:16 #7
Det må være min fredagshjerne, men jeg beklager sq; jeg forstår ikke hvad du siger.

Hvis jeg søger på et nøgleord i google som giver mig et resultat som peger direkte ind på min side, så indeholder $_SERVER["HTTP_REFERER"] den google adresse den kom fra. Fuldstændig som ventet.
Avatar billede xpresand Nybegynder
23. april 2010 - 13:30 #8
Nej, det gør den ikke når man inkludere tælleren, fordi
HTTP_REFERER registere den forrige side hvilket er den side tælleren er placeret på, da den første side er http://gixmo.dk/counter.php

1. connect.php (udbyderen på tælleren, her: gixmo.dk)
2. www.dinside.dk (siden med besøgtælleren)
3. www.google.com (reference)

derfor virker det ikke.
Avatar billede repox Seniormester
23. april 2010 - 13:36 #9
Igen, jeg forstår ikke hvad du siger - du må lægge noget op som beviser/forklarer din påstand.
Avatar billede xpresand Nybegynder
23. april 2010 - 13:50 #10
Beviser hvordan? Jeg har en side med 100 aktive brugere. Og der bruger jeg $_SERVER["HTTP_REFERER"]. Der er ingen reference der viser tilbage til den side de kom fra i databasen. Men kun den side at tælleren befinder sig på!
Avatar billede dmdisco Nybegynder
23. april 2010 - 14:26 #11
det er vel fordi det er din tæller der der gemmer referer og ikke selve siden
så er det jo klart da de kommer til din tæller fra din side

du kan evt. kalde din tæller med en get streng der bliver sat af siden hvor sidens referer indgår
<img src="counter.php?referer=<?php print $_SERVER["HTTP_REFERER"];?>"> og så bruge $_GET['referer']
Avatar billede xpresand Nybegynder
23. april 2010 - 14:31 #12
dmdisco, du har ret :)
Men jeg kan ikke rigtig tilføje referencen til url-adressen, da det er en gratis tæller, og det vil jo kræve, at siden man indsætter koden på en php-side, og det er ikke alle der er det.
Avatar billede dkfire Nybegynder
23. april 2010 - 16:34 #13
Synes der er en ting du mangler at forstå.
Javascript er klient side script.
PHP er server side script.

Intet php kan køres i browseren, intet javascript kan kører på serveren!

Kan du ikke med javascript finde ud af hvilken side brugeren står på ? noget ala window.location ?
Avatar billede xpresand Nybegynder
23. april 2010 - 18:58 #14
jeg har et javascript hvor jeg kan se hvilken side brugeren er på, men jeg kan ikke rigtige bruge de scripts jeg har fundet, da de jo ikke kan sættes output'et ind i MySql Database.
Avatar billede dkfire Nybegynder
24. april 2010 - 12:59 #15
Det ligger jo i sagens natur at du ikke med javascript skal lægge noget i databasen.
Men du kan jo kalde en php side med javascript og overføre variabler fra javascript til php i url strengen.
Avatar billede xpresand Nybegynder
24. april 2010 - 13:22 #16
Kan du evt. give et eksempel, ved ikke om jeg helt har forstået det.. :)
Avatar billede xpresand Nybegynder
02. december 2010 - 15:28 #17
lukker
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