PHP-根据变量值将表单提交到不同的页面

时间:2013-08-07 14:15:28

标签: php forms

我想知道在php网页上,比如

<form method = "post" action = ?>
   Age: <input type = "text" name="age">
   Submit: <input type="submit">
</form>
例如,如果输入年龄大于18,则转到页面:a.php;否则转到b.php

我们如何在当前页面中实现这一目标,还是在下一个转发页面中实现?

更具体地说,

  1. 如果我们想在当前页面中进行,
  2. 我认为是action =“function()”,在函数内部,我们判断是去了a.php还是b.php。但是编写动作和函数()的正确方法是什么?我看到使用onclick =“......”,有什么区别?

    1. 如果我们想在下一页中进行,
    2. 我们可以编写action="c.php"并在c.php页面中进行判断。如果是这样,如何在c.php页面中执行此操作?

      顺便说一下,哪种方式是常用的方式?

      谢谢, 伊芙

6 个答案:

答案 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)

这应该是你要找的。

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']);

或更好的。