|
|
|
สอบถามเรื่อง user กับ password ให้รับค่าหลายตัว ต้องเขียนยังไง มือใหม่หัดเขียนครับ |
|
|
|
|
|
|
|
ลองศึกษาเรียนรู้เรื่อง 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เก็บใส่ตัวแปรตัวอื่นครับ เช่น
Code (PHP)
$user1 = 'user 1';
$password1 = 'password 1';
$user2 = 'user 2';
$password2 = 'password 2';
|
|
|
|
|
Date :
2013-03-03 21:52:09 |
By :
earthchie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองอธิบายมาหน่อยสิครับว่า ต้องการจะทำอะไร จะแก้อะไร เพื่ออะไร
โค้ดส่วนที่มีการใช้งานตัวแปรเหล่านั้น หน้าตาเป็นยังไง ลองโพสต์ดูครับ
เผื่ออาจจะหาวิธีที่ง่ายกว่ามาช่วยได้ครับ
|
|
|
|
|
Date :
2013-03-03 22:04:26 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอดีผมจะเขียนหน้า 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> </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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปล. ไม่ให้สมาชิกLogin เข้าซ้ำกันนะครับ เขียนเองงงเองครับ
|
|
|
|
|
Date :
2013-03-03 22:26:46 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่อ ถ้าแบบนี้ ใช้ 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมถึงไม่ใช้ database ครับ
|
|
|
|
|
Date :
2013-03-04 03:43:53 |
By :
ikikkok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
การค่อยเป็นค่อยไป ผมก็ยังอยากให้ศึกษาด้าน database อยู่ดีครับ..
ถ้าการเริ่มต้น อยู่ที่จุดเริ่มต้นที่ดี และถูกต้อง ผมว่า มันจะไปได้ดี และถูกต้อง ประยุกต์ได้เร็ว
แต่ก็ไม่ได้หมายความว่า ที่กำลังเริ่มต้น ไม่ถูกต้องไม่ดีนะครับ
|
|
|
|
|
Date :
2013-03-04 08:10:41 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ในความคิดผมแบบนี้ดีที่สุดแล้วครับ เพราะเขาเรียนรู้ไปทีละอย่าง
การเริ่มด้วย 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
และอีกอย่าง มีคำถามแบบนี้บ่อยๆ ก็ดีด้วยครับ ผมชอบ ไม่เบื่อตอบคำถามเดิมๆ
|
|
|
|
|
Date :
2013-03-04 08:58:12 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณสำหรับความช่วยเหลือครับ ทุกคำตอบคือกำลังใจสำหรับมือใหม่อย่างผม ขอบคุณจริงๆครับขอบคุณน้าแมวด้วยครับตอนนี้ผ่านไปอีกขั้นนึงแล้วครับ เหลือแต่กำหนดให้แต่ละuser เข้ามาได้เครื่องเดียว ไม่สามารถloginเข้ามาซ้ำกันได้ พอจะมีวิธีไหมครับ ขอรบกวนด้วยครับ
|
|
|
|
|
Date :
2013-03-04 16:12:34 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่วนเรื่องกำหนด user เดียว ไม่สามารถเข้าได้หลายเครื่อง
คงต้องใช้ file ในการตรวจสอบล่ะครับ (ถ้าคุณยืนยันว่าจะยังไม่ไปฐานข้อมูล)
|
|
|
|
|
Date :
2013-03-05 06:02:07 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับได้ครับ หากต้องใช้fileตรวจสอบ ก็คงต้องใช้ครับ น้าแมวพอจะแนะแนวทางได้ไหมครับ พร้อมcodeประกอบ ส่วนเรื่องฐานข้อมูลตอนนี้ต้องค่อยๆศึกษาครับ เริ่มๆบ้างแล้วครับ
ขอบคุณสำหรับความช่วยเหลือครับ จากใจจริง
|
|
|
|
|
Date :
2013-03-05 09:31:23 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แนวทางมีครับ ตัวอย่างมีครับ แต่ไปดูอีกกระทู้ แล้วศึกษาทำความเข้าใจเพิ่มเติมอีกนิดเถอะครับ อย่าเพิ่งรีบร้อน
|
|
|
|
|
Date :
2013-03-05 15:31:48 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เมื่อไร น้าแมว จะมาชี้ทางสว่างให้สักทีครับ รอยู่นะครับ
|
|
|
|
|
Date :
2013-03-06 20:14:46 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เพิ่งเห็นครับ
|
|
|
|
|
Date :
2013-03-07 00:39:51 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ช่วยทีครับผม ตอนนี้พยามหาหลายวิธีแล้วครับยังไม่สำเร็จ รบกวนน้าแมวชี้ช่องทางให้ด้วยครับ
|
|
|
|
|
Date :
2013-03-07 06:00:17 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รอสักครู่ครับ วันนี้เน็ตกากมาก T T
|
|
|
|
|
Date :
2013-03-07 06:41:12 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับน้าแมว เป็นประโยชน์อย่างยิ่งครับ หากมีป้ญหาติดขัดใดๆ ขออนุญาติสอบถามเพิ่มเติมนะครับ
|
ประวัติการแก้ไข 2013-03-07 09:24:28
|
|
|
|
Date :
2013-03-07 09:06:54 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนlogin ผ่านมันขึ้น "เนื่องจากคุณขาดการติดต่อกับเซิร์ฟเวอร์เป็นเวลามากกว่า 1 นาที และมีผู้ใช้อื่นล็อกอินด้วยชื่อ admin ไปแล้ว จึงให้ล็อกเอาท์อัตโนมัติ"
ซึ่งมันน่าจะขึ้น "สวัสดีคุณ admin" ไม่รู้ผิดตรงไหนครับ T_T
|
|
|
|
|
Date :
2013-03-07 15:47:20 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
น้าแมวครับ ไม่ทราบว่าcodeมันผิดตรงไหนอ่ะครับ ช่วยดูให้อีกทีนะครับ รบกวนด้วยครับ
|
|
|
|
|
Date :
2013-03-08 10:07:22 |
By :
oilcoffee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โค้ดมันไม่ได้ผิดนะครับ มันล็อกอินซ้ำกันไม่ได้นี่ครับ ถ้ามันขึ้นอย่างนั้น แสดงว่าก่อนหน้านี้คุณล็อกอินด้วยบราวเซอร์อื่นไปแล้ว
ลองศึกษาโค้ดดูดีๆ ครับ
|
|
|
|
|
Date :
2013-03-08 10:21:23 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|