【问题标题】:How to set the session variable onclick in php如何在php中设置会话变量onclick
【发布时间】:2014-07-17 05:36:09
【问题描述】:

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

例如:

Step1 : 用户打开主页。(seesion url set to home page

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

step2 : 接下来在新标签中,用户将打开联系人页面(再次重置会话变量)

第3步:用户会来到主页并点击登录链接。(会话未设置,因为没有重新加载页面)

第四步:登录后用户会跳转到联系页面。

但在这里我希望用户被重定向到用户单击登录链接的位置。

我尝试使用以下代码,但它不适合我。

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>

在登录页面

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

}

当重定向此页面时,它带有参数,因此找不到页面。因为那里只有 login.php。

任何人都可以帮助我解决这个问题。

【问题讨论】:

  • 问题:你没有打开会话。在写入会话之前尝试调用session_start
  • 对不起,我忘记了。但在使用的代码中。
  • $urldefined 在哪里?
  • 您点击登录链接时的网址是否正确?尝试回显$_GET['link']$_SESSION['url']。如果您做对了,您可能需要使用header('Location:'.$_SESSION['url']); 进行重定向。否则请检查您是否在错误的位置重置或销毁会话。
  • 尝试 print_r($_SERVER) 查看最后一页的正确变量是什么,因为在本地主机上它可能无法像在特定域上那样工作。

标签: javascript php jquery html session


【解决方案1】:

$_SESSION['url']$url不一样

在您的 html 中,将 &lt;?php echo $url; ?&gt; 更改为 &lt;?php echo $_SESSION['url']; ?&gt;

【讨论】:

    【解决方案2】:

    您实际上不必使用会话来实现这一点。您可以根据 $_SERVER['HTTP_REFERER'] 重定向用户。这将告诉您上次访问的页面。您甚至可以根据需要在此处添加一些过滤。

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

    【讨论】:

    • Hello $_SERVER['HTTP_REFERER'] 给出上次访问的页面“mydomain.com/display.php?ID=781”,但这里我喜欢“mydomain.com/display.php?ID=781” #about" 所以如何获得这个#about 是该页面中的菜单选项卡,例如关于、共享、设置等。根据用户选择需要去..请帮助我
    【解决方案3】:

    需要两页。第一个用于调用(单击)会话,其他通过 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/>
    

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      相关资源
      最近更新 更多