ผมทำระบบ 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'] == "$adminuser" AND $_POST['password'] == "$adminpass") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser";
header("Location: $redirectpage");
}
elseif ($_POST['username'] == "$adminuser1" AND $_POST['password'] == "$adminpass1") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser1";
header("Location: $redirectpage1");
exit;
} else {
.
.
.
อ้างถึงจาก: 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'] == "$adminuser" AND $_POST['password'] == "$adminpass") {
$_SESSION[login] = "true";
$_SESSION[username] = "$adminuser";
header("Location: $redirectpage");
}
elseif ($_POST['username'] == "$adminuser1" AND $_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> Username</td>
<td>
<input name="username" type="text" id="txtUsername">
</td>
</tr>
<tr>
<td> 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");
}
}
?>
ลองแล้วเหมือนเดิม ครับ ถ้า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
เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม
หน้า 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;
}
}
?>
ลองดู
ขอแวะเก็บข้อมูลหน่อยนะครับ :P :P
อ้างถึงจาก: tanutsun ใน 24 เมษายน 2017, 14:28:36
เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม
ไม่ได้นะ
อ้างถึงจาก: 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;
}
}
?>
ลองดู
ลองแล้วไม่ได้นะ เป็นไปได้ไหม เพราะว่ามันใช้ 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])) {ขอบคุณสำหรับความมีน้ำใจครับ
:'(
อ้างถึงจาก: Fallen ใน 24 เมษายน 2017, 15:26:20
อ้างถึงจาก: tanutsun ใน 24 เมษายน 2017, 14:28:36
เป็นการกำหนด $_SESSION['page'] ได้ไหมครับ
เช่น
page1.php ก็กำหนด $_SESSION['page'] = 'page1';
แล้วก็เช็คว่า มีสิทธิ์ เข้าหน้าเพจนี้ไหม
ไม่ได้นะ
ทำได้นะ
แต่ต้องกำหนดในไฟล์ login.php ให้ตรงกับหน้าด้วยเผอิญท่านบอกไม่หมด ผมเลยทำไม่ได้ เพราะไปแก้เฉพาะไฟล์ ที่รับค่า (อันที่จริงผมไม่เป็น php เลย)
ไปหาข้อมูลมาเพิ่ม มาอ่านย้อนหลัง ก็ว่าพบทำได้
+ให้นะคับ อิอิ
:P