我有两个PHP表单,都带有不同值的提交按钮。寄存器一个正常工作,正确查询数据库,并在有人输入错误时引发错误。然而,登录一个不起作用,我似乎无法弄清楚为什么。看起来我设置的捕获工作似乎不适用于登录,但它看起来与寄存器一样?
PHP if语句:
if ($_POST['submit'] == 'Login') {
// Checking whether the login form has been submitted
$err = array();
echo "hey";
array_push($err, "Hello");
/*
if (!count($err)) {
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
// Escaping all input data
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr,pass FROM tz_login WHERE usr='{$_POST['username']}'"));
echo $row;
$pass = $row['pass'];
if (password_verify($_POST['password'], $pass)) {
// If everything is okay
$_SESSION['usr'] = $row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
// Store some data in the session
setCookie('remember', $_POST['rememberMe']);
}
else $err[] = 'Wrong username and/or password!';
}
*/
if (count($err)) {
$_SESSION['msg']['login-err'] = implode('<br />'.$err);
}
header("Location: index.php");
exit;
}
else if ($_POST['submit'] == 'Register') {
// Checking whether the register form has been submitted
$err = array();
$username_len = strlen($_POST['username']);
if ($username_len < 4 || $username_len > 32) {
array_push($err, 'Your username must be between 3 and 32 characters!');
}
if (preg_match('/[^a-z0-9\-\_\.]+/i', $_POST['username'])) {
array_push($err, 'Your username contains invalid characters!');
}
if (!checkPassword($_POST['password'])) {
array_push($err, 'Your password must be at least 8 characters, contain one letter, number, and special character!');
}
if (!passwordMatch($_POST['password'], $_POST['password_repeat'])) {
array_push($err, 'Your passwords do not match!');
}
if (!checkEmail($_POST['email'])) {
array_push($err, 'Your email is not valid!');
}
if (!count($err)) {
// If there are no errors
$username = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['password']);
$pass = password_hash($pass, PASSWORD_DEFAULT);
$email = mysql_real_escape_string($_POST['email']);
// Escape the input data
mysql_query("INSERT INTO tz_login(usr,pass,email,regIP,dt)
VALUES(
'".$username."',
'".$pass."',
'".$email."',
'".$_SERVER['REMOTE_ADDR']."',
NOW()
)");
if (mysql_affected_rows($link) == 1) {
$_SESSION['msg']['reg-success'] = 'Successfully registered! You can now log in!';
}
else $err[] = 'This username has already been taken!';
}
if (count($err)) {
$_SESSION['msg']['reg-err'] = implode('<br />', $err);
}
header("Location: index.php");
exit;
}
HTML表单:
<!-- Login form -->
<div class="left">
<h1>Login</h1>
<form action="" method="post">
<?php
if($_SESSION['msg']['login-err']) {
echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
unset($_SESSION['msg']['login-err']);
}
?>
<label class="form_label" for="username">Username:</label>
<input class="form_field" type="text" name="username" id="username" value="" size="23" />
<label class="form_label" for="password">Password:</label>
<input class="form_field" type="text" name="password" id="password" value="" size="23" />
<label><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> Remember me</label>
<input type="submit" name="submit" value="Login" class="bt_login" />
<div class="clear"></div>
</form>
</div>
<!-- Register form -->
<div class="left">
<h1>Register</h1>
<form action="" method="post">
<?php
if($_SESSION['msg']['reg-err']) {
echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
unset($_SESSION['msg']['reg-err']);
}
if($_SESSION['msg']['reg-success']) {
echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
unset($_SESSION['msg']['reg-success']);
}
?>
<label class="form_label" for="username">Username:</label>
<input class="form_field" type="text" name="username" id="username" value="" size="23" />
<label class="form_label" for="password">Password:</label>
<input class="form_field" type="text" name="password" id="password" value="" size="23" />
<label class="form_label" for="password_repeat">Repeat Password:</label>
<input class="form_field" type="text" name="password_repeat" id="password_repeat" value="" size="23" />
<label class="form_label" for="email">Email:</label>
<input class="form_field" type="text" name="email" id="email" value="" size="23" />
<input type="submit" name="submit" value="Register" class="bt_login" />
<div class="clear"></div>
</form>
</div>