Thu 12 Jan 2006 20:06:16
แบบเช็คด้วยจาวาสคลิป 3ครั้ง ถ้าผิดให้ไปเพจอื่นนะครับ ส่วนusername กับpassเวิดให้เช็คจากฐานข้อมูลmysql
รบกวนขอสคลิปตัวอย่างครับ
ขอบคุณมากครับ
ยังไงลองเขียนดูก่อนนะครับไม่ได้ยังไง ติดตรงไหนลองเอาโค๊ดมาดูกันครับ
Fri 13 Jan 2006 12:05:21
รบกวนขอตัวอย่าง จาวาสคลิป เช็คuserกับpass 3ครั้งก่อนเข้าเว็บ ถ้าใส่ทั้ง3ครั้งผิดให้ไปเข้าเว็บอื่น เก็บuserกับpass เป็นtextfileสามารถเพิ่มเข้าไปได้
รบกวนด้วยนะครับ เขียนมะถูกนะครับ จะเอาไปอแดบเข้ากับงานนะครับ
ขอบคุณมากนะครับ
<script language="javascript" src="md5.js" type="text/javascript"></script>
<script language="javascript">
var users = new Array();
<?
$f = file("users.txt");
$i = 0;
while(list(,$v) = each($f)){
$up = explode("|X|",$v);
echo "users[".$i."] = new Array('".trim($up[0])."', '".md5(trim($up[1]))."');\n";
$i++;
}
?>
function createCookie(name, value, days){
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function checkUser(user, pass){
var count = readCookie('count')*1;
if(count >= 3){
document.location.href= 'somewhere.html';
}
for(i = 0; i<users.length; i++){
if(users[i][0]==user && users[i][1]==hex_md5(pass)){
//OK
return true;
}
}
createCookie('count', count+1);
return false;
}
function validate(obj){
//document.write(readCookie('count'));
if(obj.username.value == ""){
alert("Please enter your username");
obj.username.focus();
return false;
}else if(obj.password.value == ""){
alert("Please enter your password");
obj.password.focus();
return false;
}else if(!checkUser(obj.username.value, obj.password.value)){
alert(readCookie('count'));
return false;
}
return true;
}
</script>
<form onsubmit="return validate(this)">
<input type="text" name="username" /><input type="password" name="password" /><input type="submit" value="Login" />
</form>
โค๊ดทั้งหมดประมาณนี้ครับ ใช้ php+javascript ครับ โดยในไฟล์ users.txt นั้นก็ให้ใส่ข้อมูลตาม format นี้ครับ
username1|X|password1
username2|X|password2
ลองดูนะครับ
Fri 13 Jan 2006 14:18:51
ผมลองเอาโค้ดมาลองทำตามดูแล้ว สุดยอดเลยครับ(อันนี้พูดจากใจจริงเลยนะครับมะใช่แกล้งชม) มีกันคนเข้าดูพาสเวิดด้วย md5.js ถ้ากันคนดูโค้ดจาวาสคลิปที่เราเขียนเป็นเพจที่เป็น.htmlได้ไหมครับ
อีกนิดครับถ้าผมจะอะแดปโค้ดด้านบนที่ให้มา แบบพอรหัสผ่าน ถูกให้หน้า test.html
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</head>
<body>
Test
</body>
</html> <-----โชว์
และถ้าใส่รหัสผ่านผิด3ครั้งให้ ไปที่http://www.google.co.th และให้เคลียtextboxทุกครั้งที่ผิดนะครับ
รบกวนด้วยนะครับ
ส่วนเมื่อต้องการ redirect user ที่ป้อนผิด 3 ครั้งให้ไปที่หน้าไหนนั้นอยู่ในส่วน
function checkUser(user, pass){
var count = readCookie('count')*1;
if(count >= 3){
document.location.href= 'http://www.google.co.th';
}
for(i = 0; i<users.length; i++){
if(users[i][0]==user && users[i][1]==hex_md5(pass)){
//OK
return true;
}
}
createCookie('count', count+1);
return false;
}
ส่วนการ clear textbox นั้นอยู่ในส่วน
function validate(obj){
//document.write(readCookie('count'));
if(obj.username.value == ""){
alert("Please enter your username");
obj.username.focus();
return false;
}else if(obj.password.value == ""){
alert("Please enter your password");
obj.password.focus();
return false;
}else if(!checkUser(obj.username.value, obj.password.value)){
obj.username.value = '';
obj.password.value = '';
return false;
}
return true;
}
ลองดูตามนี้ล่ะครับ ขอบคุณมากครับสำหรับคำชม
Fri 13 Jan 2006 15:12:26
ขออีกนิดครับ ถ้าคีผิดแต่ละครั้ง ให้โชข้อความบอกว่าคุณคีuserและpassผิดและเคลียtextboxแต่ละครั้ง จนครบ3ครั้ง รบกวนทีครับผมพยายามแก้แล้วมะได้ครับ
function validate(obj){
//document.write(readCookie('count'));
if(obj.username.value == ""){
alert("Please enter your username");
obj.username.focus();
return false;
}else if(obj.password.value == ""){
alert("Please enter your password");
obj.password.focus();
return false;
}else if(!checkUser(obj.username.value, obj.password.value)){
alert("คุณคีuserกับpassผิดครั้งที่1"); <------------ผมเพิ่มเข้าไปกะได้แต่มะได้error
obj.username.value = '';
obj.password.value = '';
return false;
}
return true;
}
รบกวนด้วยนะครับ
ขอบคุณมากครับ
if(obj.username.value == ""){
alert("Please enter your username");
obj.username.focus();
return false;
}else if(obj.password.value == ""){
alert("Please enter your password");
obj.password.focus();
return false;
}else if(!checkUser(obj.username.value, obj.password.value)){
var count = readCookie('count')*1;
switch(count){
case 1: alert("คุณป้อนข้อมูลผิดครั้งที่ "+count); break;
case 2: alert("คุณป้อนข้อมูลผิดครั้งที่ "+count+"\nเหลืออีกครั้งเดียวเท่านั้นนะครับ คิดดีๆ"); break;
}
obj.username.value = '';
obj.password.value = '';
return false;
}
return true;
}
Fri 13 Jan 2006 16:22:42
โทษนะครับขออีกนิดนะครับ
function checkUser(user, pass){
var count = readCookie('count')*1;
if(count >= 2){ //---ผมทำการลดจาก3เหลือ2 เพราะถ้า2มันจะคี3ครั้งแล้วโดดไปgoogleพอดี อยากให้พอกดครั้งที่ ตรงนี้ให้โชข้อความว่า คุณคีผิดหมด แล้วค่อยโหลดgoogle
alert("คุณคีผิดหมด"); //----ผมลองเพิ่มตรงนี้แต่พอโหลดเพจแล้วข้อความนี้ยังค้างพอเรากดokมันเกิดbugนะครับ
document.location.href= 'http://www.google.co.th'; //--ตรงนี้ถ้าเปลี่ยนเป็น.swfรันขึ้นมาหรือ.exeที่ทำจากflashรันขึ้นมาแทนgoogleได้ไหมครับ
}
รบกวนด้วยนะครับ
ขอบคุณมากครับ
Mon 16 Jan 2006 08:35:50
โทษนะครับขออีกนิดนะครับ
function checkUser(user, pass){
var count = readCookie('count')*1;
if(count >= 2){ //---ผมทำการลดจาก3เหลือ2 เพราะถ้า2มันจะคี3ครั้งแล้วโดดไปgoogleพอดี อยากให้พอกดครั้งที่ ตรงนี้ให้โชข้อความว่า คุณคีผิดหมด แล้วค่อยโหลดgoogle
alert("คุณคีผิดหมด"); //----ผมลองเพิ่มตรงนี้แต่พอโหลดเพจแล้วข้อความนี้ยังค้างพอเรากดokมันเกิดbugนะครับ
document.location.href= 'http://www.google.co.th'; //--ตรงนี้ถ้าเปลี่ยนเป็น.swfรันขึ้นมาหรือ.exeที่ทำจากflashรันขึ้นมาแทนgoogleได้ไหมครับ
}
รบกวนสอบถามวิธี ป้องกันเพจที่ผ่านพาสเวิดเข้าไปแล้วนะครับ เช่นเพจlogin พอผ่านเข้าไปจะเป็นเพจtest.html ถ้าเกิดคนรู้url
แล้วเขา สามารถใช้พาทเข้าurlตรงๆ(http://127.0.0.1/testUser/test.html)มันก็จะเข้าถึงtest.html มีวิธีกันมะให้เขาพาทตรงๆเข้ามาได้ไหมครับ
เช่นถ้าเขามะเข้าผ่านเพจlogin ก็มะสามารถใช้พาทเข้าhttp://127.0.0.1/testUser/test.htmlได้ ถ้าเขาใช้พาทนี้ที่เบล้าเซอให้ฟ้อง คุณมะได้รับอนุณาติ
ให้ผ่าน แล้วก็กลับมาเพจlogin
รบกวนด้วยนะครับ
ขอบคุณมากครับ
function checkUser(user, pass){
var count = readCookie('count')*1;
if(count > 2){
alert("คุณป้อนข้อมูลผิด 3 ครั้ง");
document.location.href= 'http://www.google.co.th';
}
for(i = 0; i<users.length; i++){
if(users[i][0]==user && users[i][1]==hex_md5(pass)){
return true;
}
}
createCookie('count', count+1);
return false;
}
ส่วนคำถามที่ 2 นี่ ต้องบอกตามตรงว่า นี่เป็นเหตุผลหนึ่งที่ไม่ควรใช้ javascript และ cookie ในการทำ login ครับ
การป้องกัน user ที่ยังไม่ login นั้นเข้าไปยัง page ที่ต้องการโดยตรนั้น ทำได้โดย ใส่การเช็ค cookie ที่มีตัวแปรที่เราตั้งขึ้นเป็นพิเศษเช่น loggedin=true แล้วในทุกหน้าที่ต้องการให้มีสิทธิ์เฉพาะผู้ที่ login แล้วเท่านั้นก็ทำการอ่าน cookie ว่ามีตัวแปร loggeding มีค่าเป็น true หรือไม่ครับ (เป็นตัวอย่างนะครับอย่านำตัวแปรนี้ไปใช้จริงๆ โดยเฉพาะถ้าจะขึ้นเว็บไซท์จริงๆครับ ตัวแปรนี้ hacker เดาได้ง่ายครับ)
ที่ผมบอกว่านี่เป็นเหตุผลที่ไม่ควรใช้ javascript และ cookie ในการทำระบบ login นั้นเนื่องจากว่า การใช้งาน javascript นั้นสามารถใช้งานผ่าน address bar ได้ที่เขานิยมใช้ทำ Cross-side scripting ได้ครับ โดยเฉพาะอย่างยิ่งการใช้งาน cookie นั้น ผู้ไม่หวังดีนั้นสามารถที่จะตั้ง cookie เป็น user ใดๆก็ได้ (เพราะว่าสามารถตั้งค่าได้ผ่าน javascript)
ทางที่ดีที่สุดเพื่อความปลอดภัยนั้นควรใช้ Server-side script + Session ในการทำระบบนี้ครับ
Mon 16 Jan 2006 12:04:25
รบกวนขอตัวอย่าง วิธีทำแบบServer-side script + Session อยากให้เก็บuserและpassในรูปของtextfile(สามารถเพิม่userและpassในtestfileได้นะครับ) และเช็คuserและpassผิด3ครั้งมีโชข้อความผิดในแต่ละครั้งนะครับ ครั้งที่3ถ้าผิดให้ไปที่google.co.th ถ้าถูกให้ ไปที่test.html
และถ้ามีการhackโดยใช้วิธีพาทเข้าทางนี้เลยhttp://127.0.0.1/testUser/test.htmlให้โชข้อความไม่อนุญาติและกลับมาที่เพจlogin
รบกวนด้วยนะครับ
ขอบคุณมากครับ
<?
session_start();
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", $list[$i]);
if($username == $exp[0] && $password == $exp[0]){
return true;
}
}
return false;
}
if(checkUser($_POST["username"], $POST["password"])){ //เช็คว่า username, password ถูกต้อง
session_register("username"); //register session name
$_SESSION["username"] = $_POST["username"]; //assign session value
header("Location: member.php"); //redirect ไปยังหน้าของสมาชิก
}
?>
ใส่ส่วนนี้ในส่วนหัวของทุกไฟล์ที่ต้องการเช็คว่า login แล้วหรือยัง
<?
session_start();
if(!session_is_registered("username") || !isset($_SESSION["username"])){
header("Location: login.html");
}
?>
ทั้งหมดนี้เป็นตัวอย่างเท่านั้นนะครับ คงต้องรบกวนให้หาอ่านเรื่อง session ของแต่ละภาษาครับว่ามีการใช้งานฟังก์ชั่นอย่างไรครับ และเรื่อง session security นั้นมีรายละเอียดค่อนข้างมากครับ
**อีกอย่างถ้าที่คุณกำลังทำนี้เป็นเว็บจริงๆ แนะนำว่าเก็บลงในฐานข้อมูลดีกว่าครับ เพิ่งนึกออกว่า ถ้าผู้ไม่หวังดีรู้ว่าคุณใช้ไฟล์ใดในการเก็บ username, password นั้นเขาสามารถเปิดดูได้โดยตรงเลยครับ
Fri 20 Jan 2006 09:44:32
ขอโทษนะครับ ผมลองเอาโค้ดที่ให้มาไปลองแล้ว ผมมะรู้ว่าต้องใส่ปุ่มกะช่องloginที่ไหนแล้วเอาสคลิปด้านบนที่ให้มาไปสร้างเพจอย่างไงบ้างนะครับ
รบกวนช่วยอธิบายอีกครั้งนึงครับ คือถ้าผมมีเพจ login.php(เพจนี้จะทำการloginและเช็คค่า) test.htmlหรือtest.phpเพจที่ส่งค่าถูกต้องจากเพจlogin
เพจloginใส่โค้ดอย่างไรบ้างครับ
เพจtest.htmlหรือtest.phpใส่โค้ดอย่างไรบ้างครับ
ถ้าเป็นไปได้ใช้โค้ดด้านล่างนี้เช็คSESSIONได้ไหมครับ(ชอบมากตอนเช็ค3ครั้งแล้วเด้งไปgoogleนะครับ)
testUser.php
<script language="javascript" src="md5.js" type="text/javascript"></script>
<script language="javascript">
var users = new Array();
<?
$f = file("users.txt");
$i = 0;
while(list(,$v) = each($f)){
$up = explode("|X|",$v);
echo "users[".$i."] = new Array('".trim($up[0])."', '".md5(trim($up[1]))."');\n";
$i++;
}
?>
function createCookie(name, value, days){
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function checkUser(user, pass){
var count = readCookie('count')*1;
if(count >= 2){
document.location.href= 'http://www.google.co.th';
}
for(i = 0; i<users.length; i++){
if(users[i][0]==user && users[i][1]==hex_md5(pass)){
//OK
return true;
}
}
createCookie('count', count+1);
return false;
}
function validate(obj){
if(obj.username.value == ""){
alert("Please enter your username");
obj.username.focus();
return false;
}else if(obj.password.value == ""){
alert("Please enter your password");
obj.password.focus();
return false;
}else if(!checkUser(obj.username.value, obj.password.value)){
var count = readCookie('count')*1;
switch(count){
case 1: alert("¤Ø³»é͹¢éÍÁÙżԴ¤ÃÑé§·Õè "+count); break;
case 2: alert("¤Ø³»é͹¢éÍÁÙżԴ¤ÃÑé§·Õè "+count+"\nàËÅ×ÍÍÕ¡¤ÃÑé§à´ÕÂÇà·èÒ¹Ñ鹹ФÃѺ ¤Ô´´Õæ"); break;
}
obj.username.value = '';
obj.password.value = '';
return false;
}
return true;
}
</script>
</script>
<form onsubmit="return validate(this)" action="test.html">
<input type="text" name="username" /><input type="password" name="password" /><input type="submit" value="Login" />
</form>
-------------------------------------------------------
test.html
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</head>
<body>
<strong><font size="7">test </font></strong>
</body>
</html>
รบกวนด้วยนะครับ (โทษนะครับใช้msnใหมครับ ถ้าใช้ขอมั่งได้ใหมครับ)
ขอบคุณมากครับ
หน้า Login นั้น มีเพียง textbox ชื่อว่า username และ password ครับ
ส่วนไฟล์ที่รับค่าก็
<?
session_start();
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", $list[$i]);
if($username == $exp[0] && $password == $exp[0]){
return true;
}
}
return false;
}
if(checkUser($_POST["username"], $POST["password"])){ //เช็คว่า username, password ถูกต้อง
session_register("username"); //register session name
$_SESSION["username"] = $_POST["username"]; //assign session value
header("Location: member.php"); //redirect ไปยังหน้าของสมาชิก
}
?>
ส่วนไฟล์ member.php และไฟล์อื่นๆที่ต้องการเช็ค ก็ใส่
<?
session_start();
if(!session_is_registered("username") || !isset($_SESSION["username"])){
header("Location: login.html"); //ถ้าไม่มี session ตามที่ระบุให้ redirect ไปยังหน้า login.html
}
?>
ในส่วนหัว
ส่วนที่ถามว่า Javascript นั้นสามารถใช้งาน Session ได้ไหมนั้น ตามที่ได้แจ้งไว้แล้วครับว่า Javascript เป็น Client-side script ครับจึงไม่สามารถใช้งาน session ได้ครับ (Session ถูกสร้างจากฝั่ง Server script ที่จะสั่งให้ server เช็คค่าต่างๆของ Session ได้จึงต้องเป็น Server-side script ครับ)
Fri 20 Jan 2006 10:28:57
โทษนะครับ รบกวนอธิบายโค้ดอีกนิดนึงครับ คือผมลองเอามาทำดูมันมะได้นะครับ
อย่างแรกคืออยากได้แบบ เช็ค3ครั้ง ถ้าผิดแต่ละครั้งให้ขึ้นโชข้อความแล้วเด้งไปgoogleนะครับนะครับ(แบบโค้ดที่ให้ตอนแรกนะครับ)
ส่วนโค้ดที่ให้มาผมไปลองเขียนแล้ว พอผมรันLoginแล้วก็ใส่พาสเวิดแบบผิดก่อนมันก็ไปwww.google.co.th เลยนะครับ มะเช็คค่าผิด3 ครั้งก่อนนะครับ (มะมีโชข้อความแต่ละครั้งด้วย) พอคีloginที่มีในฐานข้อมูลtextfile มันก็ไปgoogleเลยนะครับ มะโชคำว่าtestที่ผมเขียนในเพจmember.php นะครับ
โค้ดด้านล่างเป็นโค้ดที่ผมลองเอาไปทำรบกวน ช่วยแก้ให้ทีครับ
รบกวนด้วยนะครับ
ขอบคุณมากครับ
Login.php
<?
session_start();
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", $list[$i]);
if($username == $exp[0] && $password == $exp[0]){
return true;
}
}
return false;
}
if(checkUser($_POST["username"], $POST["password"])){ //àªç¤ÇèÒ username, password ¶Ù¡µéͧ
session_register("username"); //register session name
$_SESSION["username"] = $_POST["username"]; //assign session value
header("Location: member.php"); //redirect ä»Âѧ˹éҢͧÊÁÒªÔ¡
}
?>
<form action="member.php">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
member.php
<?
session_start();
if(!session_is_registered("username") || !isset($_SESSION["username"])){
header("Location: http://www.google.co.th"); //¶éÒäÁèÁÕ session µÒÁ·ÕèÃкØãËé redirect ä»Âѧ˹éÒ login.html
}
?>
Test
Users.txt
username1|X|password1
root|X|1234
test|X|1234
session_start();
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", $list[$i]);
if($username == $exp[0] && $password == $exp[0]){
return true;
}
}
return false;
}
if(isset($_POST["username"]) && isset($_POST["password"])){
if(checkUser($_POST["username"], $POST["password"])){
if(session_is_registered("error_count")){
session_unregister("error_count");
}
session_register("username");
$_SESSION["username"] = $_POST["username"];
header("Location: member.php");
}elseif(!session_is_registered("error_count")){
session_register("error_count");
$_SESSION["error_count"] = 1;
}else{
$_SESSION["error_count"]++;
}
}
if(isset($_SESSION["error_count"])){
switch($_SESSION["error_count"])){
case 1: echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 1');</script>"; break;
case 2: echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 2');</script>"; break;
case 3: header("Location : http://www.google.com"); break;
}
}
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
ตามนี้เลยครับ
Mon 23 Jan 2006 12:51:24
รบกวนอีกนิด คือผมเอาโค้ดด้านบนทั้งหมดที่ให้มาไปลองทำดูโดยsaveเป็นชื่อLogin.phpพอลองรันแล้วมันขึ้นerrorตามด้านล่างนี้นะครับ
Parse error: parse error, unexpected ')', expecting ':' or '{' in c:\appserv\www\roott\login.php on line 35
รบกวนแก้ให้ทีครับ
ขอบคุณมากครับ
Mon 23 Jan 2006 12:54:26
รบกวนอีกนิด คือผมเอาโค้ดด้านบนทั้งหมดที่ให้มาไปลองทำดูโดยsaveเป็นชื่อLogin.phpพอลองรันแล้วมันขึ้นerrorตามด้านล่างนี้นะครับ
Parse error: parse error, unexpected ')', expecting ':' or '{' in c:\appserv\www\roott\login.php on line 35
ส่วนในเพจmember.php ผมต้องเขียนอย่างไรบ้างครับ
รบกวนแก้ให้ทีครับ
ขอบคุณมากครับ
Wed 25 Jan 2006 14:09:14
รบกวนอีกนิด คือผมเอาโค้ดด้านบนทั้งหมดที่ให้มาไปลองทำดูโดยsaveเป็นชื่อLogin.phpพอลองรันแล้วมันขึ้นerrorตามด้านล่างนี้นะครับ
Parse error: parse error, unexpected ')', expecting ':' or '{' in c:\appserv\www\roott\login.php on line 35
ส่วนในเพจmember.php ผมต้องเขียนอย่างไรบ้างครับ
รบกวนด้วยนะครับ
ขอบคุณมากครับ
switch($_SESSION["error_count"]){
case 1: echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 1');</script>"; break;
case 2: echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 2');</script>"; break;
case 3: header("Location : http://www.google.com"); break;
}
}
โทษทีครับ
Wed 25 Jan 2006 16:58:19
ขอโทษนะครับ (รบกวนอีกแล้ว) ผมลองเอาโค้ดไปทำดูแล้วครับ ใส่แล้วมะเห็นมีอะไรเกิดขึ้นเลยนะครับ คือ อยากให้login3ครั้งถ้ามะผ่านให้โหลดไปเว็บgoogle และ แต่ละครั้งที่มะผ่านให้โชข้อความในแต่ละครั้งนะครับ และถ้าผ่านให้โดดไปเว็บtest2.html อยากให้test2.htmlป้องกันการพาทตรงๆโดยที่มะผ่านเพจlogin.phpด้วยนะครับ อยากเก็บuserกับpassเป็นtestfileนะครับ
รบกวนด้วยนะครับ
ขอบคุณมากครับ
<?
session_start();
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", $list[$i]);
if($username == $exp[0] && $password == $exp[0]){
return true;
}
}
return false;
}
if(isset($_POST["username"]) && isset($_POST["password"])){
if(checkUser($_POST["username"], $_POST["password"])){
if(session_is_registered("error_count")){
session_unregister("error_count");
}
session_register("username");
$_SESSION["username"] = $_POST["username"];
header("Location: member.php");
}elseif(!session_is_registered("error_count")){
session_register("error_count");
$_SESSION["error_count"] = 1;
}else{
$_SESSION["error_count"]++;
}
}
if(isset($_SESSION["error_count"])){
if($_SESSION["error_count"] == 1){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 1');</script>";
}elseif($_SESSION["error_count"] == 2){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 2');</script>";
}else{
header("Location: http://www.google.com");
}
echo $_SESSION["error_count"];
}
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
ไฟล์อื่นๆ
<?
session_start();
if(!session_is_registered($_SESSION["username"])){
header("Location: login.html");
exit;
}
?>
ตามนี้เลยครับ
Thu 26 Jan 2006 13:20:17
ขอโทษครับ ขอรบกวนอีกนิดนึงครับ ผมลองเอาโค้ดที่ให้มาไปลองทำดูแล้ว แต่ติดตรงที่พอใช้พาสเวิดถูกต้องมันมะยอมโหลดไปหน้าtest.php มันไปgoogleอย่างเดียวเลยนะครับ
รบกวนด้วยนะครับ
ขอบคุณมากครับ
session_start();
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", $list[$i]);
if($username == $exp[0] && $password == $exp[0]){
return true;
}
}
return false;
}
if(isset($_POST["username"]) && isset($_POST["password"])){
if(checkUser($_POST["username"], $_POST["password"])){
if(session_is_registered("error_count")){
session_unregister("error_count");
}
session_register("username");
$_SESSION["username"] = $_POST["username"];
header("Location: test.php");
}elseif(!session_is_registered("error_count")){
session_register("error_count");
$_SESSION["error_count"] = 1;
}else{
$_SESSION["error_count"]++;
}
}
if(isset($_SESSION["error_count"])){
if($_SESSION["error_count"] == 1){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 1');</script>";
}elseif($_SESSION["error_count"] == 2){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 2');</script>";
}else{
header("Location: http://www.google.com");
}
echo $_SESSION["error_count"];
}
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
ไฟล์อื่นๆ
<?
session_start();
if(!session_is_registered("username")){
header("Location: login.html");
exit;
}
?>
ตามนี้เลยครับ
Thu 26 Jan 2006 16:09:52
โทษนะครับ ผมลองเอาโค้ดไปทำดูแล้วทีนี้ พอผมคีuserกับpassลงในtextboxในเพจlogin.php ถ้าคีผิดมันจะโชข้อความบอก พอครบ3ครั้งมันจะไปเว็บgoogle แต่พอผมคีพาสเวิดที่มีอยู่ในฐานข้อมูลusers.txtถูกมันมะเห็นไป เพจtest.phpครับ รบกวนแก้ให้ทีครับ
เพจlogin.php
ตามโค้ดที่ให้มาด้านบน
---------------------------------
เพจ test.php //มะรู้ว่าเพจนี้ใส่ถูกใหมครับ
<?
session_start();
if(!session_is_registered("username")){
header("Location: login.php"); //ผมมะรู้ว่าตรงนี้ใส่ แบบนี้ใช่ใหมครับ login.php
exit;
}
?>
test
--------------------------
ฐานข้อมูล users.txt
username1|X|password1
root|X|1234
test|X|1234
รบกวนด้วยนะครับ
ขอบคุณมากครับ
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", trim($list[$i]));
echo $exp[0]."=".$username.";; ".$exp[1]."=".$password."<br>";
if($username == $exp[0] && $password == $exp[1]){
return true;
}
}
return false;
}
เนื่องจากเก็บเป็น text file จึงจะมีอักขระของ \n (new line) ติดมาด้วยครับจึงทำให้ไม่ตรงกับค่าที่ป้อนเข้ามาครับ
Fri 27 Jan 2006 09:10:55
ขอโทษนะครับ รบกวนอีกนิด ผมลองเอาโค้ดด้านบนไปลองทำดูแล้ว พอผมรันlogin.php
แล้วมะได้คีข้อมูลลงtextbox แล้วได้ทำการกดปุ่มเลยปรากฎว่าuserกับpassในtextfileมาโชบนเพจlogin.phpหมดเลยครับ
รบกวนแก้ไขให้ทีครับ
รบกวนด้วยนะครับ
ขอบคุณมากครับ
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", trim($list[$i]));
if($username == $exp[0] && $password == $exp[1]){
return true;
}
}
return false;
}
โทษทีครับ ลืมไป
Fri 27 Jan 2006 11:41:28
ขอบคุณมากครับ สำหรับโค้ดด้านบน ชอบมากๆเลยครับ
จะขอรบกวนอีกนิดครับ อยากเพิ่มฟังชั่นเช็คค่าว่างนะครับ เมื่อไม่คีอะไรเลยอยากให้มีเช็คค่าว่างนะครับ ให้ขึ้นข้อความ "ยังไม่ใส่ค่าอะไรเลย" อยากให้เวลาคีแต่ละครั้ง ไม่ให้โชเลข1 เลข2 ได้ไหมครับ
รบกวนด้วยนะครับ
ขอบคุณมากครับ
<script language="javascript">
function trim(str){
while(str.substring(0,1) == ' '){
str = str.substring(1, str.length);
}
while(str.substring(str.length-1, str.length) == ' '){
str = str.substring(0, str.length-1);
}
return str;
}
function validate_form(obj){
if(trim(obj.text1.value) == ""){
alert("ยังไม่ใส่ค่าอะไรเลย");
return false;
}
return true;
}
function countString(obj){
var theform = obj.form;
theform.show_count.value = obj.value.length;
}
</script>
<form onsubmit="validate_form(this)">
Text:<input type="text" name="text1" onkeydown="countString(this)">
Count :<input type="text" name="show_count">
<input type="submit" value="submit">
</form>
ประมาณนี้แลครับ
Fri 27 Jan 2006 16:07:29
รบกวนนิดนึงครับ คือผมลองเอาโค้ดข้างบนมาลองใส่กับโค้ดเช็คloginแล้วมันใส่เข้ากันมะได้นะครับ คือตอนผมรันlogin.php
แล้วคีพาสเวิดแบบผิดลงไปแล้วกดปุ่มมันก็โชว่าคีผิดครั้งที่1 แล้วมันก็มีตัวเลข1โชที่ เหนือtestboxจะมะให้ตัวเลขนี้โชนะครับ
แล้วถ้าผมมะคีอะไรลงไป พอกดปุ่มให้โชข้อความว่า ยังมะคีข้อความอะไรลงไปเลย
รบกวนด้วยนะครับ
ขอบคุณครับ
Sat 28 Jan 2006 09:01:46
รบกวนนิดนึงครับ คือผมลองเอาโค้ดข้างบนมาลองใส่กับโค้ดเช็คloginแล้วมันใส่เข้ากันมะได้นะครับ คือตอนผมรันlogin.php
แล้วคีพาสเวิดแบบผิดลงไปแล้วกดปุ่มมันก็โชว่าคีผิดครั้งที่1 แล้วมันก็มีตัวเลข1โชที่ เหนือtestboxจะมะให้ตัวเลขนี้โชนะครับ
แล้วถ้าผมมะคีอะไรลงไป พอกดปุ่มให้โชข้อความว่า ยังมะคีข้อความอะไรลงไปเลย
รบกวนด้วยนะครับ
ขอบคุณครับ
Tue 31 Jan 2006 09:30:50
รบกวนนิดนึงครับ คือผมลองเอาโค้ดข้างบนมาลองใส่กับโค้ดเช็คloginแล้วมันใส่เข้ากันมะได้นะครับ คือตอนผมรันlogin.php
แล้วคีพาสเวิดแบบผิดลงไปแล้วกดปุ่มมันก็โชว่าคีผิดครั้งที่1 แล้วมันก็มีตัวเลข1โชที่ เหนือtestboxจะมะให้ตัวเลขนี้โชนะครับ
แล้วถ้าผมมะคีอะไรลงไป พอกดปุ่มให้โชข้อความว่า ยังมะคีข้อความอะไรลงไปเลย
รบกวนด้วยนะครับ
ขอบคุณครับ
Tue 21 Mar 2006 08:28:38
รบกวนสอบถามการแปลงโค้ดด้านล่างนี้ให้ใช้กับฐานข้อมูลmysql
รบกวนดูให้ทีครับว่าผมต้องแก้ตรงไหนบ้างครับ
login.php
<body>
<?
session_start();
$list = file("users.txt"); ----จะเปลี่ยนเป็นฐานข้อมูลMysql
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", trim($list[$i]));
if($username == $exp[0] && $password == $exp[1]){
return true;
}
}
return false;
}
if(isset($_POST["username"]) && isset($_POST["password"])){
if(checkUser($_POST["username"], $_POST["password"])){
if(session_is_registered("error_count")){
session_unregister("error_count");
}
session_register("username");
$_SESSION["username"] = $_POST["username"];
header("Location: test.php");
}elseif(!session_is_registered("error_count")){
session_register("error_count");
$_SESSION["error_count"] = 1;
}else{
$_SESSION["error_count"]++;
}
}
if(isset($_SESSION["error_count"])){
if($_SESSION["error_count"] == 1){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 1');</script>";
}elseif($_SESSION["error_count"] == 2){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 2');</script>";
}else{
header("Location: http://www.google.com");
}
echo $_SESSION["error_count"];
}
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
-----------------------------------------------------------------------------------------
# โครงสร้างตาราง `TBuse`
CREATE TABLE `TBuse` (
`user` varchar(10) NOT NULL default '',
`pass` int(10) NOT NULL default '0'
) TYPE=MyISAM;
# dump ตาราง `TBuse`
INSERT INTO `TBuse` VALUES ('Utest1', 1234);
INSERT INTO `TBuse` VALUES ('Utest2', 7777);
รบกวนด้วยนะครับ
ขอบคุณมากครับ
session_start();
function checkUser($username, $password){
$ret = false;
$link = mysql_connect("localhost", "username", "password");
mysql_select_db("dbname", $link);
if(mysql_num_rows(mysql_query("SELECT username FROM TBuse WHERE user='".$username."' AND pass='".$password."'", $link))){'
$ret = true;
}
mysql_close($link)
return $ret;
}
?>
เปลี่ยนฟังก์ชั่นเป็นข้างต้นครับ โดยเปลี่ยนข้อมูล Login และเปลี่ยนชื่อ dbname เป็นฐานข้อมูลที่ต้องการครับ
Wed 22 Mar 2006 08:20:10
รบกวนสอบถามครับ คือผมลองเอาโค้ดที่ให้มาด้านบนนี้ไปลองทำดูมันขึ้นerrorตามด้านล่างนี้นะครับ
Parse error: parse error in c:\appserv\www\login\login.php on line 55
รบกวนดูให้ทีครับว่าผมต้องแก้ตรงไหนบ้างครับ
login.php---------------------------------
<body>
<?
session_start();
/*
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", trim($list[$i]));
if($username == $exp[0] && $password == $exp[1]){
return true;
}
}
return false;
}
*/
function checkUser($username, $password){
$ret = false;
$link = mysql_connect("localhost", "root999", "1234");
mysql_select_db("dbuse", $link);
if(mysql_num_rows(mysql_query("SELECT username FROM TBuse WHERE user='".$username."' AND pass='".$password."'", $link))){'
$ret = true;
}
mysql_close($link)
return $ret;
}
if(isset($_POST["username"]) && isset($_POST["password"])){
if(checkUser($_POST["username"], $_POST["password"])){
if(session_is_registered("error_count")){
session_unregister("error_count");
}
session_register("username");
$_SESSION["username"] = $_POST["username"];
header("Location: test.php");
}elseif(!session_is_registered("error_count")){
session_register("error_count");
$_SESSION["error_count"] = 1;
}else{
$_SESSION["error_count"]++;
}
}
if(isset($_SESSION["error_count"])){
if($_SESSION["error_count"] == 1){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 1');</script>";
}elseif($_SESSION["error_count"] == 2){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 2');</script>";
}else{
header("Location: http://www.google.com");
}
echo $_SESSION["error_count"];
}
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
</body>
ขอบคุณมากครับ
Fri 24 Mar 2006 17:20:15
รบกวนสอบถามครับ คือผมลองเอาโค้ดที่ให้มาด้านบนนี้ไปลองทำดูมันขึ้นerrorตามด้านล่างนี้นะครับ
Parse error: parse error in c:\appserv\www\login\login.php on line 55
รบกวนดูให้ทีครับว่าผมต้องแก้ตรงไหนบ้างครับ
login.php---------------------------------
<body>
<?
session_start();
/*
$list = file("users.txt");
function checkUser($username, $password){
global $list;
for($i=0; $i < count($list); $i++){
$exp = explode("|X|", trim($list[$i]));
if($username == $exp[0] && $password == $exp[1]){
return true;
}
}
return false;
}
*/
function checkUser($username, $password){
$ret = false;
$link = mysql_connect("localhost", "root999", "1234");
mysql_select_db("dbuse", $link);
if(mysql_num_rows(mysql_query("SELECT username FROM TBuse WHERE user='".$username."' AND pass='".$password."'", $link))){'
$ret = true;
}
mysql_close($link)
return $ret;
}
if(isset($_POST["username"]) && isset($_POST["password"])){
if(checkUser($_POST["username"], $_POST["password"])){
if(session_is_registered("error_count")){
session_unregister("error_count");
}
session_register("username");
$_SESSION["username"] = $_POST["username"];
header("Location: test.php");
}elseif(!session_is_registered("error_count")){
session_register("error_count");
$_SESSION["error_count"] = 1;
}else{
$_SESSION["error_count"]++;
}
}
if(isset($_SESSION["error_count"])){
if($_SESSION["error_count"] == 1){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 1');</script>";
}elseif($_SESSION["error_count"] == 2){
echo "<script language=\"javascript\" type=\"text/javascript\">alert('ผิดครั้งที่ 2');</script>";
}else{
header("Location: http://www.google.com");
}
echo $_SESSION["error_count"];
}
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
</body>
ขอบคุณมากครับ
function checkUser($username, $password){
$ret = false;
$link = mysql_connect("localhost", "root999", "1234");
mysql_select_db("dbuse", $link);
if(mysql_num_rows(mysql_query("SELECT username FROM TBuse WHERE user='".$username."' AND pass='".$password."'", $link))){
$ret = true;
}
mysql_close($link)
return $ret;
}
ประมาณนี้ครับ
Sun 28 Sep 2008 20:25:41
ขอโทษน่ค่ะ มีวิธีเข้าไปเช็คพาสเวริด์จาก e-mail ได้ไหมค่ะ
ถ้ามีรบกวนหน่อยน่ะค่ะ
Mon 29 Sep 2008 02:25:04

















