作者 主題: 登入系統的程式  (閱讀 11938 次)

0 會員 與 1 訪客 正在閱讀本文。

figaro

  • 憂鬱的高中生
  • ***
  • 文章數: 185
  • 性別: 男
    • 檢視個人資料
    • http://www.neo-info.net
登入系統的程式
« 於: 2002-03-13 18:11 »
小弟目前碰到嚕一個問題...
我剛再寫一個系統登入的程式(login.php)

目前的程式片段進度到....
  $hostname = "localhost";
  $username = "login";
  $password = "password";
  $dbName ="User";
 
  mssql_connect($hostname,$username,$password)
  mssql_select_db($dbName)
  $query = "SELECT * FROM User";
  $result = mssql_query($query);

我這邊應該怎樣寫
才可以讓他判斷LOGIN的帳號和密碼和資料庫中的相同呢
相同的話會導入到default.html
錯的話會到error.html
?>
Figaro Yang
更多關於Figaro Yang

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
登入系統的程式
« 回覆 #1 於: 2002-03-13 19:08 »
引用

在 2002-03-13 18:11, figaro 寫了:
小弟目前碰到嚕一個問題...
我剛再寫一個系統登入的程式(login.php)

目前的程式片段進度到....
  $hostname = "localhost";
  $username = "login";
  $password = "password";
  $dbName ="User";
 
  mssql_connect($hostname,$username,$password)
  mssql_select_db($dbName)
  $query = "SELECT * FROM User";
  $result = mssql_query($query);

我這邊應該怎樣寫
才可以讓他判斷LOGIN的帳號和密碼和資料庫中的相同呢
相同的話會導入到default.html
錯的話會到error.html
?>


query可以用"select ID,pwd from User where ID='login_from_ID' limit 1"
接著將網頁上登入的密碼利用加密函式重新編譯
mysql是 select password('From_password')
在比對看看二者是不是一樣

if ($L_pwd != $F_pwd or $ID != $F_ID){
include('error.html');
die();
}

小穎

  • 俺是博士!
  • *****
  • 文章數: 1005
    • 檢視個人資料
登入系統的程式
« 回覆 #2 於: 2002-05-09 11:49 »
引述: "figaro"
小弟目前碰到嚕一個問題...
我剛再寫一個系統登入的程式(login.php)

目前的程式片段進度到....
<?php
  $hostname = "localhost";
  $username = "login";
  $password = "password";
  $dbName ="User";
 
  mssql_connect($hostname,$username,$password)
  mssql_select_db($dbName)
  $query = "SELECT * FROM User";
  $result = mssql_query($query);

我這邊應該怎樣寫
才可以讓他判斷LOGIN的帳號和密碼和資料庫中的相同呢
相同的話會導入到default.html
錯的話會到error.html
?>


怎麼寫的方法,梁楓大大已經說明了!小弟只是來給個小小的建議! :P
請將mysql_connect改成mysql_pconnect的方式來寫!
用mysql_connect的方式如果沒有將其close掉的話,會有很多mysql的連線出現!最後呢…連線過多,就會造成error(超過MySQL內定的連線數),當然也會照成系統的負擔! :lol:
要不然…你也可以改用PEAR的DB.php來寫!一樣簡單好用!還class的喔! 8)

swcjason

  • 懷疑的國中生
  • **
  • 文章數: 33
    • 檢視個人資料
    • http://www.sdcs.com.tw
登入系統的程式
« 回覆 #3 於: 2002-05-21 01:27 »
引述: "figaro"
小弟目前碰到嚕一個問題...
我剛再寫一個系統登入的程式(login.php)

目前的程式片段進度到....
<?php
  $hostname = "localhost";
  $username = "login";
  $password = "password";
  $dbName ="User";
 
  mssql_connect($hostname,$username,$password)
  mssql_select_db($dbName)
  $query = "SELECT * FROM User";
  $result = mssql_query($query);

我這邊應該怎樣寫
才可以讓他判斷LOGIN的帳號和密碼和資料庫中的相同呢
相同的話會導入到default.html
錯的話會到error.html
?>


補充梁楓兄更完整的用法
另外在加個level做權限層級認證

<?php
  $hostname = "localhost";
  $username = "login";
  $password = "password";
  $dbName ="User";
$line=mysql_connect($hostname, $username, $password) or die("Unable to connect to database");
mysql_select_db($dbName,$line) or die( "Unable to select database");

//sql的部分直接去select...user的帳號跟密碼
$result= mysql_query("select * from $dbName where login_id='$lid' and login_pass='$passd' ") or die(mysql_error());
$number = mysql_num_rows($result);

//如果select到的資料是0筆...即表示無此帳號或密碼錯誤
if ($number == 0) {
echo "登入失敗!!找不到這個帳號或密碼!!";
exit;
}

//如果select到的資料大於0筆...則將select到的user的資料潤session
elseif ($number > 0){
$fo = mysql_fetch_object($result);
$login_id=$fo->login_id ;
$login_pass=$fo->login_pass ;
$level=$fo->level ;

session_start();
session_register(session_id,session_pass,session_level);
$session_id = $login_id;
$session_pass = $login_pass;
$session_level = $level;
}
?>

到此...再先編輯一個判斷有無登入的檔
例如叫做 linkto.php
<?
if (($session_id && $session_level) || $session_id==0){
if ($session_id>=1 && $session_id<=4){
this is low level user
user_page_sttyle=1 || 2 || 3 || 4
user_goto_page=1 || 2 || 3 || 4
}elseif ($session_level>=5 && $session_level<=8 ){
this is middle level user
user_page_sttyle=5 || 6 || 7 || 8
user_goto_page=5 || 6 || 7 || 8
}elseif ($session_level==9){
this is administrator
......................
.......................
}

}else{
header ("login.html");
}
?>
從此...只要是你希望user必須要登入才能進入的頁面
你只要在最前面加上
include "linkto.php";
這樣就ok啦!!

SunsetKiller

  • 可愛的小學生
  • *
  • 文章數: 10
    • 檢視個人資料
    • 阿宅
登入系統的程式
« 回覆 #4 於: 2007-09-19 03:17 »
引述: "小穎"
怎麼寫的方法,梁楓大大已經說明了!小弟只是來給個小小的建議! :P
請將mysql_connect改成mysql_pconnect的方式來寫!
用mysql_connect的方式如果沒有將其close掉的話,會有很多mysql的連線出現!最後呢…連線過多,就會造成error(超過MySQL內定的連線數),當然也會照成系統的負擔! :lol:
要不然…你也可以改用PEAR的DB.php來寫!一樣簡單好用!還class的喔! 8)


用 mysql_pconnect  才會讓系統掛掉吧?
線上200人 都佔用長期連線 不超過系統內定值才怪?

正確的方法是使用 mysql_connect 保持使用完閉 close的習慣