【问题标题】:change the value of session variable更改会话变量的值
【发布时间】:2013-06-25 07:04:45
【问题描述】:

我创建了一个网站,当用户登录时,他指定了年份,即 2013-2014 或 2014-2015,依此类推...现在,我将这个年份值存储在我的会话变量中在整个站点中使用它。现在,如果用户想要更改年份,他将不得不退出,然后使用不同的年份登录。我在主页上创建了一个下拉菜单,它将显示数据库中的所有年份。我想通过从主页选择一年而不退出来更改会话变量的值。

代码如下:

session_start();
if(!isset($_SESSION["myusername"])){
    header("location:login.php");
}

$year = $_SESSION["year"];

这是下拉菜单的代码:

$query = "SELECT * FROM year";
$result = mysql_query($query);
echo "<select class='innerinputstyle' id='year' name='year'><option value='$year'>$year</option>";
while($note=mysql_fetch_array($result)){
echo "<option value=$note[year]>$note[year]</option>";
}
echo "</select>";

谁能告诉我如何从主页更改$year 的值?

【问题讨论】:

  • 对于此选择,您可以为 onselect 事件添加 ajax 调用。该 ajax 调用可以触发一个 php 文件,该文件只需将 $_SESSION['year'] 更改为传递的值。
  • 你怎么能这样做?我的意思是说我放了一个按钮,然后在提交时我在另一个 php 文件上获取值。但是如何更改会话变量?你能给我一个示例代码或参考吗?

标签: php mysql session-variables


【解决方案1】:

我认为您有很多选择来实现这一点,AJAX 就是其中之一,但一切都取决于您希望如何实现用户界面。您可以考虑使用下拉菜单创建一个小表单并提交年份,您可以通过提交按钮或通过 javascript 执行此操作,对于 AJAX 示例,解决方案始终相同:

$_SESSION['year']=$_GET['year'];

最终取决于用户界面,如果您希望它对用户不可见,无需刷新页面,请使用 AJAX,否则只需提交您的输入

【讨论】:

  • 嘿,我通过提交表单尝试了这个。但是当我将它重定向回主页时,值保持不变。
  • 您将表单寄到哪里?哪一页?我猜你是发布到 tje himepage 本身,那么你应该有类似的东西:himepage
  • session_start(); if(!isset($_SESSION["myusername"])){ header("location:login.php"); } $_SESSION['year']=$_GET['year']; $year = $_SESSION["year"];
【解决方案2】:

改变

echo "<select class='innerinputstyle' id='year' name='year'>"

进入

echo "<select class='innerinputstyle' id='year' name='year' onChange='doIt()'>"

这里是ajax函数

function doIt(){
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function(){
    }
    var new_year = document.getElementById('year').value;
    xmlhttp.open("GET","change_year.php?year="+new_year,true);
    xmlhttp.send()
    return false;
}

在change_year.php上你可以很容易地改变

$_SESSION['year']=$_GET['year'];

警告:未经测试的代码。用来勾勒想法。

【讨论】:

  • 嘿,我通过提交表单尝试了这个。但是当我将它重定向回主页时,值保持不变。
  • 您是否在您的主页上设置了 $_SESSION['year'] 的值?请注意,当您使用 ajax 技术时,您不需要提交表单。选择一个选项后,将触发 doIt() 函数。
  • 我试过用 ajax 来做。但它在这条线上给了我一个错误。 xmlhttp.open("GET","change_year.php?year"=,true);
猜你喜欢
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 2016-09-16
  • 2023-03-21
  • 2017-10-25
  • 1970-01-01
相关资源
最近更新 更多