2015-06-12 16 views
6

EDIT: nó hiện đang hoạt động, cảm ơn mọi người.
Tôi đã tạo một hệ thống đăng nhập đơn giản với php, sau khi tạo một số người dùng trên một MySQL. Nhưng khi tôi cố gắng đăng nhập, tôi nhập một trang hoàn toàn trống, bất kể đầu vào của tôi là gì. Dưới đây là html của tôi ...Hệ thống đăng nhập đơn giản với php

<body> 
    <div class="mainbox"> 
     <h3 align="center">Log In</h3> 
     <hr> 
     <form role="form" class="form-horizontal" method="POST" action="connectivity.php"> 
     <div class="form-group"> 
      <label for="Username">Username:</label> 
      <input type="text" class="form-control" name="username" size="40" placeholder="Enter Username"> 
     </div> 
     <div class="form-group"> 
      <label for="pwd">Password:</label> 
      <input type="password" class="form-control" name="pass" size="40" placeholder="Enter Password"> 
     </div> 
     <button id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
     </form> 
    </div> 
</body> 

và đây là connectivity.php ...

<?php 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'simplelogin'); 
define('DB_USER','root'); 
define('DB_PASSWORD',''); 

$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

function SignIn() 
{ 
    session_start(); 
    if(!empty($_POST['username'])) 
    { 
     $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[username]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
     $row = mysql_fetch_array($query) or die(mysql_error()); 
     if(!empty($row['userName']) AND !empty($row['pass'])) 
     { 
      $_SESSION['userName'] = $row['pass']; 
      echo "Successful login to user profile page!"; 
     } 
     else 
     { 
      echo "Sorry, You have either entered a wrong Username or a wrong password. Please retry"; 
     } 
    } 
}  
if(isset($_POST['submit'])) 
{ 
    SignIn(); 
} 
?> 

Chức năng này không được thực hiện, tôi phải làm gì?

+2

tạo nhật ký lỗi BẬT và không sử dụng phương thức GET để đăng nhập. Sử dụng phương thức POST thay thế. Tránh các hàm mysql_ *. – Deep

+0

Tôi có thể biết tại sao tôi nên sử dụng POST không? Tôi vẫn đang học php ... @DeepKakkar – Anjunadeep

+1

Dường như bạn lưu trữ mật khẩu trong cơ sở dữ liệu của bạn ở dạng văn bản thuần túy. Bạn nên bị nhốt trong tù vì điều đó. ; p Ít nhất sử dụng MD5. –

Trả lời

10

Đầu tiên, Bạn phải luôn sử dụng phương pháp POST cho chức năng đăng nhập lity. Phương thức POST an toàn hơn là phương thức GET. POST không hiển thị thông tin qua URL. Để biết thêm thông tin để có được kiến ​​thức về sự khác biệt giữa GET và POST, hãy truy cập Link.

Thứ hai, Bạn nên tránh phương thức mysql_*. Để biết thông tin, hãy truy cập vào SO LInk.

Thứ ba, Để nộp một mẫu bạn đang sử dụng <button thẻ và không có JS cho hình thức nộp vào sự kiện click của nó Vì vậy, hình thức của bạn sẽ không nộp. cũng không xác định loại của nó là submit như `type =" submit ". Tốt hơn nên sử dụng loại đầu vào gửi để gửi biểu mẫu.

Thứ tư, Bạn đang nhận dữ liệu biểu mẫu bằng phương thức POST và dưới dạng bạn đang sử dụng phương thức GET Vì vậy, tệp tác vụ của bạn không thể nhận dữ liệu do xung đột phương pháp.

Thứ năm, Phiên phải được bắt đầu ở đầu trang.

Thứ sáu, Tốt hơn để xác thực biểu mẫu với xác thực phía máy khách trước tiên, sau đó xác thực phía máy chủ cũng sẽ được áp dụng.

Bây giờ, trong mã của bạn:

  • thay đổi <form> thẻ thuộc tính như method="post".
  • Sử dụng <input type="submit" name="submit" value="Submit" /> để gửi biểu mẫu. tệp hành động sẽ nhận dữ liệu từ biểu mẫu bằng cách sử dụng tên thành phần và bạn bị thiếu trong số input type="submit" name="submit"
  • Xóa mysql_* chức năng khỏi mã của bạn và sử dụng mysqli_* để kết nối cơ sở dữ liệu và sử dụng thêm.
+1

Tôi cần bit đầu tiên và thứ hai nhiều nhất. Cảm ơn bạn rất nhiều, các liên kết thực sự hữu ích đã kết bạn với – Anjunadeep

+0

câu trả lời đã chỉnh sửa với nhiều thông tin hơn. chào đón nhiều nhất. luôn sẵn sàng giúp đỡ người khác @Anjunadeep – Deep

4

Biểu mẫu của bạn có phương thức GET, nhưng kết nối của bạn mong đợi POST. Thay đổi phương thức trên biểu mẫu thành POST và sẽ tốt hơn.

Ngoài ra, bạn không có thuộc tính tên trên nút gửi của mình. Nếu bạn đăng một biểu mẫu, nó sẽ tìm kiếm các thuộc tính tên, không phải của ID. Vì vậy, nó sẽ không bao giờ nhập chức năng của bạn bây giờ.

+0

Ôi trời ơi, thật là một sai lầm ngu ngốc. Cảm ơn, nó đang làm việc bây giờ – Anjunadeep

3

bạn cũng cần

<input id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
4

Bạn nên xác định, tên nút như 'submit' .. Cố gắng thay thế mã nút của bạn như làm theo,

<button id="Submit" name="submit" type="submit" class="btn btn-default">Submit</button> 

Nó sẽ làm việc như exceptation của bạn. . :-)

+0

Nó, cảm ơn rất nhiều :-) – Anjunadeep

Các vấn đề liên quan