Avatar billede akyhne Nybegynder
04. december 2008 - 16:07 Der er 30 kommentarer og
1 løsning

Hente session cookie via javascript

Hvis jeg klikker på f.eks en button, kan jeg så på en eller anden måde hente en $_SESSION værdi?
Avatar billede jakobdo Ekspert
04. december 2008 - 16:08 #1
Du kan i hvert fald via kald til et eksternt php script, som kaldes via ajax.
Avatar billede akyhne Nybegynder
04. december 2008 - 16:13 #2
Hmm ja, men ville gerne undgå Ajax da jeg ikke ahr begreb om det.
Avatar billede akyhne Nybegynder
04. december 2008 - 16:22 #3
Det kunne vel gøres hvis positionen hvor jeg skal bruge værdien var en iframe og så blot kalde src på ny??? Men er der ikke noget om at iframes ikke er w3 validerede?
Avatar billede jakobdo Ekspert
04. december 2008 - 17:18 #4
Ajax er altså ikke svært...
Kig på www.dengodekode.dk
Og så post eller get mod en php fil, som sender session retur.
Avatar billede akyhne Nybegynder
04. december 2008 - 17:35 #5
Det fatter jeg endnu mindre af end javascript.
Avatar billede jakobdo Ekspert
04. december 2008 - 17:56 #6
Se koden her: http://www.codebreaker.dk/leg/855294.php
Og koden er her:

<?php
//http://www.eksperten.dk/spm/855294
session_start();
if(isset($_POST['action']) && $_POST['action'] == 'getSession'){
    echo json_encode(array('session' => session_id()));
    exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <title>GET SESSION</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <script type="text/javascript">
            (function(){if(window.XMLHttpRequest)return;var o=null,s,a=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];for(var i=0,j=a.length;i<j;s=a[i],i++){try{if(o=new ActiveXObject(s))break}catch(e){}}window.XMLHttpRequest=o?function(){return new ActiveXObject(s)}:null;o=null})()

            var d=document;
            function gE(id){return d.getElementById(id)};
            function gA(o,t){return o.getElementsByTagName(t)};
            function cE(t){return d.createElement(t)};
            function cT(s){return d.createTextNode(s)};

            function AjaxReq(sMethod, sUrl, oVars, fnCallBack) {
                var oHttp = new XMLHttpRequest();
                oHttp.open(sMethod, sUrl, true);
                oHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
                oHttp.onreadystatechange = _fnCallBack;
                var aQuery = [];
                for (var x in oVars) aQuery.push( encodeURIComponent(x) + "=" + encodeURIComponent(oVars[x]) );
                    oHttp.send( aQuery.join("&") );
                    aQuery = null;
                    function _fnCallBack() {
                        if (oHttp.readyState<4) return;
                        fnCallBack(oHttp);
                        oHttp = null;
                    }
                return this;
            }
           
            function getSession(){
                new AjaxReq("POST", "855294.php", {"action":"getSession"}, getSessionCallBack);
            }

            function getSessionCallBack(oHttp) {
                var oResponse = eval('(' + oHttp.responseText + ')');
                alert(oResponse.session);
            }

        </script>
    </head>
    <body>
        <div>
            <a onclick="getSession();" href="#">Get Session</a>
        </div>
    </body>
</html>
Avatar billede akyhne Nybegynder
04. december 2008 - 19:22 #7
Så er jeg lige nødt til at spørge om Ajax er server- og browser afhængig.
Avatar billede jakobdo Ekspert
04. december 2008 - 19:42 #8
Client og php filen er server.
Avatar billede akyhne Nybegynder
04. december 2008 - 19:55 #9
php ved jeg.

Umiddelbar kommer det til at gribe for meget ind i den eksisterende kode. Er der ikke andre metoder der duer?
Avatar billede akyhne Nybegynder
04. december 2008 - 19:56 #10
Og 10.000kr spørgsmålet jeg glemte: understøtter alle browsere Ajax?
Avatar billede jakobdo Ekspert
04. december 2008 - 20:01 #11
Nyere browsere gør ja.
Avatar billede jakobdo Ekspert
04. december 2008 - 20:04 #12
Og så stor en oplægning er det jo heller ikke.
Der er jo som sådan tale om 2 koder.

En kode med knappen og javascriptet.

Og en kode med get_session delen:

