2017-12-18 249 views
0

我創建了一個registration.php登錄user.php一個error.php和一個server.php錯誤驗證和服務器連接我的PHP表單到數據庫。 login.php正在工作,因爲註冊表單無法正常工作時,會顯示錯誤的ID和/或密碼。當我點擊提交它就像刷新一樣,沒有它保存到數據庫。嘗試3天,不知道爲什麼。也許是我的問題?我正在使用XAMPP和phpmyadmin以及dreamweaver。註冊表格php只刷新phpMyAdmin

這是我的register.php。

<?php include('server.php') ?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Registration Form</title> 
<link rel="stylesheet" type="text/css" href="forms.css"> 
</head> 
<body> 
<div class="header"> 
    <h2>Register</h2> 
</div> 

<form method="post" action="register.php"> 
    <?php include('errors.php'); ?> 
    <div class="input-group"> 
     <label>Name:</label> 
     <input type="text" name="name"> 
    </div> 
    <div class="input-group"> 
     <label>Surname:</label> 
     <input type="text" name="surname"> 
    </div> 
    <div class="input-group"> 
     <label>Password:</label> 
     <input type="password" name="password_1"> 
    </div> 
    <div class="input-group"> 
     <label>Confirm Paswword:</label> 
     <input type="password" name="password_2"> 
    </div> 
    <div class="input-group"> 
     <label>Student ID:</label> 
     <input type="text" name="studentid"> 
    </div> 
    <div class="input-group"> 
     <label>Email:</label> 
     <input type="text" name="email"> 
    </div> 
    <div class="input-group"> 
     <label>Course:</label> 
     <input type="text" name="course"> 
    </div> 
    <div class="input-group"> 
     <center><button type="submit" name="register" class="btn">Register</button></center> 
    </div> 
    <p> 
     Already a registered student? <a href="login.php">Sign in</a> 
    </p> 
</form> 
</body> 
</html> 

,這是我server.php

<?php 

    session_start(); 

    // variable declaration 
    $name = ""; 
    $surname = ""; 
    $email = ""; 
    $studentid = ""; 
    $password_1 =""; 
    $password_2 = ""; 
    $course = ""; 
    $errors = array(); 
    $_SESSION['success'] = ""; 

    // connect to database 
    $db = mysqli_connect('localhost', 'root', '', 'registration'); 

    // if register button clicked receive all inputs from the form 
    if (isset($_POST['reg_user'])) { 
    $name = mysqli_real_escape_string($db, $_POST['name']); 
    $surname = mysqli_real_escape_string($db, $_POST['surname']); 
    $email = mysqli_real_escape_string($db, $_POST['email']); 
    $studentid = mysqli_real_escape_string($db, $_POST['studentid']); 
    $password_1 = mysqli_real_escape_string($db, $_POST['password_1']); 
    $password_1 = md5($password_1); 
    $password_2 = mysqli_real_escape_string($db, $_POST['password_2']); 
    $password_2 = md5($password_2); 
    $course = mysqli_real_escape_string($db, $_POST['course']); 


    // ensure that form fields are filled properly 
    if (empty($name)) { 
     array_push($errors, "Name is required"); 
         } 
    if (empty($surname)) { 
     array_push($errors, "Surame is required"); 
    } 
    if (empty($email)) { 
     array_push($errors, "Email is required"); 
    } 
    if (empty($studentid)) { 
     array_push($errors, "Student ID is required"); 
    } 
    if (empty($password_1)) { 
     array_push($errors, "Password is required"); 
    } 
    if (empty($course)) { 
     array_push($errors, "Course is required"); 
    } 

    if ($password_1 != $password_2) { 
    array_push($errors, "The two passwords do not match"); 
    } 

    if (count($errors) == 0) { 
    $password = md5($password_1); //encrypt the password before saving in the database 
    $query = "INSERT INTO users (id, name, surname, email, studentid, password, course) 
       VALUES(0,'$name','$surname', '$email', '$studentid' '$password', '$course')"; 
    mysqli_query($db, $query); 
    $_SESSION['studentid'] = $studentid; 
    $_SESSION['success'] = "You are now logged in"; 
    header('location: index.php'); 
    } 

} 

