我真的不知道这是怎么回事,我已经把它的脑子拉了两个小时。我所要做的就是从表单中的两个字段获取信息并将其插入数据库。我知道我的脚本非常基本且非常不安全,但我只是在学习......它不会在生产网站上使用。它允许我提交数据,并输出“谢谢,你已经注册了......”,但它从不将它插入数据库。我已经仔细检查了所有连接设置等等......我很无能为力。
我的代码如下:
<?php
mysql_connect("localhost", "USERNAME", "PASSWORD") or die(mysql_error());
mysql_select_db("DATABASE_NAME") or die(mysql_error());
if (isset($_POST['submit'])) {
mysql_query("INSERT INTO members (username, password) VALUES ('".$_POST['myusername']."', '".$_POST['mypassword']."')") or die(mysql_error());
}
?>
<html>
<body>
<h1>Registered</h1>
<p>Thank you, you have registered - you may now login</a>.</p>
</body>
</html>
编辑:
这是表单代码:
<table id="mytable" cellspacing="0">
<FORM name="form1" ACTION="register.php" METHOD=get>
<tr>
<th scope="col" class="ttopl">User Name:</th>
<th scope="col" class="ttopl"><input name="myusername" type="text" size"20"></input> </th>
</tr>
<tr>
<th scope="col" class="ttopl">Password:</th>
<th scope="col" class="ttopl"><input name="mypassword" type="text" size"20"></input> </hd>
</tr>
<tr>
<th scope="col" class="ttopl"></th>
<th scope="col" class="ttopl"><input type="submit" value="Register" class="loginButton">
答案 0 :(得分:1)
我的猜测是if (isset($_POST['submit']))
没有触发,确保它是name属性而不是id。发布您的表单代码将是一个很大的帮助。
答案 1 :(得分:1)
您在表单中使用了错误的方法:
<FORM name="form1" ACTION="register.php" METHOD=get>
将其更改为:
<FORM name="form1" ACTION="register.php" METHOD="POST">
顺便说一句,我知道安全性还不是一个问题,但有些事情从一开始就做得更好,因为以后更难以改变。例如:
编辑:您还缺少html表单中的name
属性,并且您正在php文件中检查它。您需要将提交按钮更改为:
<input type="submit" name="submit" value="Register" class="loginButton">
但是在php中检查POST
的更实用的方法是使用:
if ($_SERVER['REQUEST_METHOD'] === 'POST')
答案 2 :(得分:0)
第一次关闭该查询已准备好进行注入攻击,我强烈建议您查看准备好的语句。
回到你的情况......
添加
var_dump( mysql_error() );
查询后立即它应该告诉你查询发生了什么......
答案 3 :(得分:0)
这里唯一可能出错的是“if”语句的计算结果为false。如果出现其他任何问题,您将获得SQL错误输出而不是“谢谢”页面。
首先检查'submit'是否是表单元素的实际名称,并检查它是否已设置。还要检查您是否使用POST方法提交表单。
答案 4 :(得分:0)
根据Zac的回答,您的“提交”按钮根本没有名称。因此,isset($_POST['submit'])
将始终为false,您的查询将永远不会运行。
由于您刚刚熟悉PHP,因此您可以轻松调试此类情况,即使用var_dump()
或print_r()
来检查变量。如果您查看$ _POST并看到它没有名为“submit”的密钥,您会发现您的提交测试存在缺陷。