我试图将HTML表单中的数据提交到PHP中,以便保存到mysql数据库中。我以前做过这件事,但由于某种原因,我一定是遗漏了什么。
这是注册页面
<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
<?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
<?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。
提前感谢
发布于 2014-09-05 15:01:47
您需要使用的是$_POST而不是$_GET
.$_GET["Email"]."','". $_GET['Password'] ."' )"; 应该是
.$_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。
用纯文本存储似乎要做的事情是不安全的。
发布于 2014-09-05 15:02:21
你在表单方法上犯了一个错误,更改
<form action="reg.php" method="POST">至
<form action="reg.php" method="GET">如果要继续使用POST方法,请使用
$SQL = "INSERT INTO users (Email, Password ) VALUES ('".$_POST["Email"]."','". $_POST['Password'] ."' )";发布于 2014-09-05 15:03:14
调试代码并检查将在$_POST中reg.php中获得数据的错误。print_r($_POST)在您的reg.php文件中,您将得到数据
https://stackoverflow.com/questions/25688758
复制相似问题