我有这个会话变量,当用户使用以下命令登录时,我试图将其设置为访问级别:
$accessquery = mysql_query("SELECT roleid FROM person WHERE email = '". $email ."'");
$access = mysql_fetch_array($accessquery);
$_SESSION['Access'] = $access;
Run Code Online (Sandbox Code Playgroud)
但是它说“访问”未定义,问题是什么?
编辑*
if (($_SESSION['Access']) == "2")
Run Code Online (Sandbox Code Playgroud)
此处出现错误
编辑*
已调用会话开始。
我想访问我在另一个 php 文件中声明的会话变量。
我怎样才能做到这一点?
这就是我所做的。
测试.php
$_SESSION['SESS_VERSION'] = $member['Version'];
session_write_close();
header('location: '.$_SESSION['SESS_VERSION']);
Run Code Online (Sandbox Code Playgroud)
该会话变量正在工作,我已正确重定向到另一个页面。
例如在该页面上:
test2.php
Run Code Online (Sandbox Code Playgroud)
我正在从 javascript 调用 php 脚本来返回 JSON 格式的数据。
我在该脚本中试图做的test3.php是访问会话变量test.php
这是代码:
<?php
header("Content-type: application/json; charset=UTF-8");
echo '{ "results" : [ ';
$result = dbMySql::Exec("SELECT
m.data1
v.data2,
k.data3
FROM {$_SESSION['SESS_MAIN_BASE']} m, {$_SESSION['SESS_SECOND_BASE']} v, {$_SESSION['SESS_THIRD_BASE']} k");
$result_array = array();
?>
Run Code Online (Sandbox Code Playgroud)
为什么我无法访问此 php 页面上的任何会话变量?也许我的语法不正确。但这是我收到的错误:
Warning: Cannot modify header information - headers already sent
Run Code Online (Sandbox Code Playgroud)
当然还有变量为空的错误。
我是 Struts2 的初学者。我在 PHP 中使用,在记录时将身份验证保存在会话变量中,我可以在注销后销毁该变量。我想知道如何在 Struts2 中执行相同的过程:在登录时设置会话变量并在注销时销毁它。万分感谢。
更新(附加解决方案)
除了有用的答案和评论之外,我们还可以使用:
session.remove("session_var_name"); // instead of session.clear();
Run Code Online (Sandbox Code Playgroud)
删除一个确切的会话变量,而不是删除所有会话变量。谢谢你们。
我对应用程序和网络浏览器之间的会话维护有疑问。
我正在开发一款 iPhone 应用程序,并且还有一个与该应用程序相同的网站(在 WordPress 中)。
我的问题是,如果用户从同一移动设备登录应用程序,是否可以在移动网络浏览器中显示用户登录信息?
简而言之,我想知道这个session存储在哪里?在应用程序中还是在设备中?如果它在设备中,那么我如何检查网络浏览器是否相同?
我有一个简单的应用程序,我希望能够更改语言。在我的主控制器中我有:
session(['applocale' => 'en']);
$request->session()->put('applocale','en');
Run Code Online (Sandbox Code Playgroud)
我知道这两行是相同的,但我想确保它们都不起作用。
然后我有API方法:
public function switchLang(Request $request, $lang)
{
error_log("Current language is: " . session('applocale'));
error_log("Current language is: " . $request->session()->get('applocale'));
}
Run Code Online (Sandbox Code Playgroud)
这里 error_log 没有显示任何内容。
我正在关注这个线程:Laravel 5.3 - How to add Sessions to APIwithout CSRF?
在 Debugbar 中,我可以看到我的 API 函数已命中中间件“会话”,但会话变量不存在。
这就是我的“季节”中间件的样子:
'sessions' => [
\Illuminate\Session\Middleware\StartSession::class,
]
Run Code Online (Sandbox Code Playgroud)
它实际上同时触及“api”和“sessions”中间件。
有什么想法我做错了吗?
我正在使用post方法添加新闻表单.在第二页中,我进行数据验证.我之后定义了变量$message = $_POST["message"],$_SESSION['message'] = "$message";之后我回显了会话变量,一切看起来都很好.当我点击发送哪个转到另一个页面将数据添加到数据库时,会话变为空.每个页面都有session_start,如果我定义可靠,就像$_SESSION="test"它通过所有3个页面但表格中生成的数据丢失.请帮忙!
背景:我是CakePHP的新手.我有一个小的测试网站(目前主要是静态视图和联系表格),在我学习的时候可以玩.在localhost(Ubuntu上的Apache)上一切正常,所以我将它部署到共享主机帐户(由Lunarpages提供).我将/ cake文件夹移出了正常的目录结构(所以我可以将它用于多个应用程序)并且我相应地重新配置了我的webroot的index.php路径.
问题:
setFlash消息不会显示.甚至做一个除了之外什么都不做的简单视图$this->Session->setFlash('message');.我没有收到任何错误消息,闪存只是没有显示重定向不起作用.例如,在联系表单完成后我想$this->redirect( array( 'action' => 'success' ), null, true);但服务器会抛出错误:
警告(2):无法修改标题信息 - 已经发送的标题(输出从/routetoapp/config/routes.php:40开始)[CORE/cake/libs/controller/controller.php,第742行]
其他所有东西似乎都像在localhost上一样工作 - URL重写,组件加载,模型验证.我不知道我的问题是相关的还是单独的问题
到目前为止的疑难
Configure::write('Session.save', 'val');但两者都没有区别.我想我错过了一些简单的东西,但我是这个框架的新手,所以我不确定在哪里看.
是否可以在会话名称中包含变量?就像我有一个变量:$id
我想要这样的东西:
$_SESSION['number'$id]
Run Code Online (Sandbox Code Playgroud)
所以,如果 $id=1
$_SESSION['number1']
Run Code Online (Sandbox Code Playgroud)
而如果 $id=65
$_SESSION['number65']
Run Code Online (Sandbox Code Playgroud) 我想在一个人打开应用程序时设置一个applicationScope变量.设置的值在当前会话期间不会更改.可以作为sessionScope,但有相同的问题如何在会话打开时设置它.
所以我基本上在我的应用程序上有一个登录屏幕,成功登录后,在对主屏幕执行segue之前,我将以下信息保存在会话中的Dictionary中。就像这样(在示例中输入静态信息):
let preferences = UserDefaults.standard
let session_info : [String: String] = [
"user_id": "123",
"name": "John",
"email": "john@doe.com"
]
preferences.set(session_info, forKey: "session")
preferences.synchronize()
Run Code Online (Sandbox Code Playgroud)
这样就保存了会话数据,如果我将其分配给变量并打印,则可以在控制台中获得可选的信息字典。
let session_data = preferences.value(forKey: "session")!
Run Code Online (Sandbox Code Playgroud)
如果我这样做,print(session_data)则会得到以下输出:
{
"user_id" = "123";
"name" = "John";
"email" = "john@doe.com";
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我不确定如何访问键,因为如果我将分配的变量视为字典,它会说Type 'Any' has no subscript members.我使用的是:
print(session_data["user_id"])
Run Code Online (Sandbox Code Playgroud)
有没有办法访问此信息,或者我必须将每个变量保存到单独的会话密钥中?