2012-11-12 6 views
0

사례 기능을 사용하여 내 사이트 탐색에 사용하려고합니다.PHP 사례 및 GET

<?php 
$status = $_GET['status']; 
$user = $_GET['user']; 

switch ($status) { 
    case "working": 
     include("index2.php"); 
     break; 
    case "log": 
     include("admin.php"); 
     break; 
    case "admin": 
     include("settings.php"); 
     break; 
    case "users": 
     include("work.php?user=$user"); 
     break; 
} 
?> 

그리고 작업 :

Warning: include(work.php?user=EEN0422) [function.include]: failed to open stream: Operation not permitted in E:\vhosts\example.com\httpdocs\vtlog\browse.php on line 16 

Warning: include(work.php?user=EEN0422) [function.include]: failed to open stream: Operation not permitted in E:\vhosts\example.com\httpdocs\vtlog\browse.php on line 16 

Warning: include() [function.include]: Failed opening 'work.php?user=EEN0422' for inclusion (include_path='.;./includes;./pear') in E:\vhosts\example.com\httpdocs\vtlog\browse.php on line 16 

browse.php의 스크립트입니다 : 내가 PHP를 요청 GET와 함께 사용하려고 할 때

그러나, 그것은 나에게 오류를 제공합니다 여기에서 문제가되는 .php :

<?php 
session_start(); 

if(!$_SESSION['LoggedIn']) header("location: settingsauth.php"); 


$host="localhost"; 
$username="root"; 
$password="root"; 
$db_name="db"; 
$tbl_name="log"; 

$user=$_GET['user']; 


mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$sql="SELECT *, (UNIX_TIMESTAMP(end) - UNIX_TIMESTAMP(start))/60.0/60.0 as hours_difference FROM $tbl_name WHERE user='$user'"; 
$result=mysql_query($sql); 
if ($result === false) { echo "An error occurred."; } 

?> 
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Start</strong></td> 
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>End</strong></td> 
<td width="30%" align="center" bgcolor="#E6E6E6"><strong>Kommentar</strong></td> 
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Tid</strong></td> 
<td width="5%" align="center" bgcolor="E6E6E6"></td> 
</tr> 
<?php 
while($rows=mysql_fetch_array($result)){ 
?> 
<title>VTLog - <? echo $rows['user']; ?></title> 
<tr>  
<td align="center" bgcolor="#FFFFFF"><? echo $rows['start']; ?></td> 
<td align="center" bgcolor="#FFFFFF"><? echo $rows['end']; ?></td> 
<td align="center" bgcolor="#FFFFFF"><? echo $rows['comment']; ?></td> 
<td align="center" bgcolor="#FFFFFF"><?$var = number_format($rows['hours_difference'],2); 
$var = number_format($var,1); 
echo $var; ?></td> 
<td align="center" bgcolor="#FFFFFF"><a href="editwork.php?editid=<? echo $rows['editid']; ?>"><img src="ret.jpg" alt="Ret"></a><form action="workstatus.php" method="get"><input type="hidden" name="editit" value="<? echo $rows['editid']; ?>" /><input type="submit" value="Slet" /></form></td> 
</tr> 

<?php 
} 
mysql_close(); 
?> 
<tr> 
<td align="left" bgcolor="#E6E6E6"><a href="settings.php">Tilbage til oversigt</a></td><td colspan="2" align="center" bgcolor="#E6E6E6">Total arbejdstid: <?php $var = number_format($rows['hours_difference'],2); 
$var = number_format($var,1); 
echo $var;?></td><td bgcolor="#E6E6E6" colspan="2"></td> 
</tr> 
</table> 
+0

'include()'를 사용하여 질의 문자열을 전달할 수 없으며, 전달자는 전달 된 파일 이름을 축 어적으로 취합니다. 'work.php? user = EEN0422'을 파일로 저장합니다. –

답변

2

웹 URL 경로와 같은 PHP 파일은 포함하지 않습니다.

// Wrong 
include("work.php?user=$user"); 

는 대신 이렇게 :

include("work.php"); 
// Which now has access to the current variables including $user 

때마다 include()/require() 새로운 PHP 파일 - 그것은이 (가) 있습니다 코드를 잘 삽입 된 경우 문은 그대로입니다. 이 새 파일에는 변수에 동일한 액세스 권한이 있습니다. include("work.php?user=$user");

올바른 방법입니다, include("work.php");

$user 여전히

1

당신은 include() 또는 require()

잘못된가에 쿼리 문자열을 전달할 수 없습니다 현재 컨텍스트에서 실행되는 PHP 코드 ... 해당 파일이 포함 된 파일의 일부인 것처럼 파일을 전달할 수 없습니다. ramer들

1

포함 work.php에서 액세스()이 포함