【问题标题】:Redirect to php page based on form input根据表单输入重定向到php页面
【发布时间】:2017-05-14 00:38:02
【问题描述】:

所以我有一个脚本,我需要根据他们的条目将用户重定向到某个 .php。他们将输入一个用户 ID,如“user_123”,后缀将使用 strpos 提取,例如“123”。所以“123”应该重定向到“123.php”等

这是我的 strpos 部分的代码:

index.php

<html>
<form action="check.php" method="post">
User_number:<br>
<input type="email" name="usernum" value="" required><br><br>
<input type="submit" value="Submit">
</form>
</html>

检查.php

<?
$data = ['usernum'];
$request = substr($data, strpos($data, "_") + 1);
//added echo just for visual purposes
echo $request;
?>
  1. 如何使用 $request 值来检查让我们说一个数组,将我重定向到 123.php?

  2. 创建一个 if/else 语句,如果表单条目中不存在“_”,则该语句将返回错误消息?

谢谢

【问题讨论】:

  • 这可能是一种危险的方法,您可能不得不重新考虑重定向用户不是基于他们的输入
  • 它更多的是用于搜索查询,因此 123.php 无论如何都会公开 - 没有敏感信息

标签: php redirect


【解决方案1】:
$page_name=$_POST['usernum'];
$pos=strpos($page_name,"-");
if($pos==true){
$request = substr($page_name,      strpos($page_name, "_") + 1);
//added echo just for visual purposes
header(Location:$request.".php");
}
else{ echo "your user number must be in this form user - user number ";
}
?>

【讨论】:

  • ..还有这个! - 只需添加引号 非常感谢!
【解决方案2】:

试试:

<?php

if (isset($_POST['usernum'])) {
   $data = $_POST['usernum'];
} else {
   $data = "";
}

$pos = strpos($data, "_");

if (!$pos) {
    echo "No _ found!";
} else {
    $request = substr($data, ++$pos);
    $valid_ids = array("123", "456", "789");

    if (!is_numeric($request) || !in_array($request, $valid_ids)) {
        echo "Invalid user ID!";
    } else {
        header("Location: http://www.yourdomain.com/" + $request + ".php");
    }

}

?>

【讨论】:

  • 它如何处理一组输入,例如 123.php、456.php、789.php 等?并且 $data 必须是 $_POST 因为它链接到 index.php 中的表单
猜你喜欢
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 2015-02-08
相关资源
最近更新 更多