Avatar billede wuhtzu Nybegynder
10. september 2006 - 14:53 Der er 10 kommentarer

Sæt session variabel ved klik på link

Hey

Jeg vil gerne sætte en session variabel idet en bruger klikker på et link.

Altså idet brugeren er på side1.php og klikker på <a href='side2.php'>link</a> så skal følgende sættes: $_SESSION['haveclicked']=TRUE;

Pointen er at jeg skal være 100% sikker på at brugeren har klikket på linket og ikke bare indtastet http://mitdomæne.dk/side2.php i browseren. Derfor kan jeg ikke bare starte sessionen på side2.php.

Er der nogen som har en ide til hvordan jeg kan gøre det?

Mvh Wuhtzu
Avatar billede lassemelbye Nybegynder
10. september 2006 - 16:38 #1
Hej.
Jeg tvivler på, at din metode er sikker. Folk kan jo bare oprette en falsk session.'
Men ellers:

Du skal linke til denne side i dit link, som vil registere en session og sende brugeren videre til side2.php.
side_registerer_session.php:
<?
session_start(); // Her forstæller jeg at der er sessions på siden
$haveclicked = TRUE; // Her sætter jeg variablen til true
session_register(haveclicked); // Her registere jeg session
header("location: side2.php"); // Her bliver brugeren send videre til side2.php
?>
Avatar billede coderdk Praktikant
10. september 2006 - 20:47 #2
Ved ikke om den holder, men virker hos mig:

<?php

  session_start();
  if ( !empty( $_GET['setSes'] ) )
  {
        $_SESSION['clicked'] = $_GET['setSes'];
        exit;
  }
 
  $random = mt_rand();

?>
<script type="text/javascript">
  function clickLink( id )
  {
      var img = new Image();
      img.src = 'http://<?= $_SERVER['HTTP_HOST'] ?><?= $_SERVER['PHP_SELF'] ?>?setSes=' + id + '&rnd=<?= str_replace( ' ', '', microtime() ) ?>';
      return true;
  }
</script>
Clicked ID: <?= $_SESSION['clicked'] ?><br>
ID is now: <?= $random ?><br>
<a href="<?= $_SERVER['PHP_SELF'] ?>" onclick="return clickLink(<?= $random ?>)">Click me</a>
Avatar billede wuhtzu Nybegynder
10. september 2006 - 20:47 #3
men så kan folk bare gå ind på http://mitdomæne.dk/side_registrer_session.php og så vil sessionen alligevel blive registreret og det vil se ud som om de har klikket på linket... Ideen var ellers god nok, har selv været ud i noget af det samme.

Kan man slet ikke gøre noget med et "on-click" statement. Ved godt det er noget javascript, men der må da findes en måde til at gøre noget bestemt idet der klikkes på et element.
Avatar billede wuhtzu Nybegynder
11. september 2006 - 12:24 #4
coderdk, jeg kunne vel ikke få dig til at forklarer lidt om din ide?
Avatar billede coderdk Praktikant
11. september 2006 - 12:40 #5
Hvad skal jeg sige? :) Jeg bruger et javascript onclick event til at loade en side vha et javascript Image() objekt der sætter en session på serveren - Det virker i mine tests, men jeg ved ikke helt om den er skudsikker ;)
Avatar billede wuhtzu Nybegynder
11. september 2006 - 12:53 #6
Jeg tror helt sikkert også det virker, det er bare mig som ikke lige kan se hvordan jeg skal udnytte det :)

http://wuhtzu.dk/random/linktest.php
Avatar billede coderdk Praktikant
11. september 2006 - 12:57 #7
Du lader bare være med at lave det random :)

<?php

  session_start();
  if ( !empty( $_GET['setSes'] ) )
  {
        $_SESSION['clicked'] = $_GET['setSes'];
        exit;
  }

  $random = 123;

?>
<script type="text/javascript">
  function clickLink( id )
  {
      var img = new Image();
      img.src = 'http://<?= $_SERVER['HTTP_HOST'] ?><?= $_SERVER['PHP_SELF'] ?>?setSes=' + id + '&rnd=<?= str_replace( ' ', '', microtime() ) ?>';
      return true;
  }
</script>
Clicked ID: <?= $_SESSION['clicked'] ?><br>
<a href="<?= $_SERVER['PHP_SELF'] ?>" onclick="return clickLink(123)">Click me</a>

Du kan jo checke om 123 er sat i dette tilfælde...
Avatar billede coderdk Praktikant
11. september 2006 - 12:57 #8
Altså om clicked er 123 :)
Avatar billede wuhtzu Nybegynder
11. september 2006 - 13:43 #9
Du skulle ikke tilfældigvis gide bruge 10min mere på mit spørgsmål på messenger?

wuhtzu at gmail.com
Avatar billede coderdk Praktikant
11. september 2006 - 14:25 #10
Sorry, jeg hjælper af princip kun på eksperten, ikke over IM...
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