Avatar billede Gudiik Nybegynder
06. december 2009 - 20:29 Der er 6 kommentarer

Ændre Session når man trykker på link.

Hej allesammen, har brug for at få ændret en session, og det skal gøres når man klikker på et link, linket på ikke videre fører til en anden side, eller lign.

Er der nogen måde at gøre det på?
Evt om det kan gøres ved hjælp af lidt javascript?


På forhånd tak.
Avatar billede intenz Novice
06. december 2009 - 21:01 #1
Hvad med du mener at ændre en session?
Vil du slette den eller overtage en anden brugers session?
Avatar billede Gudiik Nybegynder
06. december 2009 - 21:07 #2
intenz - Jeg vil have sådan at på min hjemmeside, hvis jeg jeg trykker på Link1 så skal den ændre session[s_test] til Link1 , hvis jeg trykker på Link2 så skal den ændres til session[s_test] Link2, osv osv.

Håber du forstår det.

Altså når en bruger klikker på et link på min side, skal hans session ændres til linknavn.

Har prøvet med lidt java script om er kommet frem til følgende:

[code]
<div id="skjulttekst" style="position:absolute;width:400px;top:50px;left:200px;border:1px solid black;background:white;display:none;"><? $_SESSION[s_test] = "hej"; ?> <? echo $_SESSION[s_test]; ?><a href="java script:skjultekst()">Luk</a></div>

<a href="java script:vistekst()">vis</a>
<script type="text/javascript">
function vistekst(){
    document.getElementById('skjulttekst').style.display='block';
}
function skjultekst(){
    document.getElementById('skjulttekst').style.display='none';
}
</script>
[/code]

Men det jeg gerne vil have den til er at hvis jeg har et link som hedder <a href="link.php?id=1> så skal den tage id'et og ændre session til id'et.
Avatar billede Gudiik Nybegynder
06. december 2009 - 21:08 #3
Hmm min kode gik lige amok, her er den:

<div id="skjulttekst" style="position:absolute;width:400px;top:50px;left:200px;border:1px solid black;background:white;display:none;"><? $_SESSION[s_test] = "hej"; ?> <? echo $_SESSION[s_test]; ?><a href="java script:skjultekst()">Luk</a></div>

<a href="java script:vistekst()">vis</a>
<script type="text/javascript">
function vistekst(){
    document.getElementById('skjulttekst').style.display='block';
}
function skjultekst(){
    document.getElementById('skjulttekst').style.display='none';
}
</script>
Avatar billede intenz Novice
06. december 2009 - 21:49 #4
Du skal gøre det med en kombination af javascript og PHP. PHP session fungerer kun server-side, og kan ikke tilgåes eller ændres direkte vha. javascript.
Så du skal lave et AJAX kald fra javascript til serveren med den værdi du gerne vil have sat i sessionen. Og så gemme den i PHP.

Du skriver, at du gerne vil have det gjort når man trykker på 'Link 1'. Det link er ikke i den kode du skrev, der er kun 'Luk'.

Jeg har lavet et lille eksempel, så du kan se princippet. Læg mærke til variablen "var url = '/test.php';". Den skal pege på den PHP fil hvor du vil gemme sessionen. Her skal du så gemme den med:
(div)
<?php
session_start();
$_SESSION['s_test'] = $_GET['s_test'];
?>
(/div)

(div)
<html>
<head><title></title></head>
<script>
function set_session(href) {
    var xmlHttpReq = false;
    var self = this;
    var url = '/test.php';
    var link_value = href.innerHTML;
    var params = "s_test="+link_value;

    if (window.XMLHttpRequest) {
        http = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        http = new ActiveXObject("Microsoft.XMLHTTP");
    }
   
    http.open("GET", url+"?"+params, true);
    http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200) {
            // gemt succes
        }
    }
    http.send(null);
   
}
</script>

<script type="text/javascript">
function vistekst(){
    document.getElementById('skjulttekst').style.display='block';
}
function skjultekst(){
    document.getElementById('skjulttekst').style.display='none';
}
</script>
<body>
<div id="skjulttekst" style="position:absolute;width:400px;top:50px;left:200px;border:1px solid black;background:white;display:none;">
    <a href="#" onclick="set_session(this);">Link 1</a>
    <br /><br />
    <a href="#" onclick="skjultekst();">Luk</a>
</div>

<a href="#" onclick="vistekst();">vis</a>

</body>
</html>
(/div)
Avatar billede Gudiik Nybegynder
07. december 2009 - 11:04 #5
Hmm det virker sq ikke :(.
Avatar billede intenz Novice
07. december 2009 - 20:19 #6
Forventer du at jeg skal komme en løsning ud fra "Hmm det virker sq ikke :(" ? Du må være lidt mere konkret når du siger det ikke virker. Jeg har testet det på min localhost og der virker det fint.
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