Abu*_*e10 1 php mysql database forms
我正在构建一个测验Web应用程序,它是从我服务器上的数据库动态生成的.我已经实现了所有的功能,唯一缺少的是让它能够提供多个测验.现在我必须手动写入$quiz_id = 1, $quiz_title = "geography"quiz.php脚本中的代码才能正确运行.如果我可以为这两个变量生成值,我的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');
?>
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
使用$_GET.
首先,你想要改变这一行
echo '<a href="quiz.php">' . $row['title'] . '</a><br />';
Run Code Online (Sandbox Code Playgroud)
对于这样的事情:
echo '<a href="quiz.php?id='.$row['id'].'">' . $row['title'] . '</a><br />';
Run Code Online (Sandbox Code Playgroud)
然后quiz.php,使用$_GET['id']主要密钥检索相应的测验,以在数据库中查找.
你应该在那里存储你的测验标题(在数据库中).
$_GET这里是合适的,因为您只是使用ID来确定要显示的测验.这里没有必要保密.$_POST当您提交改变数据库的表单数据时,您将使用.$_SESSION对于存储基本登录信息以及在会话生命周期中必须在多个页面中保持不变的其他内容(例如向导表单)非常有用.