首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向PHP提交表单

问向PHP提交表单
EN

Stack Overflow用户
提问于 2014-09-05 14:58:34
回答 3查看 294关注 0票数 0

我试图将HTML表单中的数据提交到PHP中,以便保存到mysql数据库中。我以前做过这件事,但由于某种原因,我一定是遗漏了什么。

这是注册页面

代码语言:javascript
复制
<form action="reg.php" method="POST">
        <table >
            <tr>
                <td>Email :</td>
                <td><input name="Email" type="text" /></td>
            </tr>
            <tr>
                <td>Password :</td>
                <td><input name="Password" type="password" /></td>
            </tr>
            <tr>
                <td> </td>
                <td><input type="submit" name="submit" value="Submit"> </td>
            </tr>


        </table>
    </form>

这是reg.php

代码语言:javascript
复制
<?php

include_once("db.php");

$SQL = "INSERT INTO  users  (Email, Password  ) VALUES ('".$_GET["Email"]."','". $_GET['Password'] ."' )";     

mysql_query($SQL);
error_reporting(E_ALL);
?>

这是db.php

代码语言:javascript
复制
<?php

$MyUsername = "root";   
$MyPassword = "";   
$MyHostname = "localhost";      

$dbh = mysql_pconnect($MyHostname , $MyUsername, $MyPassword);
$selected = mysql_select_db("dbName",$dbh);
?>

如果我跑了

localhost/reg.php?Email=email@gmail.com&Password=123456

它确实有效,并且这些值显示在数据库中,我必须在注册页面中遗漏一些内容。

这可能是一个愚蠢的错误,因为我是新的PHP。

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-05 15:01:47

您需要使用的是$_POST而不是$_GET

代码语言:javascript
复制
.$_GET["Email"]."','". $_GET['Password'] ."' )";     

应该是

代码语言:javascript
复制
.$_POST["Email"]."','". $_POST['Password'] ."' )";

输入URL时,这是一个GET请求,这就是它工作的原因。您确实应该发布一个表单,因为GET将传递查询字符串中的变量,并且是可见的。密码字段在传输时仍然是纯文本。

此外,正如前面提到的,您正在使用不推荐的方法与数据库对话,并且您很容易使用SQL注入。看看PDO http://php.net/manual/en/book.pdo.php

with prepared statements,或PDO with prepared statements

还可以考虑使用CRYPT或PHP5.5的password_hash()函数来存储密码。

对于PHP < 5.5,使用password_hash() compatibility pack。

用纯文本存储似乎要做的事情是不安全的。

票数 2
EN

Stack Overflow用户

发布于 2014-09-05 15:02:21

你在表单方法上犯了一个错误,更改

代码语言:javascript
复制
<form action="reg.php" method="POST">

至

代码语言:javascript
复制
<form action="reg.php" method="GET">

如果要继续使用POST方法,请使用

代码语言:javascript
复制
$SQL = "INSERT INTO  users  (Email, Password  ) VALUES ('".$_POST["Email"]."','". $_POST['Password'] ."' )";
票数 1
EN

Stack Overflow用户

发布于 2014-09-05 15:03:14

调试代码并检查将在$_POST中reg.php中获得数据的错误。print_r($_POST)在您的reg.php文件中,您将得到数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25688758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档