【问题标题】:Redirect based on first number input根据第一个数字输入重定向
【发布时间】:2016-01-24 02:03:07
【问题描述】:

如何根据输入的第一个数字重定向到 php 中的特定 url?

如果表单输入的第一个数字是1,则重定向到www.mysite.com/page1,如果同一个表单输入的第一个数字是2,则重定向到www.mysite.com/page2

输入字段可以有多个数字,但我想仅根据第一个数字进行重定向。

我试过了,还是不行:

if ($number != '2') {
    header("Location: http://example.com");
}

【问题讨论】:

  • header("Location: /page".$number);,其中$number 是您从输入中得到的那个。请注意,标头必须在任何类型的输出到浏览器之前发送,请参阅this post
  • 更好地展示您的表单内容。你从哪里得到'$number'?
  • 除了末尾的数字之外,URL 是否始终相同?或者每个不同号码的网址是否完全不同?

标签: php forms redirect


【解决方案1】:

试试这个:

<?php

$pages = [
    1 => 'http://example.com/some_page.html',
    2 => 'http://example.com/some_page_other.html',
    //...
    9 => 'http://example.com/differentpage.html',
];

if (!empty($_GET['number']))
{
    $firstNumber = (int) $_GET['number'][0]
}

if (isset($firstNumber, $pages[$number]))
{
    header('Location: ' . $pages[$number]);
}
else
{
    // We don't have a page for this number, or we don't have a number input.
}

这允许您为每个号码使用完全不同的 URL。如果它始终是相同的 URL,但最后的数字不同,您可以这样做:

<?php

$baseUrl = 'www.example.com/page';

if (!empty($_GET['number']))
{
    $firstNumber = (int) $_GET['number'][0]
}

if (isset($firstNumber))
{
    header('Location: ' . $baseUrl . $number);
}
else
{
    // We don't have a number from the input.
}

【讨论】:

    【解决方案2】:

    不要忘记exit(),否则它会继续执行当前脚本

    if ($number != '2') {
        header("Location: http://example.com");
        exit();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多