Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,031

HOME > PHP > PHP Forum > สอบถามเรื่อง user กับ password ให้รับค่าหลายตัว ต้องเขียนยังไง มือใหม่หัดเขียนครับ



 

สอบถามเรื่อง user กับ password ให้รับค่าหลายตัว ต้องเขียนยังไง มือใหม่หัดเขียนครับ

 



Topic : 091740



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์




// ใส่ Username และ Password ที่ต้องการลงไปครับ
$adminuser = "user";
$adminpass = "pass";


ถ้าจะเพิ่มค่า ทำให้รับค่า user กับ password หลายๆตัวต้องเขียนยังไงหรอครับ มือใหม่หัดเขียนอ่ะครับ ช่วยเหลือที



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-03-03 21:43:10 By : oilcoffee View : 1170 Reply : 30
 

 

No. 1



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ลองศึกษาเรียนรู้เรื่อง array หลายมิติครับ

// array ที่มีสมาชิกเป็น array อีกที
$users = array(
    array('username' => 'A', 'password' => 'apass'),
    array('username' => 'B', 'password' => 'bpass'),
    array('username' => 'C', 'password' => 'cpass'),
    array('username' => 'D', 'password' => 'dpass'),
    array('username' => 'E', 'password' => 'epass'),
);

// array แบบ index เริ่มจาก 0
echo $users[0]['username']; // A
echo $users[0]['password']; // apass

echo $users[4]['username']; // E
echo $users[4]['password']; // epass


ไม่รู้ว่าตรงความต้องการหรือเปล่า แต่ถ้าเข้าใจเรื่องนี้ มีประโยชน์แน่นอน ประยุกต์ใช้ได้อีกเยอะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 21:50:56 By : cookiephp
 


 

No. 2



โพสกระทู้ ( 65 )
บทความ ( 1 )



สถานะออฟไลน์
Facebook

เก็บใส่ตัวแปรตัวอื่นครับ เช่น

Code (PHP)
$user1 = 'user 1';
$password1 = 'password 1';

$user2 = 'user 2';
$password2 = 'password 2';

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 21:52:09 By : earthchie
 

 

No. 3



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : earthchie เมื่อวันที่ 2013-03-03 21:52:09
รายละเอียดของการตอบ ::
...ขอบคุณครับต้องไปไล่แก้ ใหม่ไม่รู่จะผ่านรึป่าว มือใหม่ด้วยแก่ด้วยครับ ตาลาย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 22:00:48 By : oilcoffee
 


 

No. 4



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : cookiephp เมื่อวันที่ 2013-03-03 21:50:56
รายละเอียดของการตอบ ::
ขอบคุณครับ น้าแมว ยิ่งเขียนยากไปใหญ่ แต่ขอบคุณครับจะลองไปแก้ดูครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 22:02:25 By : oilcoffee
 


 

No. 5



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ลองอธิบายมาหน่อยสิครับว่า ต้องการจะทำอะไร จะแก้อะไร เพื่ออะไร
โค้ดส่วนที่มีการใช้งานตัวแปรเหล่านั้น หน้าตาเป็นยังไง ลองโพสต์ดูครับ
เผื่ออาจจะหาวิธีที่ง่ายกว่ามาช่วยได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 22:04:26 By : cookiephp
 


 

No. 6



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


พอดีผมจะเขียนหน้า Login.php ครับ ไปได้ codeมา ครับเลยเอามาประยุกต์ใช้ แต่อยากได้แบบที่สามารถใช้ได้หลายuserกับpasswordอ่ะครับ เลยลองเอามาเพิ่มดู แต่ไม่สามารถเพิ่มได้ครับ

อันนี้หน้าlogin.php

Code (PHP)
<?php
session_start();