// login user 
if (isset($_POST['login_user'])) { 
    $studentid = mysqli_real_escape_string($db, $_POST['studentid']); 
    $password = mysqli_real_escape_string($db, $_POST['password']); 

    if (empty($studentid)) { 
    array_push($errors, "Student ID is required"); 
    } 
    if (empty($password)) { 
    array_push($errors, "Password is required"); 
    } 

    if (count($errors) == 0) { 
    $password = md5($password); 
    $query = "SELECT * FROM users WHERE studentid='$studentid' AND password='$password'"; 
    $results = mysqli_query($db, $query); 
    if (mysqli_num_rows($results) == 1) { 
     $_SESSION['studentid'] = $studentid; 
     $_SESSION['success'] = "You are now logged in"; 
     header('location: index.php'); 
    }else { 
     array_push($errors, "Wrong Student ID or Password. Please try again."); 
    } 
    } 
} 

?> 

database

+1

你的表單動作是指向register.php,你說「這是我的server.php」。你可以檢查 – Satya

+0

你有'register.php'嗎? –

+2

_注意:_你沒有使用PHPMyAdmin。 PHPMyAdmin只是一個基於Web的管理MySQL數據庫的管理工具。 –

回答

0

您按鈕的名稱是從一個在PHP

//previous code button clicked for register 
if (isset($_POST['reg_user'])) {} 

,而不是

//button clicked for register 
if (isset($_POST['register'])) {} 

,並查詢 不同的,如果你的「身份證」的自動遞增,留空而把0 ,你也可以按照如下方式做:

$query = "INSERT INTO users (name, surname, email, studentid, password, 
course)VALUES('$name','$surname', '$email', '$studentid' '$password', '$course')"; 

已更新,以幫助任何人與類似的問題

對於任何人可能有類似的代碼挑戰,請檢查是否每個半列,逗號和點是他們應該在哪裏。

您也可以通過回顯值來調試,以確定問題可能來自哪裏。

也讀通過評論,你可能會從那裏拿到你需要的東西。 希望這有助於。

+0

你好,謝謝你的回答。是的,它終於工作和驗證,但沒有保存在數據庫中,當試圖使用我設置在註冊表中的ID和密碼登錄時,沒有登錄說錯誤的ID和/或密碼..嗯..我需要計算爲什麼ISN'並保存它..也是它的自動增量和刪除它比kyou – Onix

+0

實際上當我註冊登錄時,當我註銷並嘗試再次登錄無法找到''用戶名''(studentid)和/或密碼也許是因爲它沒有保存在數據庫上。 – Onix

+0

@Onix md5並不是最好的密碼散列,閱讀更多關於php password_hash(),也可能你的數據不在數據庫中,有時你也不是通過比較兩個散列的最佳方法MySQL的你可以調用其他哈希出來,並使用正常的PHP比較如果語句 – Ezekiel

0

問題是你查詢你拿surname而不是username。 更改查詢 從這個

$query = "INSERT INTO users (name, surname, email, studentid, password, course) 
       VALUES(0,'$name','$surname', '$email', '$studentid' '$password', '$course')"; 

對此

$query = "INSERT INTO users (id, name, surname, email, studentid, password, course) 
       VALUES('$name','$username', '$email', '$studentid' '$password', '$course')"; 

而且有大量的代碼拼寫錯誤的。請填寫放鬆並檢查所有拼寫。

+0

我會建議從查詢中一起刪除'id'-列。 –

+0

你好,感謝你的時間和幫助。我知道有些msitakes,我會解決它,我只是想先做好這項工作,然後放鬆並糾正錯誤和拼寫。謝謝你的幫助 – Onix