PHP POST和一个函数,我做错了什么

PHP POST和一个函数,我做错了什么,php,function,post,Php,Function,Post,我不确定是POST不工作还是功能不工作。 下面是一页的代码: <?php require_once("includes/Functions.php"); ?> <?php include("includes/front.php"); ?> <div id="register"> <form action="Includes/Functions.php" method="post" name="createUser"> Username: <

我不确定是POST不工作还是功能不工作。 下面是一页的代码:

<?php require_once("includes/Functions.php"); ?>
<?php include("includes/front.php"); ?>
<div id="register"> 
<form action="Includes/Functions.php" method="post" name="createUser"> 
Username: <input type="text" name="user" maxlength="16"/><br />
Password: <input type="password" name="pass" maxlength="30"/><br />
Repeat password: <input type="password"/><br />
E-mail: <input type="email" name="mail"/><br />             
<input type="submit" value="Next" />            
</form>
<a href="/login.php">Log in</a>  
</div>
</body>
</html>
<?php include("includes/footer.php"); ?>

用户名:
密码:
重复密码:
电子邮件:
下面是functions.php的开头:

<?php require_once("connect.php"); ?>
<?php
if(isset($_POST["createUser"]) && isset($_POST["user"], $_POST["pass"],    $_POST["mail"])){
call_user_func_array("createUser", array($_POST("user"), $_POST("pass"), $_POST("mail")));
} 


这两行是否指向同一个文件?我想是这样,但情况并不正确。我从这里开始。我会保持一个标准的命名约定,因为有些文件是大写的,有些不是

我还建议在散列之前对密码加盐

对于您的SQL,我建议使用,因为您的代码现在受到SQL注入攻击,可能会泄露未加密的密码。


call_user_func_array("createUser", array($_POST("user"), $_POST("pass"), $_POST("mail")));
这两行是否指向同一个文件?我想是这样,但情况并不正确。我从这里开始。我会保持一个标准的命名约定,因为有些文件是大写的,有些不是

我还建议在散列之前对密码加盐

对于您的SQL,我建议使用,因为您的代码现在受到SQL注入攻击,可能会泄露未加密的密码

call_user_func_array("createUser", array($_POST("user"), $_POST("pass"), $_POST("mail")));
应该是

call_user_func_array("createUser", array($_POST["user"], $_POST["pass"], $_POST["mail"]));

你不必:

$username = $_POST["user"];
$password = $_POST["pass"];
$email = $_POST["mail"];
createUser
函数中

应该是

call_user_func_array("createUser", array($_POST["user"], $_POST["pass"], $_POST["mail"]));

你不必:

$username = $_POST["user"];
$password = $_POST["pass"];
$email = $_POST["mail"];

createUser
函数中。

functions.php
中,您正在检查
是否(isset($\u POST[“createUser”])…

表单
name
属性,因此此if语句将始终失败


您需要使用submit按钮的name/value属性或隐藏的输入字段来满足
functions.php中的此条件

您正在检查
if(isset($\u POST[“createUser”])…

表单
name
属性,因此此if语句将始终失败


您需要使用submit按钮的name/value属性或隐藏的输入字段来满足此条件

请首先启用
错误报告
$connection
在哪里?使用
调用用户函数数组()
此处?请学习如何使用参数化查询,而不是像代码那样让自己对SQL注入敞开大门。给出了示例。仅供参考。如果您在一个组中有多个PHP行,如上面HTML块的前两行,则不必在每一行上打开和关闭PHP。如果您在第一行上打开并关闭PHP第二步你就没事了。将
ini\u集('display\u errors',true)
error\u reporting(E\u ALL)
添加到代码顶部,然后再试一次。请先启用
error reporting
$connection
在哪里?使用
调用用户函数数组()
此处?请学习如何使用参数化查询,而不是像代码那样让自己对SQL注入敞开大门。给出了示例。仅供参考。如果您在一个组中有多个PHP行,如上面HTML块的前两行,则不必在每一行上打开和关闭PHP。如果您在第一行上打开并关闭PHP第二步你就没事了。添加
ini\u集('display\u errors',true)
error\u报告(E\u ALL)
在代码顶部,然后再试一次。我试图保持正确命名,但这一次没有。感谢salting reccomendation。我试图保持正确命名,但这一次没有。感谢salting reccomendation。name属性在发布期间提交,因为它在我使用的其他文档中有效。name属性在发布期间提交因为它适用于我使用的其他文档。您不能使用$\u POST(“用户”)…$\u POST不是一个函数,它是一个数组。我还帮助您清理代码。@user1642320我认为codea试图指出您在使用方括号时使用了括号,尽管有关清理代码的评论纯粹是主观的。@MrSlayer感谢您的澄清。您不能使用$\u POST(“用户”)…$\u POST不是一个函数,它是一个数组。我还帮助您清理代码。@user1642320我想codea是想指出您在使用方括号时使用了括号,尽管关于清理代码的评论纯粹是主观的。@MrSlayer感谢您的澄清。