1

POSTが機能していないのか、機能が機能していないのかわかりません。したがって、1ページのコードは次のとおりです。

<?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")));
} 

トラブルシューティングのechoメソッドを使用すると、echoはコードのどこでも機能しているが、必要な関数では機能していないことがわかります。

関数は次のとおりです。

function createUser ($username, $password, $email){
//Get from form
$username = $_POST["user"];
$password = $_POST["pass"];
$email = $_POST["mail"];
$hashedPassword = sha1($password);
//Submit to database
//make query
$query = ("INSERT INTO users ( username , email , hashPass ) VALUES ( '$username' ,  '$email' , '$hashedPassword')");
//use query
if (mysql_query($query, $connection)) {
//userMade.php
header("Location: ../userMade.php");
exit;
} else {
echo "<p>I suck!</p>";
echo "<p>".mysql_error()."</p>";
} 
}

PHPまたはMySQLエラーは報告されていません。空白のページしか表示されません。

4

3 に答える 3

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

する必要があります

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

また

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

そして、あなたはする必要はありません:

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

機能してcreateUserいる。

于 2012-12-17T17:25:04.567 に答える
0
<?php require_once("includes/Functions.php"); ?>
<form action="Includes/Functions.php" method="post" name="createUser"> 

これらの2行は同じファイルを指していますか?私はそう思いますが、ケースは正しくありません。ここから始めます。一部のファイルは大文字であり、一部はそうでないため、標準の命名規則を維持します。

また、ハッシュする前にパスワードをソルトすることをお勧めします。

SQLには、 PDOを使用することをお勧めします。これは、現在、コードがSQLインジェクション攻撃を受けており、無塩のパスワードが明らかになる可能性があるためです。

于 2012-12-17T17:14:24.223 に答える
0

あなたはfunctions.phpチェックしていますif(isset($_POST["createUser"])...

フォームname属性は投稿中に送信されないため、このifステートメントは常に失敗します。

この条件を満たすには、送信ボタンの名前/値属性、または非表示の入力フィールドを使用する必要があります

于 2012-12-17T17:34:19.057 に答える