<?php
//http://www.eksperten.dk/spm/855294
session_start();
if(isset($_POST['action']) && $_POST['action'] == 'getSession'){
    echo json_encode(array('session' => session_id()));
    exit();
}
?>
Avatar billede akyhne Nybegynder
04. december 2008 - 20:18 #13
Jeg kan ikke bruge koden som den er. Der skal laves en del om for at jeg kan bruge det. Det mener jeg bliver for stor en opgave. Derfor hellere en anden løsning hvis det er muligt.
Avatar billede jakobdo Ekspert
04. december 2008 - 20:39 #14
Du får et svar.
Avatar billede akyhne Nybegynder
04. december 2008 - 20:43 #15
Jeg tror jeg i stedet genererer et billede med teksten via GD. Det er lige ud af landevejen og passer også godt til formålet.
Avatar billede jakobdo Ekspert
04. december 2008 - 21:04 #16
Men hvis du vil vise det i en boks, kunne du jo også lave:

<input type="text" name="session" value="<?=session_id();?>" />
Avatar billede akyhne Nybegynder
04. december 2008 - 21:18 #17
Ehm, jeg skal jo hente værdien efter indlæsning af siden.
Avatar billede jakobdo Ekspert
04. december 2008 - 21:32 #18
ikke nødvendigvis.
det er samme id.
Avatar billede jakobdo Ekspert
04. december 2008 - 21:33 #19
Avatar billede akyhne Nybegynder
04. december 2008 - 21:40 #20
Af sikkerhedsmæssige grunde kan jeg først indlæse værdien efter at siden er loadet.
Avatar billede jakobdo Ekspert
04. december 2008 - 21:44 #21
Det lyder da som en underlig løsning du har igang der.
Avatar billede akyhne Nybegynder
04. december 2008 - 21:44 #22
Det er til hvis brugeren klikker "Request another image".

http://smf.e-debatten.dk/index.php?action=register

Teksten (med rødt) der forklarer hvilken figur og farve der skal udelukkes, er den jeg skal have udskiftet... eller blot hvilken figur type og farve.

Når der klikkes på "Request another image", genereres der nye værdier og et nyt CAPCHA billede bliver genereret.
Avatar billede akyhne Nybegynder
04. december 2008 - 21:46 #23
Da hele siden ikke indlæses men blot CPACHA billedet, er jeg nødsaget til at gøre noget lignende.
Avatar billede jakobdo Ekspert
05. december 2008 - 08:12 #24
Captche billedets kode ligget jo i en session.
Og den kan du jo godt læse fra start.
Avatar billede akyhne Nybegynder
05. december 2008 - 08:19 #25
Ja men det er ikke captcha koden jeg skal have fat i. Jeg skal hente en ny session for figur- og farver. Det kan jeg ikke indlæse på forhånd
Avatar billede akyhne Nybegynder
05. december 2008 - 08:34 #26
Der er kort sagt 3 slags værdier jeg skal bruge ved request på et nyt captcha billede: Bogstaverne, hvilke der er falske, hvilken fugur der skal vises over hver bogstav, samt hvilken farve de skal have.

Det har jeg styr på for selve billedet når der klikkes "Request another image". Problemet er at jeg også skal have opdateret den røde tekst til højre med ny farve og figur. Gemmer jeg de oplysninger i sidens kode, ligger svaret til at bryde captchaen lige for næsen af hackeren/crackeren der bygger spamkoden.
Avatar billede jakobdo Ekspert
05. december 2008 - 08:42 #27
Så skal koden jo også aflæses med et ekstra kald som jeg har vist tidligere.
Avatar billede akyhne Nybegynder
05. december 2008 - 09:59 #28
Ja, men der har jeg tænkt mig at kalde et billede frem med tekst og farver, i stedet for at skulle bruge Ajax til at kalde en tekst frem.
Avatar billede jakobdo Ekspert
05. december 2008 - 10:43 #29
Det ville du nu også kunne lave med ajax.
Avatar billede akyhne Nybegynder
05. december 2008 - 11:35 #30
Det er korrekt, men metoden til at opdatere CAPTCHA billedet er "næsten" lige til at kopiere.
SMF forummets sikkerhed er kompliceret opbygget, og det er ikke sådan lige at indbygge noget der afviger fra standarden.

Desuden har SMF forummet den geniale løsning - som det eneste PHP forum i verden - at man kan lave en mod pakke som gør administratorer i stand til med få klik at implementere en modifikationspakke der tilføjer eller fjerner funktioner m.m.

Da mine ændringer allerede går ret dybt ind i den originale kode med strings der skal rettes og tilføjes, er jeg ikke så meget for at gøre det yderligere kompliceret.
Avatar billede jakobdo Ekspert
06. juli 2010 - 08:07 #31
Takker for point
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