ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป  (อ่าน 693 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« เมื่อ: 23 เมษายน 2017, 22:45:31 »

ผมทำระบบ login ก่อนเข้าใช้ถึงไฟล์

ไฟล์ lohin.php ผมกำหนดให้มีรหัส 2 ชุด เพื่อ redirect ไป หน้าที่ต้องการ page1.php หรือ page2.php
ไฟล์ page1.php กับ page2.php ใช้ ไฟล์ login.php อันเดียวกัน (โค๊ดด้านล่าง)

แต่เมื่อเข้ารหัสชุดใดชุดหนึ่งได้ กลับทำให้ เว็บอีกหน้า เข้าได้ด้วยซะงั้น (อยากให้มันใช้ได้กับรหัสชุดของมัน)
ต้องแก้อย่างไรครับ ในโค๊ด login.php ผมเขียนผิดตรงไหนเหรอครับ?

 wanwan001


login.php

โค๊ด:
<?php
session_start
();

if (
$_POST[op] != "ds") {
$display_block "

..........
form login
..........

"
;

} else {
$adminuser "1";
$adminpass "1";
$redirectpage "page1.php";

$adminuser1 "2"
$adminpass1 "2"
$redirectpage1 "page2.php";


if ($_POST['username'] == "$adminuserAND $_POST['password'] == "$adminpass") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser";
header("Location: $redirectpage");
}
elseif ($_POST['username'] == "$adminuser1AND $_POST['password'] == "$adminpass1") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser1";
header("Location: $redirectpage1");


        
exit;
} else {
.
.
.
บันทึกการเข้า

zang11015
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 13



ดูรายละเอียด
« ตอบ #1 เมื่อ: 24 เมษายน 2017, 04:12:44 »

ผมทำระบบ login ก่อนเข้าใช้ถึงไฟล์

ไฟล์ lohin.php ผมกำหนดให้มีรหัส 2 ชุด เพื่อ redirect ไป หน้าที่ต้องการ page1.php หรือ page2.php
ไฟล์ page1.php กับ page2.php ใช้ ไฟล์ login.php อันเดียวกัน (โค๊ดด้านล่าง)

แต่เมื่อเข้ารหัสชุดใดชุดหนึ่งได้ กลับทำให้ เว็บอีกหน้า เข้าได้ด้วยซะงั้น (อยากให้มันใช้ได้กับรหัสชุดของมัน)
ต้องแก้อย่างไรครับ ในโค๊ด login.php ผมเขียนผิดตรงไหนเหรอครับ?

 wanwan001


login.php

โค๊ด:
<?php
session_start
();

if (
$_POST[op] != "ds") {
$display_block "

..........
form login
..........

"
;

} else {
$adminuser "1";
$adminpass "1";
$redirectpage "page1.php";

$adminuser1 "2"
$adminpass1 "2"
$redirectpage1 "page2.php";


if ($_POST['username'] == "$adminuserAND $_POST['password'] == "$adminpass") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser";
header("Location: $redirectpage");
}
elseif ($_POST['username'] == "$adminuser1AND $_POST['password'] == "$adminpass1") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser1";
header("Location: $redirectpage1");


        
exit;
} else {
.
.
.

ลองดูครับ

โค๊ด:
<?php
session_start
();

if (!
$_POST['op']) {
?>

<form name="form1" method="post">
  Login<br>
  <table border="1" style="width: 300px">
    <tbody>
      <tr>
        <td> &nbsp;Username</td>
        <td>
          <input name="username" type="text" id="txtUsername">
        </td>
      </tr>
      <tr>
        <td> &nbsp;Password</td>
        <td><input name="password" type="password" id="txtPassword">
        </td>
      </tr>
    </tbody>
  </table>
  <br>
  <input type="submit" name="op" value="Login">
</form>
<?

} else {
$adminuser = "1";
$adminpass = "1";
$redirectpage = "page1.php";

$adminuser1 = "2";
$adminpass1 = "2";
$redirectpage1 = "page2.php";


if ($_POST['username'] == "$adminuser" AND $_POST['password'] == "$adminpass") {
$_SESSION['login'] = "true";
$_SESSION['username'] = "$adminuser";
header( "Location: $redirectpage");
}else if($_POST['username'] == "$adminuser1" AND $_POST['password'] == "$adminpass1"){
$_SESSION['login'] = "true";
$_SESSION['username'] = "$adminuser1";
header("Location: $redirectpage1");
}

}
?>
บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 24 เมษายน 2017, 14:19:20 »

ลองแล้วเหมือนเดิม ครับ ถ้าlogin เข้า page1.php ได้ อีกอัน page2.php มันก็จะเข้าได้อัตโนมัติเลย แม้จะใช้ password คนละชุด

ผมเข้าใจว่าน่าจะเกิดจากการที่ ทั้ง 2 ไฟล์
ใช้ ไฟล์ login.php ร่วมกัน (เขียนไว้บนสุดของไฟล์)

ซึ่งเขียนไว้แบบนี้ครับ

โค๊ด:
<?php
session_start
();
// ถ้าไม่ได้ Login ให้ส่งไปหน้า URL login.php
if (!isset($_SESSION[login])) {
     
header("Location: login.php");
     exit;
}
?>

แต่ถ้าจะแก้ได้อาจจะต้องใช้ login1.php login2.php .....

แต่ไฟล์จะเยอะเต็มไปหมดเลย เพราะ 1 หน้า page ใช้ต่อ 1 login.php
จึงอยากจะเขียนให้มีแค่ไฟล์เดียวกัน อย่างที่เห็นแต่ก็ติดว่า มันจะทำให้ หน้าอื่นๆเข้าได้อัตโนมัติด้วย

ไม่รู้ว่าผมเข้าใจถูกไหม พอมีวิธีแก้ไหมครับ

ขอบคุณสำหรับน้ำใจ +
 Tongue
บันทึกการเข้า

tanutsun
ก๊วนเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 485



ดูรายละเอียด
« ตอบ #3 เมื่อ: 24 เมษายน 2017, 14:28:36 »

เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php  ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม
บันทึกการเข้า
newnakab
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 42



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 24 เมษายน 2017, 14:38:45 »

หน้า Login
โค๊ด:
if ($_POST['username'] == "$adminuser" AND $_POST['password'] == "$adminpass") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser";
$_SESSION[userType] = "page1";  // <<<< เพิ่มตรงนี้
header("Location: $redirectpage");
}
elseif ($_POST['username'] == "$adminuser1" AND $_POST['password'] == "$adminpass1") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser1";
$_SESSION[userType] = "page2";  // <<<< เพิ่มตรงนี้
header("Location: $redirectpage1");
}

Page1
โค๊ด:
<?php
session_start
();

if (!isset(
$_SESSION[userType])) {
 if ( $_SESSION[userType] != 'page1' ) {
     
header("Location: login.php");
     exit;
 }
}
?>


Page2
โค๊ด:
<?php
session_start
();

if (!isset(
$_SESSION[userType])) {
 if ( $_SESSION[userType] != 'page2' ) {
     
header("Location: login.php");
     exit;
 }
}
?>


ลองดู
บันทึกการเข้า
Arale1994
คนรักเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 115



ดูรายละเอียด
« ตอบ #5 เมื่อ: 24 เมษายน 2017, 15:21:43 »

ขอแวะเก็บข้อมูลหน่อยนะครับ  Tongue Tongue
บันทึกการเข้า
Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 24 เมษายน 2017, 15:26:20 »

เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php  ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม

ไม่ได้นะ
บันทึกการเข้า

Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 24 เมษายน 2017, 15:28:02 »

หน้า Login
โค๊ด:
if ($_POST['username'] == "$adminuser" AND $_POST['password'] == "$adminpass") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser";
$_SESSION[userType] = "page1";  // <<<< เพิ่มตรงนี้
header("Location: $redirectpage");
}
elseif ($_POST['username'] == "$adminuser1" AND $_POST['password'] == "$adminpass1") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser1";
$_SESSION[userType] = "page2";  // <<<< เพิ่มตรงนี้
header("Location: $redirectpage1");
}

Page1
โค๊ด:
<?php
session_start
();

if (!isset(
$_SESSION[userType])) {
 if ( $_SESSION[userType] != 'page1' ) {
     
header("Location: login.php");
     exit;
 }
}
?>


Page2
โค๊ด:
<?php
session_start
();

if (!isset(
$_SESSION[userType])) {
 if ( $_SESSION[userType] != 'page2' ) {
     
header("Location: login.php");
     exit;
 }
}
?>


ลองดู

ลองแล้วไม่ได้นะ เป็นไปได้ไหม เพราะว่ามันใช้ login.php อันเดียวกัน จึงทำให้ ถ้าเข้าอันใดอันหนึ่งได้ อีกหน้าจะเข้าได้อัตโนมัติ เพราะมันผ่านเงื่อนไขของ login.php นั้นแล้ว
+ Tongue

ทำได้เเล้วครับ
แก้ให้ ชื่อ seesion ที่ส่งค่า ให้ตรงกับ ไฟล์ที่รับค่า

login.php
$_SESSION[login] = "true";

ตรงนี้ให้ตั้งเป็น

โค๊ด:
$_SESSION[login1] = "true";

$_SESSION[login2] = "true";

แล้วไฟล์ที่รับค่า page1 และ page2 ให้ตั้งชื่อตรงกัน

โค๊ด:
if (!isset($_SESSION[login1])) {

if (!isset($_SESSION[login2])) {

ขอบคุณสำหรับความมีน้ำใจครับ
 Cry
« แก้ไขครั้งสุดท้าย: 24 เมษายน 2017, 16:17:18 โดย Fallen » บันทึกการเข้า

Fallen
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 162
ออฟไลน์ ออฟไลน์

กระทู้: 2,751



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 24 เมษายน 2017, 16:06:02 »

เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php  ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม

ไม่ได้นะ

ทำได้นะ แต่ต้องกำหนดในไฟล์ login.php ให้ตรงกับหน้าด้วย

เผอิญท่านบอกไม่หมด ผมเลยทำไม่ได้  เพราะไปแก้เฉพาะไฟล์ ที่รับค่า (อันที่จริงผมไม่เป็น php เลย)
ไปหาข้อมูลมาเพิ่ม มาอ่านย้อนหลัง ก็ว่าพบทำได้

+ให้นะคับ อิอิ

 Tongue

บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์