2015-10-18 219 views
0

我在来这里之前已经彻底研究了我的主题,似乎无法找出我的问题。登录和注册页面问题php

我有一个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功能来检查提交的学生ID或电子邮件是否已存在于数据库中,如果是,将返回到形式为用户再试一次:

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

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

我的主要问题是与第二,如果的其它部分声明中,我的代码不检查学生ID是否已经存在,也不检查我输入到表单中的信息是否成立w进入数据库。

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

回答

1

你似乎有一个错字在你的变量,当你查询数据库:

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

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

+0

不能相信这是唯一的问题!谢谢:) – Arkadelic

+0

@ user5459946这是一个很好的例子,为什么要使用隐藏这种实现的自定义DB管理器:-) –