2012-08-16 62 views
1

重定向到另一个网页我想创建一个用户可以输入数字的文本框,单击一个按钮并使用基于PHP的重定向到另一个网页在用户输入的号码上。我不知道为什么这不起作用。您可以将以下代码保存在PHP文件中。如果您有任何想法,请告诉我。如果您有另一种使用javascript,jQuery或其他语言进行重定向的方式,请告诉我。非常感谢。祝你今天愉快。五用户在文本框中输入一个数字,并根据输入的数字使用PHP

<?php 
$textboxdata = $_POST['textboxdata']; 

if (isset($_POST['$textboxdata'])) { 
    switch ($textboxdata) 
    { 
    case 1: 
     header("Location: one.php"); 
     break; 
    case 2: 
     header("Location: two.php"); 
     break; 
    case 5: 
     header("Location: five.php"); 
     break; 
    default: 
     echo "Enter a number please."; 
    } 
} 
?> 

</head> 
<body> 

<FORM NAME ="form" METHOD ="post" ACTION = ""> 
<INPUT TYPE = "TEXT" VALUE ="username" METHOD ="post" name="textboxdata" > 
<INPUT TYPE = "Submit" Name = "submit" VALUE = "Login"> 

</FORM> 
</body> 
</html> 
+0

有什么理由我们不能只是高插孔形式提交,并使用了window.location和JavaScript中使用同一个switch语句?我不明白为什么PHP需要处理这个问题。 – Ohgodwhy 2012-08-16 14:49:49

回答

5

这有一个美元符号,并不会计算为true:

if (isset($_POST['$textboxdata'])) { 

它应该是:

if (isset($_POST['textboxdata'])) { 

您也可能想为一个整数值$_POST数据,请修改:

$textboxdata = $_POST['textboxdata']; 

要这样:

$textboxdata = intval($_POST['textboxdata']); 

因为要记住,用户可以键入任何装进盒子,不只是数字。您可能会希望在道路上寻找更多的输入卫生设施。

最后,你想exit()所有这些header()调用(和Location值应该是一个完整的URL,而不是一个相对的)。你想要exit()的原因是你想让脚本在那里停止处理。

header("Location: one.php"); 
exit(); 
+0

如果我们这样做是彻底的,我相信在调用'header()'之前确保他没有任何输出也是一个好主意。 – 2012-08-16 14:52:23

+0

看来她有处理非数字输入的情况。 – Kermit 2012-08-16 14:55:29

+0

好的。至于卫生设施,“预设”案件应该处理它。没有真正的需要投入/转换为整数或担心无效输入在这里,但一般 - 绝对。 – 2012-08-16 14:58:01

2

我怀疑这是问题:

if (isset($_POST['$textboxdata'])) { 

应该是:

if (isset($_POST['textboxdata'])) { 
+0

另外,@Veronica应该在*赋给'$ textboxdata'之前测试'$ _POST ['textboxdata']'是否被设置*。 – Matt 2012-08-16 14:50:52

+0

非常感谢。 :) – Veronica 2012-08-16 18:25:16

2

好看到你分配$_POST['textboxdata'];$textboxdata我会让

$textboxdata = $_POST['textboxdata']; 

if (isset($textboxdata)) { 
    switch ($textboxdata) 

如果$textboxdata未通过初始分配设置,则它不会触及switch语句。

1

如果你有一个使用JavaScript重定向等另一种方式是,jQuery, 或其他语言,请让我知道。

jQuery的解决方案:

<input type="text" value="username" id="inpt" /> 
<input type="button" value="login" id="btn" /> 

<script type="text/javascript"> 
    $(function() { 
     $("#btn").on('click', function() { 
      var value = $("#inpt").val(); 
      if (value.length) { 
       switch (parseInt(value, 10)) { 
        case 1: 
         document.location.href = "one.php"; 
         break; 
        case 2: 
         document.location.href = "two.php"; 
         break; 
        case 5: 
         document.location.href = "five.php"; 
         break; 
        default: 
         alert("Enter a number please."); 
       } 
      } 
     }); 
    }); 
</script> 
+0

@WesleyMurch - 补充说,避免downvotes的答案? – adeneo 2012-08-16 15:01:16

+0

非常感谢。 :) – Veronica 2012-08-16 18:25:55

相关问题