【发布时间】:2011-12-05 18:10:39
【问题描述】:
我正在构建一个从我服务器上的数据库动态生成的测验 Web 应用程序。我几乎实现了所有功能,唯一缺少的部分是使其能够提供多个测验。现在我必须在 quiz.php 脚本中手动写入代码$quiz_id = 1, $quiz_title = "geography" 才能正确运行。如果我可以为这两个变量生成值,我的 quiz.php 将适用于多个测验主题。
所以,这就是我的问题:我希望用户能够从测验主题列表中进行选择(在页面 quizlist.php 上),单击他们想要参加的测验的链接,然后将他们带到带有测验问题/选择的页面(在页面 quiz.php 上)。此外,我想将 quizlist.php 中的一些值发送到与用户单击的特定链接相关联的 quiz.php。我想将 quiz_id 和 quiz_title 发送到页面 quiz.php 以提出正确的问题集。
我相信有一种方法可以使用 $_GET 或 $_POST,以及使用 $_SESSION。 我的问题是哪种方式更好?我该怎么做?我听说 $_SESSION 更安全,但我不确定我是否真的担心这些数据(quiz_id 和 quiz_title)的安全性。
目前,这里是 quizlist.php 的代码
<?php
// Start the session
require_once('startsession.php');
// Insert the page header
$page_title = 'Quiz List';
require_once('header.php');
require_once('connectvars.php');
// Make sure the user is logged in before going any further.
if (!isset($_SESSION['user_id'])) {
echo '<p class="login">Please <a href="login.php">log in</a> to access this page.</p>';
exit();
}
// Show the navigation menu
require_once('navmenu.php');
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Determine number of quizes based on title in quiz table
$query = "SELECT * FROM quiz";
$data = mysqli_query($dbc, $query);
// Loop through quiz titles and display links for each
while ($row = mysqli_fetch_array($data)) {
echo '<a href="quiz.php">' . $row['title'] . '</a><br />';
}
mysqli_close($dbc);
// Insert the page footer
require_once('footer.php');
?>
感谢您的帮助!
【问题讨论】:
-
您可以使用会话来制作“全局”变量。
-
一次解决一个问题,首先是工作的问题列表,然后是身份验证。您应该使用 GET,因为 SESSION 是针对特定用户的特定内容。 POST 用于修改服务器端的代码(这里你只从数据库加载东西)。 GET 是检索服务器端信息,这正是您的情况。
-
感谢您对 $_SESSION、$_POST 和 $_GET 的准确分类。