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

PHP根据变量值将表单提交到不同的页面,php,forms,Php,Forms,我想知道php网页,比如 <form method = "post" action = ?> Age: <input type = "text" name="age"> Submit: <input type="submit"> </form> 年龄: 提交: 例如,如果输入年龄大于18岁,则转到页面:a.php;else goto b.php 我们如何在当前页面或在下一转发页面实现这一点 更具体地说 如果我们想在当前页面中执行此

我想知道php网页,比如

<form method = "post" action = ?>
   Age: <input type = "text" name="age">
   Submit: <input type="submit">
</form>

年龄:
提交:
例如,如果输入年龄大于18岁,则转到页面:a.php;else goto b.php

我们如何在当前页面或在下一转发页面实现这一点

更具体地说

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

  • 如果我们想在下一页做这件事
  • 我们可以编写
    action=“c.php”
    并在c.php页面中进行判断。如果是这样,如何在c.php页面中做到这一点

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

    谢谢, Eve

    
    年龄:
    提交:
    
    始终提交到同一页面的最佳方式

    <form method = "post" action = 'c.php'>
       Age: <input type = "text" name="age">
       Submit: <input type="submit">
    </form>
    

    您可以使用jQuery更改操作属性,如下所示:

    $( 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");
    }
    

    这应该是你要找的

    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>
    
    Page b.php
    年龄:
    提交:
    
    操作
    属性留空,将表单提交给自己:

    <?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>
    
    
    年龄:
    提交:
    
    您很可能希望在当前页面和目标页面中执行此操作

    客户端检查

    在当前页面中,可以将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>
    
    
    $(“输入[type=submit]”。单击(函数(事件){
    event.preventDefault();//避免正常操作,实际上不需要,但有时很有用
    if(parseInt($('input[type=text]').val())<18)
    $('form').attr('action','b.php');
    else$('form').attr('action','a.php');
    $('form').submit();//由于上一个事件。preventDefault()
    });
    
    这应该能奏效。我建议您为输入提供ID,并相应地更改上述jQuery选择器

    服务器端检查

    无论如何,人们可以禁用或手动修改javascript,这样您甚至可以在服务器端添加检查。例如,在a.php中,您可以添加:

    if ((int)$_REQUEST['age'] < 18)
    header('Location: b.php?age='.$_REQUEST['age']);
    
    if((int)$\u请求['age']<18)
    标题('Location:b.php?age='.$\u请求['age']);
    

    或者更好。

    转到同一页,并根据年龄值进行处理有什么问题吗?建议您在第二页上检查情况,然后执行所需的任何操作。他将如何获得年龄,提交前?您在哪里将用户重定向到页面a或b@amalmurali如果没有操作属性,则表单将发布到自身。HTML需要操作属性才能有效。然而,它可以是空的,所以表单将发布到它自己。另外,
    但是服务器会给出一个错误:注意:未定义索引:age@orangepill答案对您有帮助吗?
    
    <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>
    
    if ((int)$_REQUEST['age'] < 18)
    header('Location: b.php?age='.$_REQUEST['age']);