我想知道在php网页上,比如
<form method = "post" action = ?>
Age: <input type = "text" name="age">
Submit: <input type="submit">
</form>
例如,如果输入年龄大于18,则转到页面:a.php;否则转到b.php
我们如何在当前页面中实现这一目标,还是在下一个转发页面中实现?
更具体地说,
我认为是action =“function()”,在函数内部,我们判断是去了a.php还是b.php。但是编写动作和函数()的正确方法是什么?我看到使用onclick =“......”,有什么区别?
我们可以编写action="c.php"
并在c.php页面中进行判断。如果是这样,如何在c.php页面中执行此操作?
谢谢, 伊芙
答案 0 :(得分:1)
始终提交到同一页面的最佳方式。
<form method = "post" action = 'c.php'>
Age: <input type = "text" name="age">
Submit: <input type="submit">
</form>
在c.php中
$age = $_POST['age'];
if ($age > 18)
{
//do something
} else {
//do something else
}
答案 1 :(得分:1)
您可以使用jQuery更改action属性,如:
$( formSelector ).onsubmit(function() {
if (parseInt($( inputSelector )).val() > 18) {
$( formSelector ).attr('action', 'over18.php');
} else {
$( formSelector ).attr('action', 'under18.php');
}
}
但最好这样做:
form action="switchValue.php"
在那个文件中..
if ((int)$_POST['age'] > 18) {
include("over18.php");
} else {
include("under18.php");
}
答案 2 :(得分:1)
这应该是你要找的。 p>
Page b.php
<?
if ($_GET['age'] > 18)
{
//do some thing
} else {
//do some thing
}
?>
<form action="b.php">
Age: <input type = "text" name="age">
Submit: <input type="submit">
</form>
答案 3 :(得分:0)
<?
if ($_GET['age'] > 18)
{
$page = 'a.php';
} else {
$page = 'b.php';
}
include $page;
?>
<form>
Age: <input type = "text" name="age">
Submit: <input type="submit">
</form>
答案 4 :(得分:0)
将action
属性设为空,将表单提交给自己:
<?php
if(isset($_POST['formSubmit'])) { //if form was submitted
$age = $_POST['age'];
if ($age > 18)
{
header('Location: a.php');
} else {
header('Location: b.php');
}
}
?>
<form method = "post" action"">
Age: <input type = "text" name="age">
Submit: <input type="submit" name="formSubmit">
</form>
答案 5 :(得分:0)
您最有可能想要在当前页面和目标页面中执行此操作。
客户端检查
在当前页面中,您可以使用带有jQuery等库的javascript。在提交输入中添加onclick事件,调用如下函数:
<script type="text/javascript">
$("input[type=submit]").click(function(event) {
event.preventDefault(); // avoid normal action, actually not needed but useful sometimes
if (parseInt($('input[type=text]').val()) < 18)
$('form').attr('action', 'b.php');
else $('form').attr('action', 'a.php');
$('form').submit(); // due to the previous event.preventDefault()
});
</script>
这应该可以解决问题。我建议你给你的输入提供id并按顺序更改上面的jQuery选择器。
服务器端检查
无论如何,人们可以禁用javascript或手动修改,因此您可以添加一个检查甚至服务器端。例如,在a.php中,您可以添加:
if ((int)$_REQUEST['age'] < 18)
header('Location: b.php?age='.$_REQUEST['age']);
或更好的。