PDO会话(无法查看会话变量)

时间:2013-06-10 16:10:30

标签: php mysql database session pdo

我正在尝试创建用户登录系统。我知道我的代码可能存在一些安全问题......但我只是在学习。我正在尝试从初始用户注册会话数据并将其显示在指定用于显示用户信息(配置文件)的页面上。我的问题是会话数据没有存储...我发送给用户数据库的数据也不存在。我使用mysqli,直到我发现一些帖子说PDO更安全。我尝试转换所有内容 - 但我不确定我是否做得对(显然不是数据没有存储)。在我改为PDO之前,一切正常。这是我的代码:

storeuser.php

<?php
session_start();

$host="localhost"; // Host name
$uname="XXXX"; // Mysql username
$password="XXX"; // Mysql password
$db_name="XXX"; // Database name
$tbl_name="XXX"; // Table name

// Connect to server and select database.
$link = new PDO("mysql:host=$host;dbname=$db_name, $uname, $password");

// Get values from form
$username=$_POST['username'];
$pw=$_POST['pw'];
$email=$_POST['email'];

//$stm = 'SELECT * FROM users WHERE username = ?';
//$stm->bind_param(1,$username);
//$stm->execute();
//$result = $link->query($stm);


$_SESSION["timeout"] = time();
$_SESSION["username"] = $_POST['username'];
$_SESSION["password"] = $_POST['pw'];
$_SESSION["loggedIn"] = true;

// Insert data into mysql
$sql = "INSERT INTO $tbl_name(username, password, email)VALUES(?,?,?)";
$stm = $link->prepare($sql);
$sql->bindParam(1, $username);
$sql->bindParam(2, $pw);
$sql->bindParam(3, $email);
$sql->execute();
$result = $stm->fetch(PDO::FETCH_ASSOC);
?>

<?php
// close connection
$link=null;
?>

注释掉的代码只是我尝试检查用户名是否已被占用的开始。我不知道为什么我的数据库变量被替换为“XXX” - 但这不是我的代码中的方式......

这是我的index.php的一部分(我省略了html):

<?php
    $handler = new MySessionHandler();
    session_set_save_handler($handler, true);
    session_start();
    // set time-out period (in seconds)
    $inactive = 600;

    // check to see if $_SESSION["timeout"] is set
    if (isset($_SESSION["timeout"])) {
        // calculate the session's "time to live"
        $sessionTTL = time() - $_SESSION["timeout"];
        if ($sessionTTL > $inactive) {
            session_destroy();
            printf("session destroyed");
        }
    }
?>

然后,最终,我需要设置用户登录(而不是用户注册) - 这是我的登录脚本:

<?php
    session_start();
    $_SESSION["timeout"] = time();
    $_SESSION["username"] = $_POST['usernamein'];
    $_SESSION["password"] = $_POST['pwin'];
    $_SESSION["loggedIn"] = true;
?>

更新

的application.js

$(document).ready(function() {
    $("#signupform").submit(function(e) {  
        e.preventDefault();
        $.post('storeuser.php', $(this).serialize(), function(){
            $("#showuser").load("templates/showuser.php");
            $("#signupform").remove();
        });
    });
});

0 个答案:

没有答案