1

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

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

例如,如果输入年龄大于18,则转到页面:a.php;否则转到 b.php

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

进一步来说,

  1. 如果我们想在当前页面进行,

我认为是action="function()",在函数内部,我们判断是去a.php还是b.php。但是编写动作和函数()的正确方法是什么?我也看到了使用 onclick="..." ,有什么区别?

  1. 如果我们想在下一页进行,

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

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

谢谢,夏娃

4

6 回答 6

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>
于 2013-08-07T14:24:22.507 回答
1

您可以使用 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");
}
于 2013-08-07T14:22:02.777 回答
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
}
于 2013-08-07T14:21:31.110 回答
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>
于 2013-08-07T14:19:42.263 回答
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>
于 2013-08-07T14:25:55.863 回答
0

您很可能希望在当前页面和目标页面中都这样做。

客户端检查

在当前页面中,您可以使用带有 jQ​​uery 之类的库的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']);

或更好的东西。

于 2013-08-07T14:38:36.883 回答