if ($_POST[op] != "ds") {
	$display_block = "
		<center><form method=POST action=\"$_SERVER[PHP_SELF]\">
		<table>
			<tr>
				<td>Username :</td>
				<td><input name=\"username\" type=\"text\" size=\"20\"></td>
			</tr>
			<tr>
				<td>Password :</td>
				<td><input name=\"password\" type=\"password\" size=\"20\"></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td>
					<input type=\"hidden\" name=\"op\" value=\"ds\">
					<input type=submit name=\"submit\" value=\"เข้าสู่ระบบ\">
                                                                                                           <input type=\"reset\" value=\"ลบข้อมูล\" name=\"reset\">
				</td>
			</tr>
		</table>
	    </form></center>";

} else {
		include 'config.php';
		if ($_POST['username'] == "$adminuser" AND $_POST['password'] == "$adminpass") {
			$_SESSION[login] = "true";
			$_SESSION[username] = "$adminuser";
			header("Location: $redirectpage");
        		exit;
		} else {
		        $display_block = "<center><font face=\"MS Sans Serif\" size=\"2\">คุณกรอก Username หรือ Password ผิดพลาดครับ โปรด กลับไปกรอกใหม่อีกครั้งครับ <a href=\"$_SERVER[PHP_SELF]\">กลับไปกรอกใหม่ คลิ๊กที่นี่</a></font></center>";
		}
}

?>

<!-- เริ่มต้น Code HTML ไว้แก้ไขรูปแบบหน้าตาของหน้านี้ -->
<html>
<head>
<title>โปรด LOGIN เพื่อเข้าสู่ระบบก่อน</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<style>
body, td
{
	font-family: Ms San Serif;
	font-size: 10pt;
}
</style>
</head>

<body bgcolor="#FFFFCC">
<br><br>
<center><font face="MS Sans Serif" size="6" color="#FF0000">โปรด LOGIN เพื่อเข้าสู่ระบบก่อน</font></center>
<br><br>

<!-- หากต้องการให้แสดง FORM ไว้ LOGIN ที่ไหนก็นำ CODE บรรทัดด้านล่างไปไว้ที่นั่นครับ -->
<?php echo "$display_block"; ?>

</body>
</html>
<!-- สิ้นสุด Code HTML ไว้แก้ไขรูปแบบหน้าตาของหน้านี้ -->




config.php ตรงส่วนนี้แหละครับที่จะเพิ่ม

Code (PHP)
<?php

// Bicubica PageProtect Script (Easily Protect Pages on your Site)
// Written By Bicubica.com on April 30th, 2006
// LICENSE: FREE WITH CREDIT GIVEN TO BICUBICA.COM

######################################################
#              	Configuration Settings		     #
######################################################

// ใส่ Username และ Password ที่ต้องการลงไปครับ
$adminuser = "user";
$adminpass = "pass";


// ใส่ URL ของหน้าที่ต้องการให้ไปหลังจาก Login สำเร็จ
$redirectpage = "protect.php";

######################################################
#           END OF CONFIGURATION SETTINGS	     #
######################################################

?>


ป.ล.
รบกวนน้าแมวอีกเรื่องสิครับ ถ้าจะให้สมาชิก Login เข้ามาซ้ำกันได้ต้องเขียนเพิ่มยังไงครับ รบกวนด้วยครับ ไปหาโค็ดมาหลายวันแล้วครับ

ขอบพระคุณล่วงหน้าเป็นอย่างสูงครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 22:24:09 By : oilcoffee
 


 

No. 7



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ปล. ไม่ให้สมาชิกLogin เข้าซ้ำกันนะครับ เขียนเองงงเองครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 22:26:46 By : oilcoffee
 


 

No. 8



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

อ่อ ถ้าแบบนี้ ใช้ associative array จะเหมาะสุดครับ

ใน config
$users = array(
	'admin' => 'pass',
	'admin001' => '012345789',
	'admin003' => 'hellov2',
	'admin005' => 'โหดสัส',
);


และการตรวจสอบจะเป็นแบบนี้

