2015-10-18 253 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管理器:-) –