PHP在没有DB的情况下更改和保存变量的值


PHP Change and save value of a variable without DB

我有一个论坛的小程序,它可以查看线程并将每个用户最后一篇文章的日期保存到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>

然后在你的PHP中,做:

// change this variable if you want to use another thread
$thread = $_POST['thread_id'];  
// 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");

这将允许多个用户使用该页面。

编辑:完整示例

<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;
}
?>

正如hynner所指出的,请注意SQL注入漏洞。在这里阅读更多关于bindParam等的信息