include 'config.php';
// ใช้ isset() ในการตรวจสอบ โดยหาก $_POST['username'] มีค่าอยู่ใน key ของ array $users
// ก็จะให้ผลเป็นจริง เช่น $_POST['username'] มีค่า 'admin'
// และหากเป็นจริง ก็จะตรวจสอบอีกว่า $_POST['password'] นั้นมีค่าเท่ากับค่าของ $users[$_POST['username']]
// สมมติว่า $_POST['username'] มีค่า 'admin003'
// ดังนั้นค่าที่จะตรวจสอบก็คือ 'hellov2' เพราะ $users['admin003'] => 'hellov2'
// และใช้การตรวจสอบที่เข้มงวดกว่าคือ === แทน == (ตรวจสอบชนิดของตัวแปรด้วย)
if (isset($users[$_POST['username']]) && $_POST['password'] === $users[$_POST['username']]) {
	// การเข้าถึงสมาชิกของ array ให้เปิดปิดด้วย ' หรือ " เสมอ เช่น $_SESSION['login']
	// การเข้าถึงแบบนี้ $_SESSION[login] ถือว่าไม่ถูกต้องครับ (ถึงแม้จะรันผ่าน)
	$_SESSION['login'] = true; // ใช้ true ไม่ใช่ "true"
	$_SESSION['username'] = $_POST['username'];
	header("Location: $redirectpage");
	exit;
} else {
		$display_block = "<center><font face=\"MS Sans Serif\" size=\"2\">คุณกรอก Username หรือ Password ผิดพลาดครับ โปรด กลับไปกรอกใหม่อีกครั้งครับ <a href=\"$_SERVER[PHP_SELF]\">กลับไปกรอกใหม่ คลิ๊กที่นี่</a></font></center>";
}


ป.ล. ลองหาตัวอย่างที่ดีกว่านี้นะครับ โค้ดที่คุณเอามามีแบบอย่างการเขียนที่ไม่ดีเยอะครับ




อ่านเพิ่มเติม

array() - http://www.php.net/manual/en/function.array.php
isset() - http://www.php.net/manual/en/function.isset.php

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-03 23:34:48 By : cookiephp
 


 

No. 9



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ทำไมถึงไม่ใช้ database ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 03:43:53 By : ikikkok
 


 

No. 10



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 9 เขียนโดย : ikikkok เมื่อวันที่ 2013-03-04 03:43:53
รายละเอียดของการตอบ ::
ผมเพิ่งหัดทำครัับ ยังมือใหม่อยู่เลยตรับต้องค่อยเป็นค่อยไปครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 06:26:40 By : oilcoffee
 


 

No. 11



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : cookiephp เมื่อวันที่ 2013-03-03 23:34:48
รายละเอียดของการตอบ ::
ขอบคุณครับน้าแมว ช่วยได้เยอะเลบครับสำหรับมือใหม่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 06:31:37 By : oilcoffee
 


 

No. 12



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 11 เขียนโดย : oilcoffee เมื่อวันที่ 2013-03-04 06:31:37
รายละเอียดของการตอบ ::


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 06:45:25 By : cookiephp
 


 

No. 13



