PHP使用者登入註冊模組實現

來源:互聯網
上載者:User

PHP使用者登入模組實現

 

項目包含的功能指令碼:

login.php//登入

reg.php//註冊使用者

user_add.php//註冊校正指令碼

user_login_check.php//登入校正指令碼

image.php//驗證碼圖片產生指令碼

 

流程:

設計資料庫:

包含使用者uid,使用者名稱,密碼,暱稱,性別,郵箱,註冊時間

sql語句如下

create table users (uid bigint(20) not null auto_increment primary key unique key,username varchar(100) default null, userpassword varchar(100) default null, nickname varchar(100) default null, sex tinyint(1) default 0,email varchar(100) default null, regtime timestamp(14) default 0);

 

註冊模組:

reg.php填寫註冊資訊,通過js指令碼判斷所填寫資訊是否合法

如果合法,那麼提交表單,通過user_add.php進行使用者的註冊

user_add.php指令碼實現的功能如下:

判斷輸入的資訊是否合法,這個js可以實現,但是為了瀏覽器安全色這裡用php再實現一遍js的功能

如果合法並且以前沒有註冊過,那麼可以註冊,否則提示錯誤資訊

 

登入模組:

login.php填寫登入資訊,js判斷輸入資訊是否合法

如果合法提交表單,通過user_login_check.php登入

user_login_check.php實現功能如下:

判斷輸入資訊是否合法,與js功能相同

如果合法並且使用者名稱密碼都對的話儲存session變數,允許使用者登入

 

驗證碼模組:

防止惡意註冊產生驗證碼,產生的是png格式的5位元字驗證碼

需要用到session變數,伺服器需要安裝gd庫

 

具體注意事項:

1、JavaScript指令碼

<script language="javascript">

function IsDigit(cCheck)

{

return(('0'<=cCheck)&&(cCheck<='9'));

}

function IsAlpha(cCheck)

{

return((('a'<=cCheck)&&(cCheck<='z'))||(('A'<=cCheck)&&(cCheck<='Z')));

}

function IsValid()

{

var struserName=reg.UserName.value;

for(nIndex=0;nIndex<struserName.length;nIndex++)

{

cCheck=struserName.charAt(nIndex);

if(!(IsDigit(cCheck)||IsAlpha(cCheck)))

{

return false;

}

}

return true;

}

function chkEmail(str)

{

return str.search(/[/w/-]{1,}@[/w/-]{1,}/.[/w/-]{1,}/)==0?true:false;

}

function docheck()///////////////This place has a very important problem.MF can't do as wo expect!

{

if(reg.UserName.value=="")

{

alert("請填寫使用者名稱");

return false;

}

else if(!IsValid())

{

alert("使用者名稱只能使用數字和字母");

return false;

}

else if(reg.UserPassword.value=="")

{

alert("請填寫密碼");

return false;

}

else if(reg.UserPassword.value!=reg.CUserPassword.value)

{

alert("兩次密碼輸入不一樣");

return false;

}

else if (reg.NickName.value=="")

{

alert("請填寫暱稱");

return false;

}

else if (reg.Email.value=="")

{

alert("請填寫郵箱地址");

return false;

}

else if (!chkEmail(reg.Email.value))

{

alert("請填寫有效郵箱地址!");

return false;

}

else return true;

}

</script>

響應js指令碼的方法:<form name="reg" action="user_login_check.php" method="post" target="_self" onSubmit="return docheck()">

在提交表單時候響應(有的瀏覽器在docheck()返回錯誤的時候任然繼續提交表單,這就是為什麼要在表單處理指令碼裡任然繼續使用php進行輸入資訊再次驗證的原因)

登陸時候可以只驗證使用者名稱和密碼

 

2、資料庫連接

$strSql="";

$database_username="root";

$database_password="ssklzs";

$database_name="userlog";

$s_UserName=$_POST["UserName"];

$s_UserPassword=$_POST["UserPassword"];

$strSql="select * from users where username like '".$s_UserName."' and userpassword like '".$s_UserPassword."'";

//$strSql="insert into users(username,userpassword,nickname,sex,email,regtime)values('".$s_UserName."','".$s_UserPassword."','".$s_NickName."','".$s_Sex."','".$s_Email."',now())";//now()當前系統時間

//串連資料庫

$link=mysql_connect("localhost",$database_username,$database_password) or die("Could not connect MySQL:".mysql_error());

mysql_select_db($database_name,$link) or die("Can not use userlog:".mysql_error());

$result=mysql_query($strSql);

//sql執行完畢

if($row=mysql_fetch_object($result)){···}

else{···}

 

3、session變數設定

session是不同php指令碼間參數進行傳遞的通道

session變數大致需要兩個,一個用來儲存驗證碼,一個用來記錄登入的使用者

一般情況下php.ini檔案的session.auto_start = 0表示session沒有自動開啟,所以在使用session時候需要將此數值設為1

注意session變數的初始化和登出

 

4、返回按鈕

echo ("<input type='button' name='btn' value='返回' onClick='window.history.go(-1)' />")

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.