【问题标题】:Session Not Being Set会话未设置
【发布时间】:2018-09-22 15:08:44
【问题描述】:

我有以下代码,但由于某种原因会话保持为空。

有人可以帮忙解决这个问题吗?

<?php

session_start();

ob_start();

$ifLogged = $_SESSION["mbse"];

if(!isset($ifLogged))
{
    $_SESSION["mbse"] = 'not logged';
}

echo '--'.$ifLogged.'--';

//Obtain Info if User Tried to Log In
$username = $_POST[username];
$password = $_POST[password];
$submit = $_POST[submit];

if(isset($submit))
{

    $_SESSION["mbse"] = $username;

    $user = get_user_by( 'login', $username );
    if ( $user && wp_check_password( $password, $user->data->user_pass, $user->ID) )
    {

        // Automatic login //
        $user = get_user_by('login', $username );

        // Redirect URL //
        if ( !is_wp_error( $user ) )
        {
            wp_clear_auth_cookie();
            wp_set_current_user ( $user->ID );
            wp_set_auth_cookie  ( $user->ID );

            echo '<meta http-equiv="refresh" content="0;URL=/landing-page" />';


            exit();
        }
        else
        { echo 'Error';}
        //Stop Here
    }
    else
    {
       echo "Username and Passcode Do Not Match";
    }
}

//Obtain Domain and Check Alias
$domain = "$_SERVER[HTTP_HOST]";
$alias = "$_SERVER[REQUEST_URI]";

//Strip the Slashes from the Alias

$alias = str_replace("/", "", $alias);

if($alias == '')
{
    $nameInput = 'text';
}
else
{
    $nameInput = 'hidden';
}


echo'

<form method="POST">
 <div class="form-group">
<input class="form-control" type="'.$nameInput.'" value="'.$alias.'" name="username" placeholder="Input Your Username" required>
</div>
<div class="form-group">
<input class="form-control" type="password" name="password" placeholder="Input Your Password"  required />
</div>
<div class="col-sm-12  submitlogin">
<input class="btn" type="submit" name="submit" value="Submit" />
</div>
</form>';

从下一页开始,当我返回此页面时 - 会话最初是空的,在第一次尝试后显示“未登录”。问题是在重定向发生时触发条件。

非常感谢您的帮助!

【问题讨论】:

  • 试试if(empty($_SESSION['mbse']))。为什么人们坚持将完美的数组值移动到不必要的标量变量中?
  • 我已完成此更改,但我认为这不是问题所在。由于某种原因,未存储身份验证时的会话。
  • 是的,已确认。语句 $_SESSION["mbse"] = $username;永远不会被执行。

标签: php html wordpress session


【解决方案1】:

发现了,花了比应该更长的时间,抱歉

数组键需要像这样用引号括起来

$username = $_POST['username'];
$password = $_POST['password'];
$submit = $_POST['submit'];

【讨论】:

  • 我在设置会话后立即添加了一个触发器,并输出存储的内容。该值显示正确。因此,如果我将 $username 设置为“测试”,则 js 警报将显示“触发测试”。但是,会话变量似乎没有被存储,因为在随后的页面中它又丢失了。
猜你喜欢
  • 2019-12-29
  • 2013-05-13
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-14
相关资源
最近更新 更多