登录和注册页面php的问题

时间:2015-10-18 16:27:20

标签: php html mysql

在来到这里之前,我已经彻底研究了我的主题,似乎无法弄清楚我的问题。

我有一个HTML页面:

<form role="form" action="register.php" method="POST">
    <div class="form-group">
        <label>First Name:</label>
        <input type="text" name="first_name">
    </div>
    <div class="form-group">
        <label>Last Name:</label>
        <input type="text" name="last_name">
    </div>
    <div class="form-group">
        <label>Student ID:</label>
        <input type="number" name="student_id">
    </div>
    <div class="form-group">
        <label>Email address:</label>
        <input type="email" name="email">
    </div>
    <button type="submit" name="register" value="register">Register</button>
</form>
<form role="form" action="login.php" method="POST">
    <div class="form-group">
        <label>Email address:</label>
        <input type="email" name="email">
    </div>
    <button type="submit" name="login" value="login">Login</button>
</form>

这与我用php编写的登录页面完美地通信,它检查提交的电子邮件地址是否已经存在于MySQL数据库中。然后它会将用户指向一个配置文件页面,代码将自行退出。

我的问题在于我的注册页面,我使用与登录页面相同的MySQL SELECT功能,检查并查看提交的学生证或电子邮件是否已存在于数据库中,如果是,将返回用户再次尝试的表单:

<?php
$servername = "";
$username = "";
$password = "";
$dbname = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$student_id = $_POST['student_id'];
$email = $_POST['email'];
if (isset($_POST['register'])) {
    register($conn, $first_name, $last_name, $student_id, $email);
}
function register($conn, $first_name, $last_name, $student_id, $email) {
    $Ssql = "SELECT student_id FROM AidenLocke where student_id = '$student_id'";
    $Sresult = mysqli_query($conn, $sql);
    if (mysqli_num_rows($Sresult) > 0) {
        header('Location: form.html');
    } else {
        $sql = "INSERT INTO AidenLocke (first_name, last_name, email, student_id)
            VALUES ('$first_name', '$last_name', '$email', '$student_id')";

        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br />" . $conn->error;
        }
        header('Location: profile.php');
    }
}

(出于安全原因,我删除了我的数据库信息,但没有连接问题)

我的主要问题是使用第二个if语句的else部分,我的代码不会检查学生ID是否已经存在,并且无论我在表单中输入什么信息,都会在数据库中创建一个新条目。 / p>

我很困惑,希望有人能给我一个有效的答案,谢谢!

1 个答案:

答案 0 :(得分:1)

在查询数据库时,您的变量似乎有拼写错误:

$Ssql = "SELECT student_id FROM AidenLocke where student_id = '$student_id'";
 ^^^^
$Sresult = mysqli_query($conn, $sql);
                                ^^^

也就是说,您使用$sql代替$Ssql