PHP会话为空 [英] PHP session empty

查看:95
本文介绍了PHP会话为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在PHP中做了一个简单的登录功能. 我的问题是,当浏览器访问页面 login_success.php

I made a simple login function in PHP. My problem is that there are no session attributes when the browser hits page login_success.php

在将数据存储在会话中的 checklogin.php 之后,我通过键入以下命令检查其是否包含任何数据:print_r($ _ SESSION); ,将打印2个对象.但是,当我尝试在 login_success.php 中执行相同操作时,它变成空白.

After i store data in the session in checklogin.php, i checked if it contained any data by typing : print_r($_SESSION); , this prints 2 object. However, when i try to do the same in login_success.php , it comes up empty.

我使用xampp和safari.

I use xampp and safari.

Login.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>Login</title>
</head>

<form name="form1" method="post" action="checklogin.php">
<input name="tb_username" type="text"/>
<input name="tb_password" type="password" />
<input type="submit" name="Submit" value="Login">
</form>

<body>
</body>
</html>

checklogin.php

<?php

$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="test"; // Database name 
$tbl_name="user"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$myusername=$_POST['tb_username']; 
$mypassword=$_POST['tb_password']; 

// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";

//print_r($_SESSION);

header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>

login_success.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
session_start();
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<?php print_r($_SESSION); ?>
<body>
</body>
</html>

推荐答案

根据php文档: session_start

session_start()创建会话或基于通过GET或POST请求传递或通过cookie传递的会话标识符恢复当前会话.

session_start() creates a session or resumes the current one based on a session identifier passed via a GET or POST request, or passed via a cookie.

因此,在您的checklogin.php页面顶部添加session_start().

So add session_start() to the top of your checklogin.php page.

这篇关于PHP会话为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