PHP更改并保存不带DB的变量的值

PHP更改并保存不带DB的变量的值,php,database,variables,fwrite,Php,Database,Variables,Fwrite,我有一个论坛的小程序,可以查看一个线程,并将每个用户最后一篇文章的日期保存到MySQL数据库中。到目前为止,一切顺利,没问题。但是,如果我想更改程序查看的线程,我当然必须打开php文件并手动更改线程ID号。下面是一段代码片段,描述了现在的情况: // change this variable if you want to use another thread $thread = 452; // save last post of each user into db $result = $d

我有一个论坛的小程序,可以查看一个线程,并将每个用户最后一篇文章的日期保存到MySQL数据库中。到目前为止,一切顺利,没问题。但是,如果我想更改程序查看的线程,我当然必须打开php文件并手动更改线程ID号。下面是一段代码片段,描述了现在的情况:

// change this variable if you want to use another thread
$thread = 452;  

// save last post of each user into db
$result = $db->query("SELECT userid, MAX(posttime) AS maxpost 
                FROM bb$n_posts WHERE threadid = '$thread'
                GROUP BY userid ORDER BY userid");
我想与那些对php一无所知的用户分享我的程序,所以我想让它更加友好,并为此使用GUI。我将实现一个包含所有可用线程的选择框,用户选择一个,并通过提交id进行设置。同样,如果我只使用MySQL,这将是绝对容易的,但那将是一种浪费。我必须在我的数据库中创建一个新表,只包含这一个变量,我希望避免这种情况

有没有办法直接在文件中更改变量并保存它?比如,从这个文件中获取这个变量,用这个替换值,然后保存文件。我试着考虑使用fwrite之类的工具,我只是不知道如何从一个文件中获取一个特定的变量。

创建一个文件,例如id.php,然后只放在那里

<?php
$thread = 452;
并将此文件包含到主php文件中


然后编写一个函数,通过file_put_contents更新文件。我想你让它变得比需要的更复杂了。你可以简单地创建一个表单,带有下拉列表,它可以提交给自己并读取$POST

类似这样的东西,在你的“GUI”中:

<form action="page_name.php" method="POST">
  <select name="thread_id">
    <option value="1">Thread Name 1</option>
    <option value="2">Thread Name 2</option>
    <option value="3">Thread Name 3</option>
    <option value="4">Thread Name 4</option>
  </select>
</form>
这将允许多个用户使用该页面

编辑:完整示例

<form action="tester.php" method="POST">
  <select name="thread_id">
    <option value="1">Thread Name 1</option>
    <option value="2">Thread Name 2</option>
    <option value="3">Thread Name 3</option>
    <option value="4">Thread Name 4</option>
  </select>
  <button type="submit">Submit</button>
</form>
<?php
if (isset($_POST))
{
    // change this variable if you want to use another thread
    $thread = $_POST['thread_id'];  
    echo $thread;
    exit;
}
?>

正如指针所示,请注意SQL注入漏洞。阅读更多关于bindParam等的信息

您可以将数据作为JSON存储在文件中,然后在从文件中获取数据时解析JSON。为什么还需要将$thread变量持久化?这会在多人选择线程时造成混乱。你可能会得到其他人选择的线程。他问的正是:有没有办法直接在文件中更改变量并保存它?我同意,我只是说这是解决问题的一种糟糕的方法。在这种情况下,这不是问题所在。您总是只需要选择一个特定的线程,并且必须为每个用户显示该线程。一个线程只能由版主选择。这样就行了如果您有两个版主?您可能希望消除sql注入漏洞:-if is_numeric/is_int$\u POST['thread\u id']将大大有助于关闭该潜在漏洞,但这样它就不会记住下次选择的线程。更改线程的选项位于一个界面上,在该界面上,您还可以编辑其他选项,我不想每次更改其他内容时都重新选择线程。然后,我会说将线程id存储在用户的会话中,并在用户到达页面选择线程时从会话中检索它。这将使它“记住”设置,并解决任何多用户问题。
<form action="tester.php" method="POST">
  <select name="thread_id">
    <option value="1">Thread Name 1</option>
    <option value="2">Thread Name 2</option>
    <option value="3">Thread Name 3</option>
    <option value="4">Thread Name 4</option>
  </select>
  <button type="submit">Submit</button>
</form>
<?php
if (isset($_POST))
{
    // change this variable if you want to use another thread
    $thread = $_POST['thread_id'];  
    echo $thread;
    exit;
}
?>