【问题标题】:How to store session in php? [closed]如何在php中存储会话? [关闭]
【发布时间】:2014-07-26 17:37:50
【问题描述】:

我在 header.php 中创建了会话,但是当我更改页面时,会话会自动销毁。

会话开始这段代码我放在 header.php 的最顶部

session_start();

会话的php代码

<?php $_SESSION['lang'] = $_GET['herbew'];
if(isset($_SESSION['lang'])){  
echo $_SESSION['lang'];   } ?>

我为用户提供更改语言选项的 HTML

<form action="<?php echo $_SERVER['REQUEST_URI']?>" method="get">
<div class="lang">
<span class="english"><input type="hidden" name="english" value="english">
<input type="submit" name="submitsd" value="eng" ></span>
<span class="herbew"><input type="hidden" name="herbew" value="herbew">
<input type="submit" name="submit" value="her" ></span>
</div> 
</form>

【问题讨论】:

  • 在每个页面脚本的顶部需要session_start(),才能访问或设置会话数据
  • 请参阅我使用 wordpress 主题 header.php 文件,并且我确定每次标题都调用其他页面。我说工作,但是当我更改页面时它不起作用。

标签: php wordpress


【解决方案1】:

必须启动会话才能访问会话变量。

在页面顶部添加:

session_start(); 

这将开始一个会话。还需要在使用会话数组的每个页面上都有session_start();


如果您希望将数据添加到会话数组。您需要在用户按下提交按钮后执行此操作。即,

表单 > 重定向到 AddSess.php > 将所需的值添加到会话 > 重定向到正确的页面

即:

<form action="AddSess.php" method="POST">
  <input type="text" name="test">
  <input type="submit" name="submit">
</form>

以及AddSess.php

session_start(); 
if (isset($_POST['submit'])){
  $_SESSION[] = $_POST['test'];
  header ("Location: index.php");
}

上面是一个非常基本的例子,说明如何将数据附加到会话中

Add variable in session variable in PHP

【讨论】:

  • 希望你已经掌握了wordpress知识。我在主题 header.php 文件中使用了此代码。当我提交按钮时,它对我来说很好,但是当我更改页面或重定向到其他页面时,headrer.php 文件在每个页面上保持不变,因此不应破坏会话,其次我做到了没有任何需要调用会话。
  • 如我所说。这是一个非常基本的例子
  • 请查看link
  • 为了让 PHP 注册会话值已被添加/更改/删除,它需要刷新,以便 PHP 可以读取最新的会话数组。如果您想选择其他选项,Ajax 可能会满足您的要求
【解决方案2】:

每次调用页面时,您都会覆盖会话变量。如果$_GET['herbew'] 为空,则$_SESSION['lang'] 也为空

在分配之前检查$_GET

if (isset($_GET['herbew'])) {
    $_SESSION['lang'] = $_GET['herbew'];
}
if(isset($_SESSION['lang'])) {  
    echo $_SESSION['lang'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 2010-12-16
    • 2012-11-19
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多