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

Javascript 如何在php中设置会话变量onclick,javascript,php,jquery,html,session,Javascript,Php,Jquery,Html,Session,我想在点击链接时设置会话,这样在登录后用户将重定向到上次访问的页面 例如: 步骤1:用户打开主页。(请参阅设置为主页的url。) $_SESSION['url'] = $_SERVER['REQUEST_URI']) 步骤2:下一步在新选项卡中,用户将打开联系人页面(再次重置会话变量) 步骤3:用户将进入主页并单击登录链接。(由于没有重新加载页面,所以未设置会话) 步骤4:登录后,用户将重定向到联系人页面 但在这里,我希望用户重定向到用户单击链接登录的地方 我尝试了以下代码,但它不适合我 PH

我想在点击链接时设置会话,这样在登录后用户将重定向到上次访问的页面

例如:

步骤1:用户打开主页。(请参阅设置为主页的url。)

$_SESSION['url'] = $_SERVER['REQUEST_URI'])
步骤2:下一步在新选项卡中,用户将打开联系人页面(再次重置会话变量)

步骤3:用户将进入主页并单击登录链接。(由于没有重新加载页面,所以未设置会话)

步骤4:登录后,用户将重定向到联系人页面

但在这里,我希望用户重定向到用户单击链接登录的地方

我尝试了以下代码,但它不适合我

PHP代码:

session_start();

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

$url=$_SESSION['url'];
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>
当重定向这个页面时,它会带有参数,所以页面不会被找到。因为只有login.php在那里


有人能帮我吗。

$\u会话['url']
$url


在html中,将
更改为

您实际上不必使用会话来实现此目的。您可以基于$\u服务器['HTTP\u REFERER']重定向用户。这将告诉您上次访问的页面。您甚至可以根据需要在此处添加一些过滤

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

需要两个页面。第一个页面用于调用(单击)会话,另一个页面通过ajax设置会话的值。

登录


函数setsession(){
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=newxmlhttprequest();
}
否则
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=function()
{
如果(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“scat”).innerHTML=xmlhttp.responseText;
}
}

open(“post”,“setsession.php”,true);//调用可以设置会话的页面
xmlhttp.send();
}

如果(isset($_GET['link']))
{
$\u会话['url']=$\u获取['link'];

}
标题(“Location:redirect.php”);

问题:您没有打开会话。在写入会话之前尝试调用
session\u start
。抱歉,在帖子中我忘记了。但是在代码中使用了
$url
定义在哪里?当您单击登录链接时,您是否有正确的url?尝试回显
$\u GET['link']
$\u会话['url']
。如果正确,您可能需要使用
标题('Location:'.$\u SESSION['url'])重定向。
。否则,请检查您是否在错误的位置重置或破坏会话。尝试打印\u r($\u SERVER)以查看最后一页的正确变量,因为在本地主机上,它可能无法在特定域上工作。您好$\u SERVER['HTTP\u REFERER']给上一次访问的页面“mydomain.com/display.php?ID=781”,但这里我有类似“mydomain.com/display.php?ID=781#about”的页面,所以如何获取该#about是该页面中的菜单选项卡,如about、share、setting和all。取决于需要执行的用户选择。请在这方面帮助我
if($_SERVER['HTTP_REFERER']!='' && stripos($_SERVER['HTTP_REFERER'],'mydomain.com')!==false){
   header('location:'.$_SERVER['HTTP_REFERER']);
   exit;
}
< 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/>