在查询中将会话用户名提交回数据库

时间:2017-06-26 10:25:02

标签: php sql-server session

基本上我希望在我的网站上创建注释的人是"作者"那个说明。

因此,无论谁在创建笔记时登录都应该是作者。

目前在 login_form.php 中,我创建了一个会话,其中包含" 包含"在我的 general_notes.php 中。在general_notes.php中,当用户点击添加注释时,我有以下代码:

<p class="fa fa-plus hover-cursor icon-spin noSelect" data-toggle="modal" data-target="#addGeneralNote" style="font-size: 16pt;"></p>

运行:

<!-- Modal -->
<div id="addGeneralNote" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header header-notes">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Add General Note</h4>
      </div>
      <!-- Form submission data -->
      <form action="addNewNote.php" method="POST">
          <div class="modal-body">
            <p>Please enter the note you wish to create.</p>
            <textarea id="addGeneralNoteName" placeholder="Enter a note name..." name="title" maxlength="100"></textarea>
            <textarea id="addGeneralNoteText" placeholder="Enter note here..." name="content"></textarea>
            <input type="checkbox" name="pinned"> Pin Note to your homepage
          </div>
          <div class="modal-footer footer-notes">
            <button type="submit" class="btn btn-success">Create</button>
          </div>
      </form>
    </div>

  </div>
</div>

您将在表单中看到运行 addNewNote.php

<?php

if (isset($_POST['title'], $_POST['content'], $_SESSION['username'])) 
{
    $title = $_POST['title'];
    $content = $_POST['content'];
    $author = $_SESSION['username'];

    $stmt = "INSERT INTO Notes (NoteName, Note, Author, DateCreated) VALUES (?, ?, ?, GETDATE())";
    $params = array($title, $content, $author);

    $stmt = sqlsrv_query($conn, $stmt, $params);

    if ($stmt === false) 
    {
        die( print_r(sqlsrv_errors(), true));
    }

    header('location: general_notes.php');
}

else
{
    echo "No Data";

}


?>

在我添加到isset $_SESSION['username']之前,它运行正常。

目前它击中了这一部分:

else
{
    echo "No Data";

}
isset函数的

那么如何将会话用户名传递给我的 addNewNote.php 脚本?

1 个答案:

答案 0 :(得分:1)

简单的答案是您没有在session_start()中致电addNewNote.php。但我也想详细说明你上面的评论,希望能帮助未来的读者:

  

我出于某种原因推测它会从previosu页面获得会话

“上一页”完全是一个单独的HTTP请求,两者之间没有任何连接。与每个页面加载重新启动JavaScript应用程序的方式大致相同,PHP应用程序也会在每次加载页面时重新启动。

将每个单独的HTTP请求视为其自己的应用程序的单独实例。虽然这些实例可以通过外部数据存储(例如数据库或会话状态)共享数据,但应用程序本身在任何其他正在运行或以前的实例中都不会保留内存。

因此,虽然数据可能确实会话数据存储(在应用程序本身外部),但应用程序的每个实例都需要连接到该数据存储才能使用它。正如必须连接到数据库才能使用它一样,还必须调用session_start()才能使用会话。