简体   繁体   English

如何在php中设置会话变量onclick

[英]How to set the session variable onclick in php

I want to set session on clicking of link so after login user will redirect to last visited page. 我想在单击链接时设置会话,因此登录后用户将重定向到上次访问的页面。

for example: 例如:

Step1 : user opened home page.(seesion url set to home page 步骤1:用户打开首页。(查看网址设置为首页)

$_SESSION['url'] = $_SERVER['REQUEST_URI'])

step2 : Next in new tab user will open contact page (again session variable reset) 步骤2:新标签页中的下一个用户将打开联系页面(再次重置会话变量)

step3: user will come to home page and click to login link.(session not set because no reload of page) 第三步:用户将进入首页并单击登录链接。(未设置会话,因为没有重新加载页面)

step4: after login user will redirect to contact page. 步骤4:登录后,用户将重定向到联系页面。

but here i want user to be redirect where user clicked the link for login. 但是在这里我希望用户重定向到用户单击了登录链接的位置。

i tried with following code but it not working for me. 我尝试使用以下代码,但对我不起作用。

PHP code: PHP代码:

session_start();

$_SESSION['url'] = $_SERVER['REQUEST_URI'];

$url=$_SESSION['url'];

HTML code HTML代码

<div class="gallery_div"> 
    <p>
      Please Click <strong><a href="login.php?link=<?php echo $url; ?>" style="color:#993b05"> here </a></strong>to login

    </p></div>

In login page 在登录页面

session_start();
if(isset($_GET['link']))
{
$_SESSION['url'] = $_GET['link'];

}

when redirect this page it coming with parameter and so page not found is coming. 当重定向此页面时,它带有参数,因此找不到页面。 because only login.php is there. 因为那里只有login.php。

can any one help me on this. 谁可以帮我这个事。

You don't really have to use session to achieve this. 您实际上不必使用会话来实现此目的。 You can redirect the user based on $_SERVER['HTTP_REFERER']. 您可以基于$ _SERVER ['HTTP_REFERER']重定向用户。 This will tell you the last visited page. 这将告诉您上次访问的页面。 You can even add some filtration here as needed. 您甚至可以根据需要在此处添加一些过滤。

if($_SERVER['HTTP_REFERER']!='' && stripos($_SERVER['HTTP_REFERER'],'mydomain.com')!==false){
   header('location:'.$_SERVER['HTTP_REFERER']);
   exit;
}

$_SESSION['url'] is not the same as $url $_SESSION['url']$url

In your html, change <?php echo $url; ?> 在您的html中,更改<?php echo $url; ?> <?php echo $url; ?> to <?php echo $_SESSION['url']; ?> <?php echo $url; ?><?php echo $_SESSION['url']; ?> <?php echo $_SESSION['url']; ?>

Two pages required.First one is for calling (on-click) a session and other sets the value of session through ajax. 需要两页。第一页用于调用(单击)会话,另一页通过ajax设置会话的值。

< a href="#" onclick="setsession()" style="color:#993b05"> Login </a>
<br/>
<script>
<br/>
function setsession(){<br/>
if (window.XMLHttpRequest)  <br/>
  {// code for IE7+, Firefox, Chrome, Opera, Safari<br/>
  xmlhttp=new XMLHttpRequest(); <br/> 
  }<br/>
else<br/>
  {// code for IE6, IE5<br/>
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");<br/>
  }<br/>
xmlhttp.onreadystatechange=function()<br/>
  {<br/>
  if (xmlhttp.readyState==4 && xmlhttp.status==200)<br/>
    {<br/>
    document.getElementById("scat").innerHTML=xmlhttp.responseText;<br/>
    }<br/>
  }<br/>
<br/>
xmlhttp.open("post","setsession.php",true);// calls a page  where u can set session <br/>
xmlhttp.send();<br/>
}<br/>
</script><br/>
if(isset($_GET['link']))<br/>
{<br/>
$_SESSION['url'] = $_GET['link'];<br/>
<br/>
}<br/>
header("Location:redirect.php");<br/>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM