Het instellen van een sessie-variabele bij het klikken op een < / a> link

Ik heb het volgende probleem… ik wil een sessie-variabele bij het klikken op een link als:

<a href="home" name="home">home</a>

Mijn onderzoek lijkt erop te wijzen dat het niet mogelijk is om PHP te halen met de gebeurtenis click op een dergelijke manier, dat het instellen van een sessie-variabele.

Ik geloof dat het mogelijk is met Ajax, maar hoe? En wat zou mijn link eruit?
Het instellen van de sessie variabele moet er als volgt uitzien:

$_SESSION['link'] = home;

Dus in het kort: Bij het klikken op een link in HTML, een sessie variabele gezet moet worden.
HOE ga ik dat doen?

PS: ik ben niet heel bekend met Ajax, maar ik kom wel.

EDIT: De links verwijzen naar dezelfde pagina, ook ik wil voorkomen dat url ‘ s zoals “thuis.php?link=X”.
Indien het niet mogelijk is om het te doen op een andere manier, jammer. Maar ik hoop dat er een oplossing.
Belangrijk: de naam van de link wordt de waarde van $_SESSION['link']

  • Dus ik ben in de war, wat er gebeurt nadat je op de link klikt? Doet het genereren van de sessie, dan is de terugkeer van de sessie-id en het gebruik in de link, of gewoon het maken van een oproep voor het uitvoeren van de link? Dit lijkt alsof je de brute-forcing vangen van een sessie-timeout en het gebruik van een redirect in te loggen?
  • Hier is het scenario: ik ben op home.php zal ik klik op een link die gaat naar home.php. Ik wil de vangst van de gebeurtenis click en de naam van mijn link de waarde van mijn sessie variabele. Maar sinds de link in HTML is het client-sided en niet-server-zijdig.
  • HTML wordt de pagina herladen, niet? Dus dan kun je hem vangen met PHP de manier waarop @Brandon is om het te beschrijven.
  • wat is er mis met de url ‘ s zoals “thuis.php?link=X”?
InformationsquelleAutor Mixxiphoid | 2011-01-31

 

