PHP 区分大小写,变量名传值等要注意保持一致

经过两天的PHP权限组管理学习,因为使用CLASS 类连接数据库,一直没有解决,后来弃用这个数据库连接方法,成功后,调用session传值,使用var_dump($_session['uid'])  输出 发现结果总是输出NULL ,重点看,index.php ,代码如下:

数据库内容如下:

 

login.php 

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
 
<body>
<h1>登录界面</h1>
<form action="checklogin.php" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:  <input type="password" name="pwd" /></div>
<input type="submit" value="登录" />
</form>
</body>
</html>

check.php

<?php
   

//请config的数组传给一个$arr 变量
$arr=require"../php/config_case.php";
//调用funcion.php 中的数据库连接自定义connect()函数。
include"../php/function_case.php";
//将$arr数组数据传递给数据库连接函数connect(),以实现数据连接代码$link;
$link=connetct($arr);

if (!$link) 
	{
		exit('error('.mysqli_connect_errno.'):'.mysqli_connect_error);//不继续向下执行
	    //die 
	}



//  表单提交后...
$posts = $_POST;
//  清除一些空白符号
foreach ($posts as $key => $value) {
       $posts[$key] = trim($value);
}	
$pwd = $posts["pwd"];
$uid = $posts["uid"];

$query = "SELECT *  FROM `roles1_users` WHERE `pwd` = '$pwd' AND `uid` = '$uid'";
//  取得查询结果

$userInfo =mysqli_query($link,$query);
//$res=mysqli_fetch_row($userInfo);
$res = mysqli_fetch_array($userInfo);
//var_dump($res);
//die();
if (!empty($res)) {
    //  当验证通过后,启动 Session
    //  注册登陆成功的 admin 变量,并赋值 true
	session_start();
    $_SESSION["admin"] = true;
	$_SESSION["uid"] = $res['uid'];
	$_SESSION["name"] = $res['name'];
	
	

	//$_SESSION["admin"]
    //echo"<pre>";
	//print_r($_SESSION['name']);
	//var_dump($_SESSION['uid']);
	

	header("Location: index.php");
} else {
    //die("用户名密码错误");
	echo "用户名密码错误,请不要尝试登录";
    header('location:login.php');
}


?>

index.php

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
.list{ width:100px;
    height:35px;
    border:1px solid #36f;
    margin:0px 2px 0px 2px;
      text-align:center;
    vertical-align:middle;
    line-height:35px;}
</style>
</head>
 
<body>
<h1>主页面</h1>
<?php


//  防止全局变量造成安全隐患
$admin = false;
//  启动会话,这步必不可少
session_start();
//  判断是否登陆
if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) {
    echo "您已经成功登陆";
	 var_dump($_session["uid"]);  // 输出结果为NULL,就因为session 用了小写,前面是大写。
	 var_dump($_SESSION["uid"]);  // 输出了LISI 用户名,输出正常。
} else {
    //  验证失败,将 $_SESSION["admin"] 置为 false
    $_SESSION["admin"] = false;
    //die("您无权访问");
	header('location:login.php');
	exit();

}

//$uid ="";
/*if(empty($_session["uid"]))//判断session是否为空</code>
{
  //header("location:login.php");//空的话就返回登录页面</code>
  exit;
}*/
 
$uid = $_session["uid"];

//请config的数组传给一个$arr 变量
$arr=require"../php/config_case.php";
//调用funcion.php 中的数据库连接自定义connect()函数。
include"../php/function_case.php";
//将$arr数组数据传递给数据库连接函数connect(),以实现数据连接代码$link;
$link=connetct($arr);

if (!$link) 
	{
		exit('error('.mysqli_connect_errno.'):'.mysqli_connect_error);//不继续向下执行
	    //die 
	}
$sql = "select * from roles_rules where code in(select distinct ruleid from roles_juesewithrules where jueseid in(select jueseid from roles_userinjuese where userid='{$uid}'))";
 
$arr = mysqli_query($link,$sql);
foreach($arr as $v)
{
  echo "<div code='{$v[0]}' class='list'>{$v[1]}</div>";
}
 
?>
</body>
</html>

因为网络上很多没有数据库配置文件,对于新手,无法入手,顺便把PHP 数据库连接代码文件付上:

function_cas.php

<?php
	function connetct($conf=[])//将$conf[] 数组的值传递给自定义函数CONNETCT(),组成完整的数据库连接代码;
	{      
		$link_code=mysqli_connect($conf['host'],$conf['user'],$conf['pass']);  //$link 数据库连接相关取值在config.php 文件中的数据组中取出。
		$link_code or die("连接数据库失败,请检查服务器名称、用户名、密码是否有误");// 连接失败返回中止终止程序,并输出自定义“连接数据库失败”。
		mysqli_set_charset($link_code,"utf8");//设置字体集为UTF-8 防止乱码。
		//选择数据库名称
		if(mysqli_select_db($link_code,$conf["db"]))
			{			
				return $link_code;			
			}
		else{		

				die("数据库名称连接失败");		
				
			}						


	}


?>

config_case.php

<?php
    //返回一个数组。
	return[
		"host"=>"localhost",//服务器名称
		"user"=>"root",  //用户名
		"pass"=>"147071746",//密码
		"db"=>"db_tct",//数据库
		"prot"=>3306  //端口号,MYSQL默认3306
	
	
	];



?>

发现重点在这里:     

var_dump($_session["uid"]);  // 输出结果为NULL,就因为check.php 的,session 保存用了大写,这里使用的小写。
var_dump($_SESSION["uid"]);  // 输出了LISI 用户名,输出正常

总结:PHP 学习。

一、大小写敏感

    1. 变量名区分大小写

    所有变量均区分大小写,包括普通变量以及$_GET、$_POST、$_REQUEST、$_COOKIE、$_SESSION、$GLOBALS、$_SERVER、$_FILES、$_ENV等预定义变量;

     

   2. 常量名默认区分大小写,通常都写为大写

   3. php.ini配置项指令区分大小写

    如 file_uploads = 1 不能写成 File_uploads = 1

二、大小写不敏感

    1. 函数名、方法名、类名 不区分大小写,但推荐使用与定义时相同的名字

    2. 魔术常量不区分大小写,推荐大写

    包括:__LINE__、__FILE__、__DIR__、__FUNCTION__、__CLASS__、__METHOD__、__NAMESPACE__。

    3. NULL、TRUE、FALSE不区分大小写

    4.类型强制转换,不区分大小写

    包括

  • (int),(integer) – 转换成整型
  • (bool),(boolean) – 转换成布尔型
  • (float),(double),(real) – 转换成浮点型
  • (string) – 转换成字符串
  • (array) – 转换成数组
  • (object) – 转换成对象

猜你喜欢

转载自blog.csdn.net/weixin_30219751/article/details/127294035