login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Scherm resolutie ophalen (Opgelost)

Offline Chupskie - 14/04/2009 13:17 (laatste wijziging 14/04/2009 13:25)
Avatar van ChupskieMySQL beginner Hallo allemaal,

Ik gebruik al een hele tijd onderstaande code, om de schermresolutie van mijn bezoekers op te halen. Dit werk ook goed.

  1. <?php
  2. if(isset($_COOKIE['hoogte']) && isset($_COOKIE['breedte'])) {
  3.  
  4. $_SESSION['hoogte'] = $_COOKIE['hoogte'];
  5. $_SESSION['breedte'] = $_COOKIE['breedte'];
  6.  
  7. }else{
  8.  
  9. if (isset($_GET['width']) AND isset($_GET['height'])) {
  10.  
  11. $tijd = "2678400"; //Na hoeveel tijd, opnieuw controleren of resolutie nog klopt (nu een maand).
  12.  
  13. setcookie("hoogte",$_GET['height'],time()+$tijd,"/");
  14. setcookie("breedte",$_GET['width'],time()+$tijd,"/");
  15.  
  16. $_SESSION['hoogte'] = $_GET['height'];
  17. $_SESSION['breedte'] = $_GET['width'];
  18.  
  19. } else {
  20.  
  21. echo "<script language='javascript'>\n";
  22. echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
  23. . "&width=\" + screen.width + \"&height=\" + screen.height;\n";
  24. echo "</script>\n";
  25.  
  26. }
  27.  
  28. }
  29. ?>


Probleem 1:
Alleen bij elk 1ste bezoek krijgt de bezoeker de volgende link in zijn adres balk te zien: www.domein.nl/index.php?width=1440&height=900 ipv www.domein.nl/nl/pagina
V: Is er een mogelijkheid om dit anders (lees: netter) op te lossen?

Probleem 2:
Bij ongeveer de helft van mijn bezoekers krijg ik geen waarde terug met bovenstaande code. Ik weet dat je onder andere van googlebots geen waardes krijgt, maar google (en andere zoekmachines) zijn geen 50% van al mijn bezoekers?
V: Hoe zou het kunnen dat ik niet altijd waardes doorkrijg met bovenstaande code?

Alvast bedankt. (edit: typo - mod: kan deze verplaatst worden naar javascript?)

3 antwoorden

Gesponsorde links
Offline Threetimes - 14/04/2009 13:24 (laatste wijziging 14/04/2009 13:26)
Avatar van Threetimes PHP beginner Euhmmm...
Probleem een is simpel, los het op met ajax:
  1. if(window.XMLHttpRequest)
  2. {
  3. req = new XMLHttpRequest();
  4. }
  5. else if(window.ActiveXObject)
  6. {
  7. req = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. param="width="+screen.width+"&height="+screen.height;
  10. req.open("post", "log.php");
  11. req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  12. req.setRequestHeader("Content-length", param.length);
  13. req.setRequestHeader("Connection", "close");
  14. req.onreadystatechange = function(){}
  15. req.send(param);


Probleem 2: sommige mensen hebben geen js (bots, oude browsers, rare beveiligingssoftware, etc...). Als je ook de user-agent, ip-adressen en datum/tijd tegelijk opslaat heb je meer info.

Maak de juiste database, en doe dit.
Log.php:
  1. <?php
  2. is_numeric($_POST['width']) or die("width is not numeric");
  3. is_numeric($_POST['height']) or die("height is not numeric");
  4. mysql_connect("server","database","wachtwoord") or die("MySQL ".mysql_errno().": ".mysql_error());
  5. mysql_select_db("licht") or die("MySQL ".mysql_errno().": ".mysql_error());
  6. mysql_query("INSERT INTO log VALUES ('".$_SERVER["REMOTE_ADDR"]."',CURRENT_TIMESTAMP,'".$_SERVER["HTTP_USER_AGENT"]."','".$_POST['width']."','".$_POST['height']."');") or die("MySQL ".mysql_errno().": ".mysql_error());
  7. ?>


Deze code haal ik bijna rechtstreeks hieruit.
Offline Chupskie - 14/04/2009 13:31
Avatar van Chupskie MySQL beginner @Threetimes, Duidelijke uitleg en voorbeelden!

Hartelijk bedankt voor je hulp. Ik ga hier direct mee aan de slag!
Offline Threetimes - 15/04/2009 21:04
Avatar van Threetimes PHP beginner let op dat bij de php code als er geen js is uitgevoerd er niks gebeurd!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.178s