2012-04-19 7 views
0

사용자가 볼 수있는 내용 만 제한하려고합니다. URL 변수를 통해 PHP 변수를 전달하므로 자신의 정보만을 표시하지만 ID 번호를 편집하면 다른 사람의 정보를 볼 수 있습니까?PHP 변수로 제한 URL 입력

코드 나는 현재 여기에 표시되어있다 :

$managerID = preg_replace('#[^0-9]#i', '', $_SESSION["id"]); 
$manager = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["manager"]); 
$password = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["password"]); 

include "../adminscripts/connect_to_mysql.php"; 
$sql = mysql_query("SELECT * FROM Users WHERE id='$managerID' AND username='$manager' AND password='$password' AND role='Student' LIMIT 1"); 
$existCount = mysql_num_rows($sql); 
if ($existCount == 0) { 
header("location: http://www.zuluirminger.com/SchoolAdmin/index.php"); 
exit(); 
} 
?> 

<?php 
// Get a list of all items and display them in alphabetically 
include "../adminscripts/connect_to_mysql.php"; 

//Check to see the URL variable exists in the database 
$dynamicList = ""; 
if (isset($_GET['id'])) { 
include "../adminscripts/connect_to_mysql.php"; 
$id = preg_replace('#[^0-9]#i', '', $_GET['id']); 

*********************************************************************************** 
*********************************************************************************** 

// If the ID does not exist the display this message. 
$sql = mysql_query("SELECT * FROM StudentAttendance WHERE StudentID='$id' ORDER BY AttendanceDate DESC"); 
$productCount = mysql_num_rows($sql); 
if ($productCount > 0) { 
    while ($row = mysql_fetch_array($sql)) { 
     $AttendanceDate = $row["AttendanceDate"]; 
     $AttendanceStatus = $row["AttendanceStatus"]; 
     $Notes = $row["Notes"]; 
     $dynamicList .= '<tr style="font-size:15px;"> 
    <td>' . $AttendanceDate . '</td> 
    <td>' . $AttendanceStatus . '</td> 
    <td>' . $Notes . '</td> 
</tr>'; 
    } 
} else { 
    $AttendanceDate = "nil"; 
    $AttendanceStatus = "nil"; 
    $Notes = "nil"; 
} 
} else { 
echo "Something is missing which means we can't display this page! Sorry for the inconvenience and please try again later!"; 
exit(); 
} 
mysql_close(); 
?> 

내가 퍼팅 시도 다음과 같은 경우 내가 위의 코드에 별표 (*)를 배치 한 곳에서 문 ...

if ($id != $managerID) { 
    $id = $managerID; 
} 

그러나 이건 작동하지 않는 것 같은데 ... 나는 그것을 올바른 장소에두고 있는가? 지금까지 올바른 변수를 사용했다고 말할 수 있습니까?

도움이 될 것입니다.

+1

음 ... 그 별들은 모두 당신에게 어떤 이슈를 유발할 수 있습니다 ... – Neal

+0

저는이 질문의 목적을 위해 그들을 넣었습니다 @Neal - 그들은 코드에 실제로 존재하지 않습니다 :) –

+0

당신은 단지 암호화 할 수 있습니까/ID를 해독 하시겠습니까? – kevingreen

답변

3

이미 로그인 한 사용자와 ID가있는 것 같습니다. $_GET['id'] 대신 $_SESSION["id"]을 사용하면 어떨까요?

+0

답장을 보내 주셔서 감사합니다. @jeroen -'$ _GET [ 'id']'대신'$ _SESSION [ "id"]'를 사용해 보았습니다. 그러나 올바른 데이터를 표시하고 있지만 사용자는 여전히 값을 변경할 수 있습니다. URL 및 다른 학생의 데이터를 탐색 할 것입니다 ... –

+0

어쩌면 내가 그것을 변경하는 뜻으로 혼란 스러울 수도 있습니다! –

+0

@Zulu Irminger Everywhere,'$ _SESSION [ "id"]'가 현재 로그인 한 학생의 ID를 포함하고 자신의 데이터 만 변경할 수 있으면'$ _GET [ 'id'] ' ]'전혀. – jeroen

2

조금만 생각을 바꾸면됩니다. 로그인 할 때 사용자 ID 인 세션 변수를 설정하고 쿼리 문자열 대신 세션 변수를 사용하십시오. 또는 쿼리 문자열을 계속 사용하지만 세션 사용자 ID에 대해 유효성을 검사하고 방문하려는 정보인지 확인하십시오.