完成了一個php/mysql登錄系統。我也製作了一個可以使用的註冊系統,但是如果電子郵件/用戶名已經註冊,或者輸入的用戶名或密碼丟失等,我需要在html中打印出一個錯誤。PHP註冊表格打印錯誤
As現在它會自動死掉並在空白頁面上打印出錯信息。
它看起來像這樣:
if(empty($_POST['password']))
{
die("Please enter a password");
}
我已經試過這樣:
$errors = array();
if(empty($_POST['password']))
{
$errors[] = 'Please enter a password';
}
,然後打印出來的HTML中。但它會忽略密碼輸入並只是註冊用戶帳戶(使用加密密碼,在phpmyadmin中)。
它看起來必須死去,但我應該怎麼做呢?
這裏是整個代碼:
<?php
require("*mysql_connection file*");
if(!empty($_POST))
{
if(empty($_POST['username']))
{
die("Please enter a username.");
}
$errors = array();
if(empty($_POST['password']))
{
$errors[] = 'Please enter your password';
}
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
die("Invalid E-Mail Address");
}
$query = "
SELECT
1
FROM users
WHERE
username = :username
";
$query_params = array(
':username' => $_POST['username']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$row = $stmt->fetch();
if($row)
{
die("This username is already in use");
}
$query = "
SELECT
1
FROM users
WHERE
email = :email
";
$query_params = array(
':email' => $_POST['email']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$row = $stmt->fetch();
if($row)
{
die("Email already registered.");
}
$query = "
INSERT INTO users (
username,
password,
salt,
email
) VALUES (
:username,
:password,
:salt,
:email
)
";
$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
$password = hash('sha256', $_POST['password'] . $salt);
for($round = 0; $round < 65536; $round++)
{
$password = hash('sha256', $password . $salt);
}
$query_params = array(
':username' => $_POST['username'],
':password' => $password,
':salt' => $salt,
':email' => $_POST['email']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
header("Location: *login page*");
die("Redirecting to *login page*");
}
>
你不火的查詢?請讓你的問題更清楚。 –
立即更新整個代碼。 – saltcracker