【问题标题】:Passing PHP form data into a HTML page将 PHP 表单数据传递到 HTML 页面
【发布时间】:2014-05-12 20:06:21
【问题描述】:

以下是我的登录脚本的 PHP 代码:

   <?php

session_start();
if(isset($_POST['submitted']))
{

$username = $_POST['username'];
$password = $_POST['password'];



            $connect = mysqli_connect("localhost", "root", "root", "test");
            if (mysqli_connect_errno()){
                echo mysqli_connect_error();
            } 

            $query = "SELECT * FROM members where username = '$username'";

            $result = mysqli_query($connect, $query);

        $log = mysqli_fetch_array($result);
        $dbusername=$log['username'];
        $dbpassword=$log['password'];
        //echo "<h1> ". $log['username']." ".$log['password']."</h1>";
        if($username == $dbusername && $password == $dbpassword)
        {
            $_SESSION['username'] = $dbusername;
            $_SESSION['password'] = $dbpassword;
            header("Location: Correct.html {$_POST["redirect"]}"); 
        }else
        {
            header("Location: Incorrect.html {$_POST["redirect"]}"); 
        }

} else {
    echo "boo";
}

    ?>

如您所见,如果用户输入现有的用户名和密码组合,他们将被重定向到“Correct.html”页面。问题是将信息传递到“Correct.html”页面。我希望传递 'username' 变量,以便页面显示“Welcome 'username'”消息。现在,从我的所有尝试中,我知道我需要在“Correct.html”页面上使用以下代码才能成功传递此变量:

    <?php
session_start();
if(isset($_SESSION['username'])){
    echo "Your session is running " . $_SESSION['username'];
}
?>

我还发现,要使其正常工作,我需要将页面的扩展名从 .HTML 更改为 .PHP。现在的问题是,如果我更改扩展名,我的“Correct.php”页面将不再加载,并且显示为空白屏幕。我已经尝试过在线 HTML 到 PHP 转换器(这似乎与我的代码的每一行相呼应),但这仍然不起作用。

有谁能帮我解决以下两件事之一:

  1. 为我提供在 HTML 脚本中传递 PHP 变量的解决方案(更简单,但不确定是否可行?)
  2. 正确地将我的 HTML 代码转换为 PHP(更长,但可以确保变量可以轻松传递)

请记住,我已经有一个 MySQL 数据库和表设置(您可能已经从代码中猜到了)。

【问题讨论】:

  • 当使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您可能会创建严重的SQL injection bugs从不使用带有$_POST参数的字符串插值。
  • 这里不会出错 -> "{$_POST["redirect"]}" ?
  • 你试过javascript截取值吗?这样你就不需要PHP了。这里有一个例子:stackoverflow.com/questions/10609511/…
  • @tadman 我完全不确定你的意思。请给我一个书面的例子好吗?
  • @vp_arth 我没有。目前我被重定向到我想要的页面(但是如果 {$_POST["redirect"]} 被删除,这也有效)。我应该删除它吗?

标签: php html forms mysqli


【解决方案1】:

我只是将它作为答案提供一个解释......

这是我引用的example answer。 它的作用是查看发送到浏览器的 URL,搜索“?”,这意味着传递了一个参数。然后它会抓取“?”之后的所有内容。并在“&”处拆分它以提供所有传递的参数。然后,它循环遍历找到的内容,并创建传入内容的列表。例如,“username=bob”、“thissite=spiffy”。

您可以在任何 HTML 文件中使用它来处理传入的参数。不需要像 PHP 这样的服务器端脚本。

【讨论】:

  • 感谢您的回复。真的很抱歉,我已经看过了,似乎无法确定适用于我的代码的内容。我需要什么 Javasript 来截取值?
【解决方案2】:

如果您正确设置了网络服务器,则文件名的扩展名无关紧要。如果是 Apache HTTP:AddType application/x-httpd-php .php .htm .html,或者类似的东西。

header() 需要一个完整的 URI。所以传入域名和路径以及文件名。并摆脱标头调用中的{$_POST["redirect"]} 内容(不确定您要如何处理)。

【讨论】:

  • 嗨,我以前见过这个“AddType”行,并尝试将它插入到我的代码中。抱歉,我对此不是很有经验,也不太确定我的网络服务器是否是 Apache HTTP。我怎么知道?会告诉你我使用 phpmyadmin 帮助吗?你有什么建议?
猜你喜欢
  • 2013-01-19
  • 2017-10-14
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 2013-07-17
相关资源
最近更新 更多