พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
Javascript development / รบกวน(อีกแล้ว)ผมอยากรู้ว่ามีวิธีเช็คพาสเวิดก่อนเข้าเพจไหมครับ
แบบเช็คด้วยจาว...
แบบเช็คด้วยจาวาสคลิป3ครั้งถ้าผิดให้ไปเพจอื่นนะครับ
Thu 12 Jan 2006 20:06:16

แบบเช็คด้วยจาวาสคลิป 3ครั้ง ถ้าผิดให้ไปเพจอื่นนะครับ ส่วนusername กับpassเวิดให้เช็คจากฐานข้อมูลmysql

รบกวนขอสคลิปตัวอย่างครับ

ขอบคุณมากครับ

Administrator
Thu 12 Jan 2006 20:18:46
วิธีง่ายสุดคงต้องใช้ server-side script ในการเช็คครับ เมื่อไม่ผ่านก็ส่ง cookie หรือ session นับไปเรื่อยๆครับ ในหน้า login นั้นๆก็ให้เช็คก่อนแสดงผลว่า cookie หรือ session นั้นๆนับถึงกำหนดหรือยังครับถ้าตรงกับที่กำหนดหรือเกิน ก็ให้ไปยังหน้าที่ต้องการครับ

ยังไงลองเขียนดูก่อนนะครับไม่ได้ยังไง ติดตรงไหนลองเอาโค๊ดมาดูกันครับ
รุต
รุต
Fri 13 Jan 2006 12:05:21

รบกวนขอตัวอย่าง  จาวาสคลิป เช็คuserกับpass 3ครั้งก่อนเข้าเว็บ ถ้าใส่ทั้ง3ครั้งผิดให้ไปเข้าเว็บอื่น  เก็บuserกับpass เป็นtextfileสามารถเพิ่มเข้าไปได้

รบกวนด้วยนะครับ  เขียนมะถูกนะครับ จะเอาไปอแดบเข้ากับงานนะครับ

ขอบคุณมากนะครับ

Administrator
Fri 13 Jan 2006 13:31:46
ถ้าคุณต้องการใช้ javascript จริงๆคงต้องมี module เพื่อทำการเข้ารหัสด้วยครับ เนื่องจากถ้า user view source ขึ้นมาก็จะเห็นข้อมูลทั้งหมดได้เลยครับ (เหตุผลหนึ่งที่ไม่ควรใช้ javascript) ดู source code ได้ที่นี่ครับ http://pajhome.org.uk/crypt/md5/md5src.html แล้ว save เป็น md5.js ครับ

<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ทุกครั้งที่ผิดนะครับ

    รบกวนด้วยนะครับ

Administrator
Fri 13 Jan 2006 14:45:41
การจะให้ redirect ไปยังหน้าที่ต้องการเพียงแต่ใส่ page ที่ต้องการในส่วนของ attribute ของ form ครับ เช่น <form action="test.html">

ส่วนเมื่อต้องการ 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;
}

ลองดูตามนี้ล่ะครับ ขอบคุณมากครับสำหรับคำชม Smile
รุต
รุต
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;
}

 รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Fri 13 Jan 2006 15:34:19
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;
}
รุต
รุต
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

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Mon 16 Jan 2006 11:09:49
นี่คำตอบของคำถามแรกครับ

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 ในการทำระบบนี้ครับ Smile
รุต
รุต
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

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Mon 16 Jan 2006 14:26:17
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 ไปยังหน้าของสมาชิก
}
?>

ใส่ส่วนนี้ในส่วนหัวของทุกไฟล์ที่ต้องการเช็คว่า 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ใหมครับ  ถ้าใช้ขอมั่งได้ใหมครับ)

ขอบคุณมากครับ

Administrator
Fri 20 Jan 2006 09:53:07
ลองตามนี้ครับ
หน้า 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

Administrator
Sat 21 Jan 2006 23:17:16
<?
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  ผมต้องเขียนอย่างไรบ้างครับ

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Wed 25 Jan 2006 14:31:32
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;
    }
}

โทษทีครับ
รุต
รุต
Wed 25 Jan 2006 16:58:19

ขอโทษนะครับ  (รบกวนอีกแล้ว) ผมลองเอาโค้ดไปทำดูแล้วครับ ใส่แล้วมะเห็นมีอะไรเกิดขึ้นเลยนะครับ คือ  อยากให้login3ครั้งถ้ามะผ่านให้โหลดไปเว็บgoogle  และ แต่ละครั้งที่มะผ่านให้โชข้อความในแต่ละครั้งนะครับ  และถ้าผ่านให้โดดไปเว็บtest2.html  อยากให้test2.htmlป้องกันการพาทตรงๆโดยที่มะผ่านเพจlogin.phpด้วยนะครับ อยากเก็บuserกับpassเป็นtestfileนะครับ

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Wed 25 Jan 2006 22:16:56
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(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อย่างเดียวเลยนะครับ

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Thu 26 Jan 2006 14:56:24
<?
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

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Thu 26 Jan 2006 21:14:24
โทษทีครับ เพิ่งมีเวลา Debug ให้ครับ

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หมดเลยครับ
รบกวนแก้ไขให้ทีครับ
           รบกวนด้วยนะครับ
             ขอบคุณมากครับ

Administrator
Fri 27 Jan 2006 09:24:31
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;
}

โทษทีครับ ลืมไป Smile
รุต
รุต
Fri 27 Jan 2006 11:41:28

ขอบคุณมากครับ  สำหรับโค้ดด้านบน  ชอบมากๆเลยครับ 

    จะขอรบกวนอีกนิดครับ อยากเพิ่มฟังชั่นเช็คค่าว่างนะครับ  เมื่อไม่คีอะไรเลยอยากให้มีเช็คค่าว่างนะครับ ให้ขึ้นข้อความ "ยังไม่ใส่ค่าอะไรเลย"   อยากให้เวลาคีแต่ละครั้ง ไม่ให้โชเลข1  เลข2 ได้ไหมครับ

รบกวนด้วยนะครับ

ขอบคุณมากครับ

  

Administrator
Fri 27 Jan 2006 12:04:47
เข้าใจว่าต้องการใช้โชว์ว่ามีการพิทพ์มาแล้วกี่ตัวอักษร ทำได้โดยใช้ Javascript ครับ เช่น

<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จะมะให้ตัวเลขนี้โชนะครับ
แล้วถ้าผมมะคีอะไรลงไป  พอกดปุ่มให้โชข้อความว่า ยังมะคีข้อความอะไรลงไปเลย

รบกวนด้วยนะครับ
ขอบคุณครับ

Administrator
Tue 31 Jan 2006 11:22:19
การจะตรวจสอบว่ามีการใส่ข้อมูลหรือยังนั้นเพียงใช้ Javascript ในการตรวจสอบซึ่งหาได้ในกระทู้เก่าๆครับ
รุต
รุต
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);

รบกวนด้วยนะครับ

ขอบคุณมากครับ

Administrator
Tue 21 Mar 2006 11:58:26
<?
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>

ขอบคุณมากครับ

Administrator
Fri 24 Mar 2006 17:55:40
โทษทีครับ มี ' (single quote) ติดไปด้วย

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;
}

ประมาณนี้ครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login