我想在PHP中将查询参数从一个页面传递到另一个页面 我正在使用表单的action属性重定向,而不是使用超链接标记。
<html>
<head>
<title>Question 1</title>.
</head>
<body>
<form method="GET" action="Result.php?question=1">
<b>Question 1. What is the full form of PHP?<b> <br>
A)<input type="radio" name="q1" value="a">
Pre HyperText Processor<br>
B)<input type="radio" name="q1" value="b">
Post HylerText Processor<br>
C)<input type="radio" name="q1" value="c">
Personal HyperText Pages<br>
D)<input type="radio" name="q1" value="d">
HyperText Preprocessor<br>
<input type="submit" name="g" value="Go">
</form>
</body>
我收到以下错误:
Undefined index:question in Result.php on line 2
Result.php
<?php
$score=0;
$q=$_GET["question"];
if($q)
{
if($_GET['g']!=null)
{
switch($q)
{
case 1: $answer1='c';
if($_GET["q1"]==answer1)
++$score;
break;
default: print " try again";
}
}
}
为什么我没有获取查询参数中传递的值?
答案 0 :(得分:2)
最后,我找到了解决这个问题的方法。 事实证明,要访问使用表单的action属性传递的值,将使用$ _GET。至于其他值,应该使用$ _POST。 像这样的东西 -
<form method=POST" action="Result.php?question=1">
Result.php
$q=$_GET["question"];
...
if($_POST['g']!=null)
...
if($_POST["q1"]==$answer)
...
答案 1 :(得分:0)
你没有得到$_GET['question']
。
你回来了q1
。所以你所做的将有一个网址:
Result.php?q1=a&g=Go"
所以你必须在
设置你的Result.php$q=$_GET["q1"];
if($q)
{
switch($q)
{
case 'a': print "question 1";
break;
}
}
如果您希望自己的网址有问题,则需要这样做:
<form method="GET" action="Result.php">
<b>Question 1. What is the full form of PHP?<b> <br>
A)<input type="radio" name="question1" value="a">
Pre HyperText Processor<br>
B)<input type="radio" name="question1" value="b">
Post HylerText Processor<br>
C)<input type="radio" name="question1" value="c">
Personal HyperText Pages<br>
D)<input type="radio" name="question1" value="d">
HyperText Preprocessor<br>
<input type="submit" name="g" value="Go">
请记住,这是一个快速修复但不使用GET。使用POST insted。 还可以使用FireBug查看您如何获取或发布表单。
修改强>
使用POST会更好,否则会覆盖您的网址。 试试这个,让我知道它是不是你想要的。
<html>
<head>
<title>Question 1</title>.
</head>
<body>
<form method="POST" name="form" action="Result.php?question=1">
<b>Question 1. What is the full form of PHP?<b> <br>
A)<input type="radio" name="q1" value="a">
Pre HyperText Processor<br>
B)<input type="radio" name="q1" value="b">
Post HylerText Processor<br>
C)<input type="radio" name="q1" value="c">
Personal HyperText Pages<br>
D)<input type="radio" name="q1" value="d">
HyperText Preprocessor<br>
<input type="submit" name="g" value="Go">
</form>
</body>
Result.php
<?php
$q=$_GET["question"];
if($q)
{
$PostedValue = $_POST['q1'];
switch($PostedValue)
{
case 'a': echo "Pre HyperText Processor";
break;
case 'b': echo "Post HylerText Processor";
break;
case 'c': echo "Personal HyperText Pages";
break;
case 'd': echo "HyperText Preprocessor";
break;
}
}
?>
如果你想使用Method GET,你可以通过hiddin输入传递它: 您可以使用自己的Result.php代码。
<html>
<head>
<title>Question 1</title>.
</head>
<body>
<form method="GET" name="form" action="Result.php">
<input type="hidden" name="question" value="1">
<b>Question 1. What is the full form of PHP?<b> <br>
A)<input type="radio" name="q1" value="a">
Pre HyperText Processor<br>
B)<input type="radio" name="q1" value="b">
Post HylerText Processor<br>
C)<input type="radio" name="q1" value="c">
Personal HyperText Pages<br>
D)<input type="radio" name="q1" value="d">
HyperText Preprocessor<br>
<input type="submit" name="g" value="Go">
</form>
</body>