gpt4 book ai didi

javascript - isset/空 php session (if else 语句)给出 undefined index

转载 作者:行者123 更新时间:2023-11-30 16:40:49 24 4
gpt4 key购买 nike

我一直想创建一个 javascript 函数来更改 PHP session onclick。更改 session 仅在一定程度上起作用。当我使用 isset 放置一个 if else 语句时,它给出了第二个条件 block (else)的未定义索引错误。到处寻找,却根本找不到任何线索。帮帮我吧。谢谢!这是我的代码。

Javascript

function changeLangToSpanish(){
var lang = "spanish";
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
// Reload the page
window.location.reload();
}
}
xmlhttp.open("POST","set_session.php?lang=" + lang,true);
xmlhttp.send();
}

function changeLangToEng(){
var lang = "english";
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
// Reload the page
window.location.reload();
}
}
xmlhttp.open("POST","set_session.php?lang=" + lang,true);
xmlhttp.send();
}

PHP (set_session.php)

 <?php
if(!isset($_SESSION)){
session_start();
}
if(!isset($_SESSION['lang'])){
$_SESSION['lang'] = "english";
}
else if(isset($_SESSION['lang'])){
$_SESSION['lang'] = $_REQUEST['lang'];
}
?>

HTML(用于测试目的)

<html>
<head>
<?php
include "header.php";
include "set_session.php";
?>
</head>
<body>
<button id = "lol" onclick = "changeLangToSpanish()">lol</button>
<button id = "lol" onclick = "changeLangToEng()">loll</button>
<span id = "lols"></span>

<?php
if(isset($_SESSION['lang'])){

echo '<script>
document.getElementById("lols").innerHTML = "'.$_SESSION["lang"].'";
</script>';
}
?>
</body>
</html>

所以,基本上有一个 HTML 在一个跨度内显示 session 。 session 的更改是由单击 2 个按钮引起的,其中左侧按钮将 session 设置为“西类牙语”,右侧设置为“英语”。可以看到由于session的初始化,span显示的是“english”,但是当我点击其中一个按钮时,弹出未定义索引错误,提示(else)代码块错误。使用 empty 而不是 isset 也不能​​解决它。而且我无法在 session 之间切换。希望我能得到解决方案。谢谢!

最佳答案

看起来有一个潜在的错误:

else if(isset($_SESSION['lang'])){
$_SESSION['lang'] = $_REQUEST['lang'];

特别是,此代码不检查是否实际设置了 $_REQUEST['lang']。也许您的意思是检查而不是检查 $_SESSION['lang'](其值在此处被覆盖)?

关于javascript - isset/空 php session (if else 语句)给出 undefined index ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32031765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com