4 Replies
  1. 12
        session_start();
        if(isset($_SESSION['current'])){
             $_SESSION['oldlink']=$_SESSION['current'];
        }else{
             $_SESSION['oldlink']='no previous page';
        }
        $_SESSION['current']=$_SERVER['PHP_SELF'];

    Misschien is dit wat u zoekt?
    Het zal denk aan de oude link/pagina je vandaan komt (binnen de website).

    Te zetten dat het stuk op de top van elke pagina.

    Als u wilt maken van het ‘vernieuwen bewijs’ kunt u nog controleren:

       if(isset($_SESSION['current']) && $_SESSION['current']!=$_SERVER['PHP_SELF'])

    Hierdoor wordt de pagina niet herinneren zelf.

    UPDATE: Bijna hetzelfde als @Brandon, hoewel…
    Gewoon gebruik maken van een php variabele, ik weet dat dit eruit ziet als een gevaar voor de veiligheid, maar wanneer gebeurt juist niet.

     <a href="home.php?a=register">Register Now!</a>

    PHP:

     if(isset($_GET['a']) /*you can validate the link here*/){
        $_SESSION['link']=$_GET['a'];
     }

    Waarom bewaar het in een sessie? Gebruik gewoon het.
    Kunt u mij vertellen waarom u geen gebruik wenst te maken KRIJGEN. “Valideren voor meer veiligheid.
    Ik misschien kunt u helpen met een beter script.

    • Het probleem is, de links verwijzen naar de pagina ze zich bevinden. Dus $_SESSION[‘huidige’] altijd home.php. Ik moet de naam van de link te maken dat mijn sessie variabele. Bedankt voor de code al :).
    • Ik heb wat inhoud aangeroepen te worden vanuit de database afhankelijk van de variabele, en met dat ook de naam van de link. Door de pagina te vernieuwen, bij het klikken op een link, wordt de variabele moet een $_SESSION var.
    • Ik wil voorkomen dat KRIJGEN want ik wil niet te verknoeien mijn url en vanwege enkele problemen met de beveiliging. Misschien kan ik unset het KRIJGEN na het gebruik ervan en vernieuw de pagina weer… Ook ik dacht dat dit mogelijk zou zijn met Ajax, maar ik heb niet gehoord dat in de antwoorden tot nu toe…
    • Is dat niet een beetje te direct Col.? Beetje beledigend?
    • Shrapnel, Nogmaals, ik geloof dat het mogelijk is met Ajax. Bovendien hou ik niet van uw reactie… Lees mijn hele vraag “Indien het niet mogelijk is om het te doen op een andere manier, te slecht.” Dat impliceert ik ben gedwongen gebruik te maken van KRIJGEN… Er is geen noodzaak om te stemmen en deze legitieme vraag, en het antwoord van @Superspy.
    • Shrapnel ik niet htink hij doet :S ‘Hij rekenen zichzelf als een doorgewinterde programmeur’ in Plaats daarvan is hij vriendelijk en probeert een oplossing te vinden voor zijn probleem, dus zorg dat hij geen gebruik wenst te maken KRIJGEN.
    • Bedankt voor alle hulp! Ik geef u het krediet. Ik zal waarschijnlijk gebruik maken van uw eerste stuk van de code, veel dank!
    • Het bijgewerkte onderdeel werkte prima voor mij. Bedankt.

  2. 11

    Ik had het zelfde probleem, ik wilde een parameter doorgeven naar een andere pagina door te klikken op een hyperlink en krijgen de waarde naar de volgende pagina te gaan (zonder gebruik te KRIJGEN omdat de parameter wordt opgeslagen in de URL).

    voor degenen die niet begrijpen waarom je zou willen om dit te doen is het antwoord u niet wilt weergeven voor de gebruiker gevoelige informatie of je niet wilt dat iemand het bewerken van de KRIJGEN.

    goed na wassen het internet leek het niet mogelijk om een normale hyperlink via de POST-methode.

    En toen had ik een eureka moment!!!!
    waarom niet gewoon met CSS te maken van de knop indienen uitzien als een normale hyperlink??? …en zet de waarde die ik wil doorgeven in een verborgen veld

    ik heb het geprobeerd en het werkt. u kunt zie voorbeeld hier http://paulyouthed.com/test/css-button-that-looks-like-hyperlink.php

    de basic-code voor het formulier:

        <form enctype="multipart/form-data" action="page-to-pass-to.php" method="post">
                            <input type="hidden" name="post-variable-name" value="value-you-want-pass"/>
                            <input type="submit" name="whatever" value="text-to-display" id="hyperlink-style-button"/>
                    </form>

    de basis-css:

        #hyperlink-style-button{
          background:none;
          border:0;
          color:#666;
          text-decoration:underline;
        }
    
        #hyperlink-style-button:hover{
          background:none;
          border:0;
          color:#666;
          text-decoration:none;
          cursor:pointer;
          cursor:hand;
        }
    • Wil je niet een van die CSS-declaraties worden #hyperlink-style-button:hover { ... }?
    • Oeps, ik heb gekopieerd van mijn CSS onjuist naar de post. Goed gezien
  3. 4

    In HTML:

    <a href="index.php?link=home" name="home">home</a>

    Dan in PHP:

    if(isset($_GET['link'])){$_SESSION['link'] = $_GET['link'];}
    • Ik zal niet naar beneden stemmen, maar ik zal zeggen dat ik niet aanraden. Terwijl het werken in een onschuldig code, iets dat raakt een database moet goed worden ontsnapt, zoals de klant kan sturen wat ze willen door middel van, met behulp van deze methode.
  4. 2

    Is jouw link naar een andere webpagina? Als dat zo is, misschien kan je de variabele in de query-tekenreeks en het instellen van de sessie variabele wanneer de pagina wordt gekoppeld aan wordt geladen.

    Dus de link ziet er zo uit:

    <a href="home.php?variable=value" name="home">home</a>

    En de homge pagina zou het parseren van de query-tekenreeks en het instellen van de sessie-variabele.

    • Bedankt voor uw antwoord, maar het doet verwijzen naar dezelfde pagina. Ik zal mijn post een stuk duidelijker zijn.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *