我正在创建一个登录系统,在该系统中我使用个人电子邮件地址作为我数据库中的唯一标识符。人们可以使用任何 openid 提供程序登录,例如 google ect(也可以是 facebook),它只会将电子邮件作为唯一标识符存储在我的 sql 数据库的用户表中。(意味着我不必担心电子邮件验证、密码等问题,用户不必注册)。
这是有效的,通过使用链接/javascript 打开一个新窗口,然后我的 php 脚本被定向到 google 或任何提供者。然后他们输入详细信息,然后 google/ect 会自动将窗口连同(如果有效)用户详细信息(最重要的是电子邮件)重定向回我的登录脚本。
现在我查看电子邮件的响应,看看它是否在我的数据库中,如果没有添加它,如果是,使用 $_SESSION,将用户登录到我的站点。
我使用 openid 机制(谷歌、雅虎等)完美地完成了这项工作。我也试图让它与 facebook 一起工作,但遇到了很大的困难。它能够将用户登录到 fb,获取用户电子邮件等。但是,一旦我尝试将用户登录到我的网站,它就不起作用。出于某种原因,它为我打开的新窗口(并且我的脚本 + 重定向运行)有一个单独的会话(包括单独的 sessionid),然后到我网站的其余部分?
只是想知道是否有人知道为什么会发生这种情况。
这是登录脚本的样子(在新窗口中运行):
<?php
$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_URL";
session_start();
$code = $_REQUEST["code"];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=email&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" …Run Code Online (Sandbox Code Playgroud) 我想在本地保存树状结构的值,然后根据用户交互检索它们.经过一些研究,我发现sessionStorage(或localStorage)可能是一个很好的方法来做这件事.但是我在保存嵌套数据方面遇到了麻烦.
通常你有:
sessionStorage['key'] = 'someString';
Run Code Online (Sandbox Code Playgroud)
我试图实现类似的东西:
sessionStorage['key1'] = [];
sessionStorage['key1']['key2'] = 'someString';
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个undefined错误.
我已经检查了一些其他存储库,但它们只提供了单个键值对选项.有什么我想念的吗?
我用的时候:
session_name( 'fObj' );
session_start();
$_SESSION['foo'] = 'bar';
Run Code Online (Sandbox Code Playgroud)
随后加载页面并运行:
session_start();
print_r( $_SESSION );
Run Code Online (Sandbox Code Playgroud)
不返回会话数据.
如果我删除session_name(); 它工作正常.
有谁知道如何使用具有不同会话名称的会话?
更新:
如果我运行上面的代码,作为两个页面加载,然后更改为:
session_name( 'fObj' );
session_start();
print_r( $_SESSION );
Run Code Online (Sandbox Code Playgroud)
我可以访问数据.但是,如果它只在我第一次加载没有该行的页面时才有效:
session_name( 'fObj' );
Run Code Online (Sandbox Code Playgroud) 我正在尝试像下面的代码一样创建会话,但会话不起作用,请向我提供任何解决方案。
节省
$data = array(
"id" => $row->id,
"name" => $row->name
);
Session($data);
Run Code Online (Sandbox Code Playgroud)
拿来
Session('id');
Run Code Online (Sandbox Code Playgroud)
我也尝试过网络中间件,但直到同一个会话不起作用
Route::group(['middleware' => ['web']], function ()
{
});
Run Code Online (Sandbox Code Playgroud) I am using sessionStorage to ensure an action only happens once per session. However, if a user opens a new window - the sessionStorage is not carried over to the new window, and the action is executed again. See my code below:
if sessionStorage.alreadyTracked != "1"
sessionStorage.alreadyTracked = "1"
...
Run Code Online (Sandbox Code Playgroud)
Is there an easy way to do this that applies to all tabs? Maybe I need to use a cookie?
我需要按组创建一个行号。在 mysql 中,我为此使用“用户定义的变量”。但是在 Athena 中给了我一个错误:输入“@”没有可行的替代方案
这是我的查询:
SELECT @row_num := IF(@prev_value=concat_ws('',t.user_id,t.campaign_id,t.placement_id, t.creative_id),@row_num+1,1) AS RowNumber
,t.user_id
,t.campaign_id
,t.placement_id
,t.creative_id
, t.imp_clk_event_dt
,@prev_value := concat_ws('',t.user_id,t.campaign_id,t.placement_id, t.creative_id)
FROM e2c_conv t,
(SELECT @row_num := 1) x,
(SELECT @prev_value := '') y ORDER BY t.user_id,t.campaign_id,t.placement_id, t.creative_id, t.imp_clk_event_dt
Run Code Online (Sandbox Code Playgroud)
任何有关如何解决此问题的建议将不胜感激。
variables session-variables amazon-web-services amazon-athena
我正在尝试将自定义会话变量存储在数据库中。然后,在 WooCommerce 管理员中的新订单电子邮件和订单详细信息中显示它们。
\n我在会话中有自定义变量:
\nadd_action( 'init', 'oturum_degiskeni_olustur' );\nfunction oturum_degiskeni_olustur () {\n // Early initialize customer session\n if ( isset(WC()->session) && ! WC()->session->has_session() ) {\n WC()->session->set_customer_session_cookie( true );\n }\n\n if ( isset( $_GET['konumu'] ) || isset( $_GET['masa_no'] ) ) {\n $konum = isset( $_GET['konumu'] ) ? esc_attr( $_GET['konumu'] ) : '';\n $masa = isset( $_GET['masa_no'] ) ? esc_attr( $_GET['masa_no'] ) : '';\n\n // Set the session data\n WC()->session->set( 'custom_data', array( 'konum' => $konum, 'masa' => $masa ) );\n }\n}\n …Run Code Online (Sandbox Code Playgroud) 我试图在ASP.NET中的一个Session变量中删除所有内容(我来自Windows编程背景),我通常完全停止在Session变量中显式存储任何内容.任何人都可以给出一些关于你认为会话变量可接受使用的指导方针吗?
这是一个具体的例子......我从数据库加载一个业务对象并填充和编辑屏幕.用户可以编辑值并保存.旧方法我将加载业务对象,加载我的表单,并将业务对象保存到会话变量.如果用户单击了save,我将从会话变量中检索业务对象,替换已编辑的值,然后保存它.我从数据库加载业务对象并加载我的表单的新方法.用户将编辑值并单击"保存".我将从数据库重新加载我的业务对象,替换编辑的值,然后保存它.我不是网络编程专家,但我觉得第一种方法是错误的,因为使用会话变量的不好的耻辱,我觉得第二种方式是错误的,因为它只是感觉像一个糟糕的方式(加载业务对象两次) ).我们不要在这里考虑任何形式的缓存.我该怎么处理?
我是JSF的新手,我正在做一些基本的事情来了解一个人应该如何使用它.在我的其中一个项目中,我有一个ManagedBean,SessionScoped如下所示
@ManagedBean(name="user")
@SessionScoped
public class User implements Serializable
// Having a couple of String properties (with setters and getters).
Run Code Online (Sandbox Code Playgroud)
现在,在一个表单的一个页面中,我有一个<h:inputText id="firstName" value="#{user.firstName}" ... />我希望从用户那里得到一个值并将它放在我的bean的属性中.第二页只显示输入数据,从bean访问它.(<h:outputText value="${user.firstName}"/>).
问题是,如果在那之后我进入第三页(只是输入URL)并且我试图使用相同的行再次显示来自bean的数据,则不会显示任何数据.我期待虽然bean是会话作用域,但它仍然可以在当前会话中使用.
是否有任何(已知)方式供最终用户编辑Laravel 4会话变量?