2012-04-30 7 views
0

"changeUserRole"アクションは、私をlocalhostに誘導します... myproject/index.phpではなくxampp index.php?setting =ユーザーリスト。 異なる設定で別のファイルに同じテクニックを実装したのはなぜか分かりません。PHPリンクパラメータは、それが想定されているスクリプトを実行する代わりにlocalhost/xamppにつながります

リダイレクト先のファイルはaction_changeuserrole.phpです。これはSQLクエリを実行し、パラメータなしでこのファイルにリダイレクトされます。

function showUserlistManagement() { 

if (@$_GET['action'] == "addUser") { 
    require_once('actions/userlist/adduser.php'); 
} 
else if (@$_GET['action'] == "changeUserRole") { 
    require_once('actions/userlist/action_changeuserrole.php'); 
} 
else { 
    echo "<a href='?setting=userlist&action=addUser'><button>Add User</button></a>"; 

    $i = 0; 
    $sql = "SELECT doctorID, username, isAdmin FROM doctor ORDER BY isAdmin DESC"; 
    $result = query($sql); 

    echo "<table border='1'>"; 
    while ($row = mysql_fetch_array($result)) { 
     $i = $i + 1; 
     echo "<tr><td>" . $i . "</td><td>" . $row['username'] . "</td><td>" . isAdminText($row['isAdmin']) . "</td><td><a href='?setting=userlist&action=changeUserRole&userID=" . $row['doctorID'] . "&userRole=" . $row['isAdmin'] . "'><button>" . changeUserRoleButton($row['isAdmin']) . "</button></a></td></tr>"; 
    } 
} 

function isAdminText($isAdmin) { 
    if ($isAdmin) { 
     return "admin"; 
    } 
    else return "user"; 
} 

function changeUserRoleButton($isAdmin) { 
    if ($isAdmin) { 
     return 'Demote'; 
    } 
    else return 'Promote'; 
} 

} 

action_changeuserrole.phpファイル:

<?php 
    //$sql = "UPDATE doctor SET (isAdmin = '1') WHERE doctorID = " . $_GET['userID'];   
    //$result = query($sql); 
?> 

<meta http-equiv='refresh' content='0; URL=../../index.php?setting=userlist'> 
+0

あなたはmyprojectに**「** ../../**」にあなたを導くん必ずご上位ディレクトリのリンクです**フォルダ –

+0

はい、私は他のフォルダではなく、私が使っているのと同じレベルで多くのファイルを持っていますこのリダイレクト。このファイルの問題だと思うのですが、 – hermann

+0

なぜヘッダーのリダイレクトではなくメタリフレッシュを使用しますか? – dqhendricks

答えて

0

難しいあなたが求めているし、あなたのコード内で正確に何が起こっているかを理解するには、多分これは役立ちます。

パスは相対パスであるため、現在のURL(またはベースタグ値)に依存します。

あなたのURLがある場合:あなたのURLがある場合、

一方

foo/bar/index.php

foo/bar/test.php

foo/bar/something/something/test.php

../../index.phpはその後につながります

../../index.phpが、その後につながる:これを軽減するために

index.php

、一部の人々は、HTMLで<base>タグを使用します。このタグを使用すると、すべての相対URLが最終パスの計算に使用するベースURLを指定できます。これがメタリフレッシュで機能するかどうかは100%確かではありません。あなたはテストする必要があります。

関連する問題