PHP中用session存入对象的解决方案

以前在使用java开发中,通常都是在session里面存放的对象。在使用php开发中,也打算在session中存入对象,确实能把对象放进去,也能把整个对象输出,但就是取不出对象里面的属性。

通过print_r($obj) 查看,输出的是下面这串:

 

__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => User [id:private] => 1 [username:private] => todaydiy [password:private] => 112233 [nickname:private] => huangwei [userid:private] => 1001 [logintimes:private] => 66 [lastlogintime:private] => 2010-04-20 23:30:23 [addtime:private] => 2010-04-19 23:49:12 )

 

可以看到,和普通的对象还是有区别的。

php手册中有一篇讲的是 “序列化对象 - 会话中的对象”,原话:

php session中存入对象解决方案 - todaydiy - 待飞的热气球

 

所以可以这样:

      写入session时

      $_session["user"] = serialize(目标对象);

     

      读取session时

      $obj = unserialize($_session["user"] );

     

      print_r($obj);

     

      User Object ( [id:private] => 1 [username:private] => todaydiy [password:private] => 112233 [nickname:private] => huangwei [userid:private] => 1001 [logintimes:private] => 71 [lastlogintime:private] => 2010-04-20 23:44:50 [addtime:private] => 2010-04-19 23:49:12 )

     

      现在这个对象就是一个名副其实的对象了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以回答你的问题。以下是一个示例 PHP 代码,可用于使用 session 实现自动登录功能: ```php <?php session_start(); // 如果用户已登录,直接跳到首页 if(isset($_SESSION["username"])) { header("Location: index.php"); } // 如果用户提交了登录表单,验证用户身份并设置 session if(isset($_POST["username"]) && isset($_POST["password"])) { $username = $_POST["username"]; $password = $_POST["password"]; // 验证用户身份,例如从数据库中查询用户名和密码是否匹配 if(/* 验证成功 */) { $_SESSION["username"] = $username; header("Location: index.php"); } else { echo "用户名或密码错误"; } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>自动登录示例</title> </head> <body> <h1>自动登录示例</h1> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <label>用户名:</label> <input type="text" name="username"><br> <label>密码:</label> <input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html> ``` 此代码会检查用户是否已登录(即 `$_SESSION["username"]` 是否已设置),如果已登录则直接跳到首页;否则会显示登录表单。如果用户提交了登录表单,则验证用户身份并设置 session。 注意,此示例代码未考虑安全性和持久化。在实际应用中,需要考虑使用 HTTPS 加密协议,设置 session 过期时间和 Cookie,以及对用户输入和数据库查询结果进行合法性检查等安全措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值