【问题标题】:PHP form to load specified page [closed]PHP表单加载指定页面[关闭]
【发布时间】:2015-08-24 23:04:39
【问题描述】:

试图弄清楚如何编写它,但由于某种原因无法开始弄清楚它需要如何工作。

请在下面找到我想要实现的概念。

用户输入 4 位密码(检查 MySQL)。一旦输入并提交 pin,将根据 MySQL 重定向到相关 URL。

数据库:

|--Name----|--PIN---|-----URL--------|
|--Ryan----|--1987--|-3f5df55.php----|
|--Mel-----|--1474--|-34n31ss.php----|

请帮忙,因为我完全不知道从哪里开始。

【问题讨论】:

  • 显示你试过的php代码
  • 这是一个糟糕的安全模型,因为在日志中看到 url 的人可能会访问任何人的页面...您需要重新考虑
  • "PHP 表单加载指定页面" - 您的标题与问题不匹配。

标签: php mysql forms


【解决方案1】:

注意:

  • 为了实现您的目标,我们将使用HTMLPHPmysqli_*prepared statement
  • 具有NamePINURL 列的表的名称是什么?
  • 我们可以使用header()将页面重定向到输入的PIN对应的URL。
  • 只需替换下面必要的表名、列名、主机名、用户名、密码和数据库名(记住这些是区分大小写的

首先是我们创建一个表单:

<html>
<body>
<!-- PHP CODE HERE -->

  <form action="" method="POST">
    <input type="number" name="pin" placeholder="4 DIGIT PIN" min="1000" max="9999" required>
    <input type="submit" name="submit-form">
  </form>
</body>
</html>

然后创建一个接受表单的 PHP 脚本(你可以把它放在你的表单上方):

<?php

  if(isset($_POST["submit-form"])){

    /* ESTABLISH CONNECTION FIRST TO YOUR DATABASE */
    $con = new mysqli("YourHost", "YourUsername", "YourPassword", "YourDatabase"); /* REPLACE NECESSSARY DATA */

    /* CHECK THE CONNECTION */
    if (mysqli_connect_errno()) {
      printf("Connect failed: %s\n", mysqli_connect_error());
      exit();
    }

    if($stmt = $con->prepare("SELECT URL FROM table_name WHERE PIN = ?")){ /* CHECK IF THE PREPARED STATEMENT IS TRUE */
      $stmt->bind_param("i",$_POST["pin"]); /* BIND THE PASSED ON ENTERED PIN TO THE QUERY */
      $stmt->execute(); /* EXECUTE THE QUERY */
      $check = $stmt->num_rows; /* STORE THE NUMBER OF RESULTS */
      if($check > 0){ /* CHECK IF THERE IS FOUND */
        $stmt->bind_result($url); /* BIND THE RESULT TO THIS VARIABLE */
        $stmt->fetch(); /* FETCH THE RESULT */
        header("LOCATION:".$url); /* REDIRECT THE PAGE TO THE CORRESPONDING URL */
      }
      else { /* IF NO PIN NUMBER FOUND IN THE DATABASE */
        echo "Invalid PIN Number";
      }
      $stmt->close(); /* CLOSE THE PREPARED STATEMENT */
    } /* END OF PREPARED STATEMENT */

  } /* END OF ISSET */

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多