【问题标题】:Opera Mini & PHP SessionsOpera Mini 和 PHP 会话
【发布时间】:2015-07-18 03:19:20
【问题描述】:

我曾尝试使用 Cookie 和 PHP 会话将敏感信息从一页传递到下一页,但仍然没有成功。这在我测试过的所有浏览器中都可以正常工作,除了 Opera Mini。我还发现了这个:http://caniuse.com/#search=cookie

这就是我目前的设置方式。

page1.php:

<?php
session_start();
$time = time();
$key = '';
$hash = md5($key . $time);
$_SESSION['inno'] = '';
header("Location: page2.php". $hash);
exit;
?>

page2.php:

<?php
session_start();
if (isset( $_SESSION['inno'])) {
include("../global/header.php");
include("../global/content.php");
}
session_destroy();
?>

页面的内容是敏感信息,所以它从page1.php转到page2.php。

如果 Opera Mini 不支持以这种方式传递信息,是否有某种解决方法?

【问题讨论】:

  • 我真的不明白你的问题,你说你在使用会话传递信息时遇到问题,但你没有提供任何实际使用数据做任何事情的例子......
  • 所有主流浏览器都支持 Cookie,但它们可能会被禁用。您发布的链接是关于本地存储的,这是不同的。您的代码似乎没有做太多,但我认为这是一个不完整的示例。如果它可以在其他浏览器中运行,则可能是在 Opera Mini 中存储 cookie 时出现问题,可能是因为它们被禁用,或者是由于其他一些问题。不过,如果您希望我们判断您的代码是否应该工作,请制作一个实际使用数据并且可以重现问题的完整示例。
  • 也许这会有所帮助? stackoverflow.com/a/10981509/2191572
  • @JonStirling 我认为 OP 对他们的代码做了一个非常简单的表示,只是忘记在某处添加 $_SESSION['var_name'] = 'some data';
  • ...don't process cookies sent in anything but a 2xx response - you are responding with a 302 redirect... from stackoverflow.com/a/2584379/2191572 似乎相关

标签: php session cookies opera


【解决方案1】:

将类用于可重用资源,它们不会那么混乱。

您好像忘记分配数据了,所以

这是有希望的结构:

index.php

<?php

include_once 'session.php';

$my_session = new session_helper;

//SET YOUR SESSION VARIABLES

if($my_session->get_session_data('username') == null){
    $sessionData = array(
        'username'=>'me',
        'logged'=>true,
        'password'=>md5('password')
    );
    $my_session->set_session_data($sessionData);
}

?>
<a href="view_session.php">View my session</a>

view_session.php

<?php 

include_once 'session.php';

$my_session = new session_helper; 

?>

<!--GET YOUR SESSION VARIABLES-->

<p>Username: <?php echo $my_session->get_session_data('username'); ?></p>
<p>Logged: <?php echo $my_session->get_session_data('logged'); ?></p>
<p>Password: <?php echo $my_session->get_session_data('password'); ?></p>
<p>&nbsp;</p>
<?php $my_session->debug_session(); ?>

session.php 摆脱头痛

<?php

//MANAGE YOUR SESSION

class session_helper
{

    //Start session when class instance created
    function __construct()
    {

        session_start(); 

    }

    //Session data set using an array to easily add multiple values e.g. on login page
    function set_session_data($sessionData)
    {

        forEach($sessionData as $key => $value){//Go through each key

            $_SESSION[$key] = $value;//And assign it to session

        }

    }

    function get_session_data($session_data_key)
    {

        return $_SESSION[$session_data_key];//Call this to get your values

    }

    function debug_session()
    {

        print_r($_SESSION); //Check what session contains if something is wrong

    }

    function close_session()
    {

        session_destroy(); //Good to use for fresh start/logout.

    }

}

?>
  • session.php 管理会话。直接访问会输出一个空白页面。
  • index.php 使用条件来设置变量。您无需每次都对数据进行返工。
  • view_session.php 包含有关会话的所有信息。
  • 检索信息的最佳做法是存储数据库的安全/加密主键,然后使用它们从数据库中检索其他所有内容,例如通过用户 ID 获取电子邮件、个人资料创建时间、姓名、姓氏等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2013-02-09
    • 2018-09-22
    • 2011-09-22
    相关资源
    最近更新 更多