1

ユーザーログインシステムを作成しようとしています。私のコードにはおそらくいくつかのセキュリティ上の問題があることを知っています...しかし、私はただ学んでいます。最初のユーザー サインアップからセッション データを取得し、ユーザー情報 (プロファイル) を表示するために指定されたページに表示しようとしています。私の問題は、セッション データが保存されていないことです...ユーザー データベースに送信しているデータも保存されていません。PDOの方が安全であるという投稿を見つけるまで、私はmysqliを使用していました。すべてを変換しようとしましたが、正しく行っているかどうかはわかりません (明らかに、データが保存されていない場合はそうではありません)。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;
?>

アップデート

アプリケーション.js

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

0 に答える 0