【问题标题】:Storing null value in session variable在会话变量中存储空值
【发布时间】:2013-07-28 23:40:26
【问题描述】:

我有两个PHP 文件,我想在其中存储一个session 变量id 像这样

if(authentification($login,$mdp) == 0)
                {?>
                <script>alert('logging failed');</script>
                <?php
                header('Location: Contacts.php'); 
                }
                else{
                session_start();
                $_SESSION['login'] = $login;
                $_SESSION['mdp'] = $mdp;
                $a = authentification($login,$mdp);;
                $_SESSION['id'] = $a;
                 header('Location: space.php'); 

                }

在文件space.php

session_start(); 
$list = Get_companies_by_user($_SESSION['id']);

function.php

function authentification($login,$mdp){

                parametrs();    

                $Log_query=mysql_query(
                    "   
                        SELECT user_id 
                        FROM  reg_users
                        WHERE username ='$login'
                        AND   password   ='$mdp'

                        ") or die(mysql_error());

                        if ($Log_query == true && mysql_num_rows($Log_query) >0) {

                          while ($Res_user = mysql_fetch_array($Log_query) ) {
                        return $Res_user;

                        }
                        }
                        else return 0;

}

问题在于变量$_SESSION['id'] 的值:为什么space.php 为空?我该如何解决这个错误?

【问题讨论】:

  • 好吧,由于$a 是未初始化的变量,$_SESSION['id'] 将始终为 NULL。
  • authentification() 函数在哪里??

标签: php session php4


【解决方案1】:

尝试类似:

function authentification($login,$mdp){
    $Log_query = mysql_query("SELECT user_id FROM  reg_users WHERE username ='$login' AND   password   ='$mdp'") or die(mysql_error());

    //The user should be unique, not more than 0
    if($Log_query && mysql_num_rows($Log_query) === 1){
        while ($Res_user = mysql_fetch_array($Log_query) ) {
            $user = $Res_user['user_id'];
        }
        return $user;
    }else{
        return 0;
    }
}

您还应该使用以下命令转义 $login$mdp

mysql_real_escape_string($var);

【讨论】:

  • 尝试在您发布的第一个脚本上回显 $a 并查看其中包含的内容
  • $a的值为6
  • 所以功能验证有效...在您发布的内容之外还有其他内容...如果$a = 6 那么$_SESSION['id'] 也是= 6...如果您发布$_SESSION['id'] on space .php`是0?还是函数Get_companies_by_user 什么都不返回?
  • 我把代码改成session_start(); require("function.php"); $a = $_SESSION['id']; $list = Get_companies_by_user($a); 就可以了!!!
  • 是的,显然您需要包含包含调用它的函数的文件。如果对你有帮助,请采纳我的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
相关资源
最近更新 更多