非常感谢,抱歉打扰..我仍然是一个PHP菜鸟,我在尝试理解/找出如何让多个会话在一起工作时遇到一些问题.. 这是我现有的会议 e.g。
session_start();
// If no session exists, create one
if (!session_is_registered('lesson')) {
$_SESSION['lesson'] = new lesson;
}
$lesson = $_SESSION['lesson'];
然后我想从下面的代码添加新会话:
if (!isset($_POST['languageselect'])) {
$languageselect = $standardlanguage;
} else { /* set standard language */
$languageselect = $_POST['languageselect'];
} //endif
if($languageselect == 1) { /* My Language Pack */
$languagearray = array (
1=>"one",
2=>"two");
} else { /* English Language Pack (=standard) */
$languagearray = array (
1=>"one",
2=>"two");
function printoptionbox($boxname, $cssclass, $elementsarray, $kataktiv=1) {
echo "<select name='$boxname' class='$cssclass'>";
while (list($key,$value) = each($elementsarray)) {
if ($key == $kataktiv) {
$SELECTED = "SELECTED";
} else {
$SELECTED = "";
} //endif
echo "<option $SELECTED value='$key'>$value</option>";
} //endwhile
echo "</select>";
}
这里是来自下拉语言选项的HTML代码:
<td class="arial" width="210"><?php printoptionbox("languageselect", "languageselect", $language_array, $kataktiv=$languageselect); ?></td> <input type="submit" name="languageselectsubmit" value="OK" width="30" style= "width: 30px; font-size:10px" class="submitbutton">
但我最困惑的是,如何从上面的语言代码创建会话,然后将用于另一个页面(不同的代码),因为多语言选项只适用于第一页但会重置为下一页... 非常感谢您对此的任何建议
答案 0 :(得分:3)
我觉得也许我在这里并没有完全遵循你的意图,但我想提一下1)你将无法在同一时间维持两个会议2)我认为你不会真的需要无论如何。
会话可以存储稍后要检索的数组数据。如果您确定要将该数据存储在会话中,则只需添加数组并在需要时将其绘制回来。你需要做的就是编写代码,这样如果他们选择不同的语言,新的语言就会在会话中通过覆盖旧数组来换出。
您可能会发现将语言数组存储在服务器上序列化的平面文件中,然后根据用户首选项将其绘制出来更容易(我最近)。这是非常低的开销,非常快,您可以“缓存”您的语言,因此几乎不需要处理。
答案 1 :(得分:2)
我认为你误解了$ _SESSION全球背后的概念。它实际上只是一个全局关联数组,用于在不同请求之间存储值。
您执行期间输入的全局内容将被保存,直到下一个请求发生或会话超时。
所以,请考虑这个例子:
// file1.php
session_start();
$_SESSION['lesson'] = new lesson();
// file2.php
session_start();
$_SESSION['language_code'] = 1;
// file3.php
session_start();
// dumps both values we packed into the session from the previous requests
var_dump($_SESSION);
答案 2 :(得分:1)
首先,我不完全确定你完全理解会话的概念以及它如何在PHP上运行。 PHP中的会话是指所有变量(语言,课程等),而不是单个变量。所以你真正想要的不是如何保持“多会话直播”,而是如何“将多个变量存储到会话中”。
您可以将多个变量保存为单个会话,方法是将它们保存为$ _SESSION中的关键字。例如,您可以通过调用$_SESSION['lang']='en';
将语言设置保存到会话。同样,您可以通过调用$_SESSION['lesson']=1;
将“课程”变量添加到会话中。
我强烈建议您阅读有关PHP会话如何工作的教程。例如,请查看PHP Sessions on w3schools.com。
将其提升到您的代码级别,您可以考虑以下几点:
printoptionbox
传递给$_SESSION
。作为快速测试,您可以尝试用以下方式替换您的电话:
<?php printoptionbox("languageselect", "languageselect", $language_array, $_SESSION['language']); ?>
此外:
$_SESSION
!作为旁注:
session_is_registered
可能也会导致问题,因为它已在最新版本的PHP中弃用。此外,您可以使用isset
直接替换它:// If no session exists, create one if ( isset($_SESSION['lesson']) ) { ... }