无法将变量添加到php会话中

时间:2017-02-21 16:30:12

标签: php session configuration session-variables session-cookies

我正在尝试将变量添加到会话中并在函数中读取该变量。

所以这里是 index.php:

<?php
include("include/config.php");

if(!empty($txt_user) && !empty($txt_pass))
{
    $result=login_func($txt_user,$txt_pass);

    if($result==1)
    {
        header("Location: homepage.php");
    }else{
        $alert_class="alert-danger";
    }
}
?>
<form action="<?php echo("".$_SERVER['PHP_SELF']."");?>" method='post' class='form-validate' id="test">
                <div class="form-group">
                    <div class="email controls">
                        <input type="text" name='txt_user' placeholder="Kullanıcı Adınız" class='form-control' data-rule-required="true">
                    </div>
                </div>
                <div class="form-group">
                    <div class="pw controls">
                        <input type="password" name="txt_pass" placeholder="Şifreniz" class='form-control' data-rule-required="true">
                    </div>
                </div>
                <div class="submit">
                    <input type="submit" value="Giriş Yap" class='btn btn-primary'>
                </div>
            </form>

的config.php:

<?php

ini_set('session.gc_maxlifetime', 3600);
session_start(); 
ob_start();

include("class.php");
include("functions.php");

**connections to db**
?>

的functions.php:

function login_func($user,$pass)
{
  $sql=mysql_query("SELECT * FROM table WHERE user_name='$user' AND pass='$pass' LIMIT 1");

  $control_number=mysql_num_rows($sql);
  if(($control_number==1))
  {
    $_SESSION['login_id']=@mysql_result($sql,0,'id');
    $_SESSION['login_name']=@mysql_result($sql,0,'name');
    $_SESSION['login_email']=@mysql_result($sql,0,'email');

    return 1; // true
  }else{
    return 2; //false
  }
}

因此,如果我将以下命令添加到homepage.php,我会得到每个echo的空结果:

   echo $_SESSION['login_id'];
   echo $_SESSION['login_name'];
   echo $_SESSION['login_email'];

即使我在函数中执行相同的echo操作也不会给出任何输出。

also here are my php session configurations:

所以我被困在这里,无法找到导致这个问题的原因。谢谢你的帮助。

  

请不要担心语法错误我认为只有问题是使用错误的会话和会话conf。

1 个答案:

答案 0 :(得分:0)

您正尝试将$txt_user$txt_pass个变量视为registered globals

除非您使用的是php 5.3及以下版本,否则将从PHP中删除register_globals。

注册全局变量是一个<强大的安全风险,在任何情况下都应该避免。

尝试使用$_POST['txt_user']$_POST['txt_pass']代替