0

さまざまな入力があるページがあり、テキストを入力して送信を押すと、入力した情報がデータベースに挿入されます...正常に動作しますが、ホームページにリダイレクトすると(ログインしたユーザーのみが利用可能) ) 私のサイトは、実際には、「それを行うにはログインする必要があります...」というメッセージとともに、インデックス ページ (誰でも利用可能) に戻ります。

もう一度ログインして、入力した内容が投稿されたかどうかを確認します。それは...私の名前で投稿されていました。これは、少なくとも私の投稿を挿入したページに私のセッションが保存されていることを示しています。

コードをチェックインして、セッション変数を渡していることを確認しましたが、正しいことをしているようです。

ユーザーがログインしていることを確認するためにホームページにあるものは次のとおりです。

<?php session_start(); ?>
<?php
    if (!isset($_SESSION['id'])){
        header("Location: index.php?message=You Must Log in to go there!");
    }
?>

insert-post.php ページのコードは次のとおりです。

<?php session_start(); ?>
<?php require_once("../includes/include_all.php"); ?>
<?php


    #myslqi connection
    $con = new mysqli(host,db_username,db_password, db_name);

    #THE POST VARIABLES
    $content = $con->real_escape_string($_POST['content']);
    $details = $con->real_escape_string(nl2br($_POST['details']));
    $user_id = $_SESSION['id'];
    $subjectArray = explode(',', $_POST['subject']);
    $bonus = $_POST['bonus'];
    #DATES
    $date = date('Y-m-d G:i:s', time());
    $date_expires = date('Y-m-d G:i:s', time() + (3600*4)); 
    #photo
    $photo_name = $_POST['photo_name'];


    #cost of this post
    $cost = $bonus+200;


    #insert the question

    $query = "INSERT INTO questions 
                (content, award, image, details, user_id, category, sub_category, date_created, date_expires, alive) 
                    VALUES ('".$content."', 
                                    '".$bonus."',
                                    '".$photo_name."',
                                    '".$details."',
                                    '".$_SESSION['id']."', 
                                    '".$subjectArray[1]."',
                                    '".$subjectArray[0]."',
                                    '".$date."',
                                    '".$date_expires."',
                                    1)
                    ";
    $insert_question = $con->query($query);

    if (!$insert_question){
        die("Could not enter the question [" .$con->error . "]");
    } else{
        header("Location: ".document_root."home.php?query=questions&message=Your question post was successful!");
    }

?>

ヘッダーは、最近の投稿を表示し、メッセージを残すクエリ = 質問でホームページに戻ります...ユーザーがログインしているという検証があるのと同じページにあります...

編集: ログイン確認用のコード:

#check for user via username/password
public function can_log_in($inputs){


   $query = "SELECT * FROM users WHERE user_name = '".$inputs['user_name']. "' AND password = '".$inputs['password']."'";
   $result = $this->con->query($query);
   if (!$result){
     die("Not performing query [" .$this->con->error);
   }
   if ($result->num_rows == 1){
    #start session
    $_SESSION['id'] = $this->get_user_id($inputs['user_name']);
    $_SESSION['user'] = $inputs['user_name'];
        return true;
    } else{
        return false;
        }
}

および get user_id 関数

#fetch user id
public function get_user_id($username){
     $query = "SELECT * FROM users WHERE user_name = '".$username."'";
     $result = $this->con->query($query);
     while ($row = $result->fetch_assoc()){
    return $row['id'];
     }
}

これらは User クラスにあります

4

0 に答える 0