我想创建一个HTML(或php可能?)页面,根据用户提供给下拉框的输入参数构建一个新的HTML页面。我只是不知道你是如何处理输入的。
这是我的HTML:
<html>
<body>
<input type="number" min="1">
</body>
</html>
是的我知道这不是完整的HTML页面,但我只想关注<input>
标签。我知道你可能必须将它设置为等于PHP变量吗?
我希望它生成一个不同的HTML页面,如下所示:
<html>
<body>
<p>You have chosen: $input </p>
</body>
</html>
我可能会问这一切都错了,但我希望它能说明我正在寻找的东西。我需要知道如何处理用户输入。我找不到讨论这个的线程。我是否需要生成新的HTML文件?或者只是覆盖当前的一个,并可能有一个重置按钮?我很困惑。
答案 0 :(得分:5)
在简单的情况下,您将有两个页面:表单和结果页面。您可以使用以下两种方法之一将表单页面中的数据发送到结果页面:GET或POST。
GET表示您发送的数据会被放入页面网址中。这很有用,因为您可以链接到结果页面的特定版本,但有潜在危险,因为您不希望将敏感数据放入网址栏。
POST表示数据在后台随HTTP请求一起发送。这对于像密码这样的东西更可取。
GET和POST数据几乎可以通过任何服务器端语言读取,并用于即时生成HTML。以下示例使用PHP。
表单页面不一定需要任何服务器端代码,只需要基本的HTML。这是一个简单的例子:
<!DOCTYPE html>
<html>
<form method="GET" action="my_result.php">
<input type="text" name="my_value">
<input type="submit">
</form>
</html>
您的第二页(结果页面)应该包含您在表单action
属性中指定的名称。这是需要服务器端代码的页面。这是一个例子my_result.php
:
<!DOCTYPE html>
<html>
<p><?php echo $_GET['my_value']; ?></p>
</html>
显然,只要输入元素的my_value
属性与PHP中的键匹配,name
可以而且应该被您想要调用数据的任何内容替换。
此示例使用GET方法。您可以通过更改表单的method
属性并使用$_POST
而不是$_GET
来使用POST(如果您使用的是PHP)。
如果您使用$_REQUEST
而非$_GET
或$_POST
,则会找到通过GET 或 POST传递的值。这通常不如明确说明您的价值如何传递安全。
附录:出于安全考虑,某些服务器被配置为禁止您直接使用php超级全局的值,例如$_GET
,$_POST
和$_REQUEST
。这是因为在应用程序中使用之前,您确实总是清理用户输入。所需的消毒类型取决于输入的类型及其使用方式,并且远远超出了本问题的范围。为此,php提供了filter_input
函数。
清理过滤器是filter_input
函数的可选参数,因此,如果确实想要使用未过滤的数据,则可以省略它(但要知道这很危险) 。在这种情况下,您可以使用$_GET['my_value']
替换上述代码中的filter_input(INPUT_GET, 'my_value')
的所有实例。
答案 1 :(得分:3)
这不是教程,但我引导您了解一些重点:
答案 2 :(得分:1)
要处理用户输入,您必须使用forms
<form action="action_page.php">
<input type="number" min="1 name="my-number">
<input type="submit" value="Submit">
</form>
在用户设置号码并按下提交按钮后,您将在 $ _ REQUEST ['my-number']
中获取action_page.php中的值答案 3 :(得分:1)
尝试以下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
if ($_POST) {
echo "<h3>You have selected ".$_POST['number']."</h3>";
} else {
echo '
<form method="post" action="">
<select name="number" id="number">
<option value="1" >1</option>
<option value="2" >2</option>
<option value="3" >3</option>
</select>
<input type="submit" value="submit">
</form>
';
}
?>
</body>
</html>