ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: Fallen ที่ 23 เมษายน 2017, 22:45:31



หัวข้อ: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: Fallen ที่ 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 {
.
.
.


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: zang11015 ที่ 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");
}

}
?>


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: Fallen ที่ 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
จึงอยากจะเขียนให้มีแค่ไฟล์เดียวกัน อย่างที่เห็นแต่ก็ติดว่า มันจะทำให้ หน้าอื่นๆเข้าได้อัตโนมัติด้วย

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

ขอบคุณสำหรับน้ำใจ +
 :P


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: tanutsun ที่ 24 เมษายน 2017, 14:28:36
เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php  ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: newnakab ที่ 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;
 }
}
?>


ลองดู


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: Arale1994 ที่ 24 เมษายน 2017, 15:21:43
ขอแวะเก็บข้อมูลหน่อยนะครับ  :P :P


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: Fallen ที่ 24 เมษายน 2017, 15:26:20
เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php  ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม

ไม่ได้นะ


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: Fallen ที่ 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 นั้นแล้ว
+ :P

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

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

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

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

$_SESSION[login2] = "true";

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

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

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

ขอบคุณสำหรับความมีน้ำใจครับ
 :'(


หัวข้อ: Re: ระบบ login ก่อนเข้าถึงไฟล์ ,กำหนดรหัสผ่าน2ชุดอย่างไร ให้แยกหน้าไป
เริ่มหัวข้อโดย: Fallen ที่ 24 เมษายน 2017, 16:06:02
เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php  ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม

ไม่ได้นะ

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

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

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

 :P