【发布时间】:2014-09-05 14:58:34
【问题描述】:
我正在尝试将 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 新手,这可能是一个愚蠢的错误。
提前致谢
【问题讨论】:
-
试试
INSERT INTO users (`Email`, `Password` ) -
请PLEASE停止使用
mysql_*,它是不安全、陈旧、有缺陷、未维护且(因此)弃用延期。学习改用mysqli_*或PDO。并使用准备好的语句。这段代码和它得到的一样危险(谷歌注入攻击)。另外:不要使用mysql_pconnect。持久的连接会(如果你还在学习)会咬你 -
无论如何你需要做一个发布请求,转义值比如`VALUES ('".mysql_real_escape_string($_POST["Email"])."','"`
-
您正在使用 POST 方法和
$_GET["Email"]等 = 不匹配。另外,您对 SQL 注入非常开放,而且方式不止一种。我希望这不是一个实时站点,因为不幸的是,您将被黑客入侵。这只是时间问题,真的。 -
@Kris.Mitchell 不,你不知道。键由输入元素的名称值生成