โพสกระทู้ ( 5,146 )
บทความ ( 26 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


การค่อยเป็นค่อยไป ผมก็ยังอยากให้ศึกษาด้าน database อยู่ดีครับ..

ถ้าการเริ่มต้น อยู่ที่จุดเริ่มต้นที่ดี และถูกต้อง ผมว่า มันจะไปได้ดี และถูกต้อง ประยุกต์ได้เร็ว

แต่ก็ไม่ได้หมายความว่า ที่กำลังเริ่มต้น ไม่ถูกต้องไม่ดีนะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 08:10:41 By : deawx
 


 

No. 14



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ในความคิดผมแบบนี้ดีที่สุดแล้วครับ เพราะเขาเรียนรู้ไปทีละอย่าง
การเริ่มด้วย database นั่นหมายความว่าเขาต้องเรียนรู้สองภาษาในคราวเดียวกัน (PHP + SQL)

การเริ่มแบบนี้แม้จะดูเหมือนว่าจะเอาไปใช้งานจริงได้ช้ากว่าเริ่มด้วย database
แต่ผมก็คิดว่าหลายๆ คนที่เริ่มเขียน PHP ด้วย database บางทีอาจจะต้องเสียเวลามากกว่า
เพราะไม่เข้าใจพื้นฐานของอะไรสักอย่าง ทำให้ผิดพลาดบ่อยกว่า และไม่เข้าใจว่าผิดตรงไหน อย่างไร

และส่วนใหญ่ก็เริ่มจากการดัดแปลงโค้ดโดยไม่เข้าใจพื้นฐาน (ยิ่งแย่หากไปได้โค้ดตัวอย่างที่ไม่ดี)
แค่การใช้ array หรือการสร้าง function บางทียังไม่รู้จักกันเลย ทั้งๆ ที่เป็นสิ่งที่จำเป็นและช่วยให้เขียนโปรแกรม PHP ได้ง่ายขึ้น

อย่างที่เราเห็นกันบ่อยๆ การตั้งกระทู้เกี่่ยวกับ mysql เราต้องมานั่งบอกเขาว่า
ให้ echo query บ้าง ให้ดู mysql_error() บ้าง เพราะความผิดพลาดพวกนี้ (เช่น SQL ผิด) PHP ไม่แสดงเป็น error โดย default

ในขณะที่การเขียนโปรแกรมโดยใช้ฟังก์ชั่นอื่นๆ เช่น อ่านเขียนไฟล์ นี่ยังพอมี error message เป็น warning ให้เห็นกันทันที (หากไม่ปิด error_reporting)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 08:44:29 By : cookiephp
 


 

No. 15



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

และอีกอย่าง มีคำถามแบบนี้บ่อยๆ ก็ดีด้วยครับ ผมชอบ ไม่เบื่อตอบคำถามเดิมๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 08:58:12 By : cookiephp
 


 

No. 16



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณสำหรับความช่วยเหลือครับ ทุกคำตอบคือกำลังใจสำหรับมือใหม่อย่างผม ขอบคุณจริงๆครับขอบคุณน้าแมวด้วยครับตอนนี้ผ่านไปอีกขั้นนึงแล้วครับ เหลือแต่กำหนดให้แต่ละuser เข้ามาได้เครื่องเดียว ไม่สามารถloginเข้ามาซ้ำกันได้ พอจะมีวิธีไหมครับ ขอรบกวนด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 16:12:34 By : oilcoffee
 


 

No. 17



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

สถานะออฟไลน์


บทความนี้ ลอง apply ดูครับ
https://www.thaicreate.com/php/forum/044757.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-04 16:25:41 By : Ex-[S]i[L]e[N]t
 


 

No. 18



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 16 เขียนโดย : oilcoffee เมื่อวันที่ 2013-03-04 16:12:34
รายละเอียดของการตอบ ::


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-05 05:57:08 By : cookiephp
 


 

No. 19



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ส่วนเรื่องกำหนด user เดียว ไม่สามารถเข้าได้หลายเครื่อง

คงต้องใช้ file ในการตรวจสอบล่ะครับ (ถ้าคุณยืนยันว่าจะยังไม่ไปฐานข้อมูล)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-05 06:02:07 By : cookiephp
 


 

No. 20



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ครับได้ครับ หากต้องใช้fileตรวจสอบ ก็คงต้องใช้ครับ น้าแมวพอจะแนะแนวทางได้ไหมครับ พร้อมcodeประกอบ ส่วนเรื่องฐานข้อมูลตอนนี้ต้องค่อยๆศึกษาครับ เริ่มๆบ้างแล้วครับ
ขอบคุณสำหรับความช่วยเหลือครับ จากใจจริง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-05 09:31:23 By : oilcoffee
 


 

No. 21



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

แนวทางมีครับ ตัวอย่างมีครับ แต่ไปดูอีกกระทู้ แล้วศึกษาทำความเข้าใจเพิ่มเติมอีกนิดเถอะครับ อย่าเพิ่งรีบร้อน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-05 15:31:48 By : cookiephp
 


 

No. 22



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


เมื่อไร น้าแมว จะมาชี้ทางสว่างให้สักทีครับ รอยู่นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-06 20:14:46 By : oilcoffee
 


 

No. 23



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

เพิ่งเห็นครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-07 00:39:51 By : cookiephp
 


 

No. 25



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ช่วยทีครับผม ตอนนี้พยามหาหลายวิธีแล้วครับยังไม่สำเร็จ รบกวนน้าแมวชี้ช่องทางให้ด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-07 06:00:17 By : oilcoffee
 


 

No. 26



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

รอสักครู่ครับ วันนี้เน็ตกากมาก T T
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-07 06:41:12 By : cookiephp
 


 

No. 27



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

นี่คือแนวทางนะครับ คร่าวๆ
ลองเอาไปทำความเข้าใจดู
มีสองไฟล์

login.php
<?php // หากมีตัวแปร $_POST['username'] และ $_POST['password'] ถูกส่งมา // แสดงว่าผู้ใช้ล็อกอินจากฟอร์มแล้ว if (isset($_POST['username'], $_POST['password'])) { // เริ่มต้น session session_start(); // ข้อมูลชื่อผู้ใช้ $users = array( 'admin' => 'pass', 'admin001' => '012345789', 'admin003' => 'hellov2', 'admin005' => 'โหดสัส', ); // ใช้ isset() ในการตรวจสอบ โดยหาก $_POST['username'] // มีค่าอยู่ใน key ของ array $users // ก็จะให้ผลเป็นจริง เช่น $_POST['username'] มีค่า 'admin' // และหากเป็นจริง ก็จะตรวจสอบอีกว่า $_POST['password'] // นั้นมีค่าเท่ากับค่าของ $users[$_POST['username']] // สมมติว่า $_POST['username'] มีค่า 'admin003' // ดังนั้นค่าที่จะตรวจสอบก็คือ 'hellov2' เพราะ $users['admin003'] => 'hellov2' // และใช้การตรวจสอบที่เข้มงวดกว่าคือ === แทน == (ตรวจสอบชนิดของตัวแปรด้วย) if (isset($users[$_POST['username']]) && $_POST['password'] === $users[$_POST['username']] ) { $filename = $_POST['username'] . '.txt'; $can_login = false; // ตรวจว่ามีไฟล์ที่ชื่อ $filename หรือยัง // หากไม่มี if (!file_exists($filename)) { // แสดงว่ายังไม่เคยมีผู้ใช้ล็อกอินด้วย id นี้มาก่อน login ได้เลย $can_login = true; // และสร้างไฟล์ใหม่ขึ้นมา โดยให้ session_id เป็นเนื้อหาของไฟล์ // ซึ่งเราจะใช้ session_id นี้ในการตรวจว่าใครเป็นผู้ใช้ปัจจุบันในภายหลัง file_put_contents($filename, session_id()); } // ถ้ามีอยู่แล้ว else { // อ่านข้อมูลในไฟล์ออกมา ซึ่งจะต้องเป็น session_id ที่เคยเก็บไว้ในการติดต่อครั้งก่อน // (แต่ก็ไม่ทราบว่าเป็นของใคร) // ให้เป็นค่าแก่ตัวแปร $session_id_to_compare $session_id_to_compare = file_get_contents($filename); // เช็คว่าตรงกับ session_id() ของผู้ใช้ปัจจุบันหรือไม่ // ถ้าใช่ if ($session_id_to_compare === session_id()) { // แสดงว่าเป็นเจ้าของ session_id // ให้ล็อกอินได้ $can_login = true; } // หรือถ้าไม่ใช่ แสดงว่าไม่ใช่เจ้าของ session_id นั้น // เช็คว่าวันที่ล่าสุดที่ไฟล์มีการแก้ไขนั้น ห่างจากเวลาปัจจุบันเกิน 1 นาทีแล้วหรือยัง elseif (time() - filemtime($filename) > 60) { // หากเกินแล้ว แสดงว่าผู้ใช้คนก่อนไม่ได้ใช้งานเว็บเกิน 1 นาที // เพราะไม่ได้มีการติดต่อเข้ามาเพื่ออัพเดทเวลาล่าสุด // จึงให้ผู้ใช้ใหม่ล็อกอินได้ $can_login = true; // และให้เขียนค่า session_id ของผู้ใช้ปัจจุบันลงไปด้วย เทคโอเวอร์ซะ file_put_contents($filename, session_id()); } } // และตรงนี้ หากตัวแปร $can_login เป็นจริง if ($can_login) { // บอก $_SESSION ว่าล็อกอินแล้ว $_SESSION['login'] = true; $_SESSION['username'] = $_POST['username']; header('Location: index.php'); exit; } else { $error_message = "ไม่สามารถล็อกอินได้เพราะมีผู้ใช้ชื่อ $_POST[username] ล็อกอินอยู่"; } } else { $error_message = 'ชื่อผู้ใช้หรือรหัสผ่านผิด'; } } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>login.php</title> </head> <body> <?php if (isset($error_message)) { echo $error_message; } ?> <form action="login.php" method="post"> Username<br /> <input type="text" name="username" /><br /> Password<br /> <input type="password" name="password" /><br /> <input type="submit" value="Login" /> </form> </body> </html>


index.php
<?php // เริ่ม session session_start(); // ถ้าไม่ได้ล็อกอินอยู่ if (!isset($_SESSION['login'])) { // ไล่กลับไปหน้าล็อกอิน header('Location: login.php'); } // ชื่อไฟล์ชื่อผู้ใช้ $filename = $_SESSION['username'] . '.txt'; // อ่าน session_id จากไฟล์ชื่อผู้ใช้ปัจจุบัน $session_id_to_compare = file_get_contents($filename); // เปรียบเทียบว่า session_id ในไฟล์นั้นตรงกับ session_id ของผู้ใช้ปัจจุบันหรือไม่ // ถ้าไม่ if ($session_id_to_compare !== session_id()) { // ล็อกเอาท์อัตโนมัติ // สร้างตัวแปรข้อความที่บอกว่าได้ล็อกเอาท์อัตโนมัติไปแล้ว $error_message = "เนื่องจากคุณขาดการติดต่อกับเซิร์ฟเวอร์เป็นเวลามากกว่า 1 นาที และมีผู้ใช้อื่นล็อกอินด้วยชื่อ $_SESSION[username] ไปแล้ว จึงให้ล็อกเอาท์อัตโนมัติ"; // ทำลายตัวแปร $_SESSION ทั้งหมด // โดยเฉพาะ $_SESSION['login'] เพราะเป็นตัวบ่งบอกว่าล็อกอินแล้ว // ด้วย unset() unset($_SESSION['login'], $_SESSION['username']); // หรือจะ $_SESSION = array() ก็ได้ } else { // อัพเดทเวลาแก้ไขไฟล์ล่าสุด คงสถานะออนไลน์ไว้ file_put_contents($filename, $session_id_to_compare); } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>index.php</title> </head> <body> <?php // หากมีตัวแปร $error_message ถูกสร้างขึ้น if (isset($error_message)) { echo $error_message; } else { echo "สวัสดีคุณ $_SESSION[username]"; } ?> </body> </html>


หวังว่าคงมีประโยชน์ครับ




อ่านเพิ่มเติม

file_exists() - http://www.php.net/manual/en/function.file-exists.php
file_get_contents() - http://www.php.net/manual/en/function.file-get-contents.php
file_put_contents() - http://www.php.net/manual/en/function.file-put-contents.php
filemtime() - http://www.php.net/manual/en/function.filemtime.php
session_id() - http://www.php.net/manual/en/function.session-id.php



ประวัติการแก้ไข
2013-03-07 07:54:31
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-07 07:49:58 By : cookiephp
 


 

No. 28



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับน้าแมว เป็นประโยชน์อย่างยิ่งครับ หากมีป้ญหาติดขัดใดๆ ขออนุญาติสอบถามเพิ่มเติมนะครับ


ประวัติการแก้ไข
2013-03-07 09:24:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-07 09:06:54 By : oilcoffee
 


 

No. 29



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนlogin ผ่านมันขึ้น "เนื่องจากคุณขาดการติดต่อกับเซิร์ฟเวอร์เป็นเวลามากกว่า 1 นาที และมีผู้ใช้อื่นล็อกอินด้วยชื่อ admin ไปแล้ว จึงให้ล็อกเอาท์อัตโนมัติ"

ซึ่งมันน่าจะขึ้น "สวัสดีคุณ admin" ไม่รู้ผิดตรงไหนครับ T_T
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-07 15:47:20 By : oilcoffee
 


 

No. 30



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


น้าแมวครับ ไม่ทราบว่าcodeมันผิดตรงไหนอ่ะครับ ช่วยดูให้อีกทีนะครับ รบกวนด้วยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-08 10:07:22 By : oilcoffee
 


 

No. 31



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

โค้ดมันไม่ได้ผิดนะครับ มันล็อกอินซ้ำกันไม่ได้นี่ครับ ถ้ามันขึ้นอย่างนั้น แสดงว่าก่อนหน้านี้คุณล็อกอินด้วยบราวเซอร์อื่นไปแล้ว

ลองศึกษาโค้ดดูดีๆ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-08 10:21:23 By : cookiephp
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่อง user กับ password ให้รับค่าหลายตัว ต้องเขียนยังไง มือใหม่หัดเขียนครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่