2012-01-12 100 views
0

好的,这是我正在尝试解决的问题。我有一个索引页面,其中包含一堆PHP包含在服务器上的其他文件。例如,一个文件来构建我的菜单等。php包含PHP_SELF表单属性问题

在这些文件中,我正在使用一个包含在每个行上使用删除按钮在页面上构建表的包,以便可以删除数据如果需要,由用户提供。有了这样说,是建立在表的页面使用这种形式的定义:

<form name=somename id=someid method=post action=<?php $PHP_SELF?> 

那么发生了什么,当删除执行表格试图张贴到自身,它抛出一个错误到地址栏的:

通知:未定义变量:PHP_SELF在C:\ XAMPP \ htdocs中\上线幅\ somefile.php

第39行是表单属性。

=================================

的索引页包含此的设置是这样的:

<div id="container"> 
    <div id="left"> 
     <p>Welcome <?php echo $_SESSION['USERFIRSTNAME']?> <?php echo $_SESSION['USERLASTNAME']?></p> 
    </div> 
    <div id="right"> 
     <?php 
      //navigation menu 
      include('menu.php'); 
     ?> 
    </div> <!-- menu div --> 
    <div class="clear"></div> 
</div> <!-- container div --> 
<div id="userlist"> 
    <?php 
     //build user access links 
     //include('userlist.php'); 
    ?> 
</div><!-- user list div --> 
<div id="dbview"> 
    <?php 
     include('dbview.php'); 
    ?> 
</div> 

dbview.php建立我上面谈到的表。

我试图找出如何执行删除(它只是更新一个数据库行),而它刷新回到索引页。我敢用处理后的当前代码似乎并不奏效:

if (($someresult)&& ($anotherresult)) 
        { 
         echo'<font color="#FF0000">You have successfully removed item </font>'; 
         header('Location: index.php'); 
         exit; 
        } 
        else 
        { 
         echo'<font color="#FF0000">Error while Removing</font>'; 
        } 

所有的问题似乎是与$ PHP_SELF一部分,但我需要一些帮助。我很抱歉拉出的帖子。希望它是有道理的。如果需要发布更多的代码,我也可以这样做。再次感谢!

+1

试试'$ _SERVER ['PHP_SELF'];' – lfxgroove 2012-01-12 16:53:24

+0

@hakre我找不到任何[docs](http://php.net/manual/en/reserved.constants.php) PHP_SELF'存在,但我确实认为它。 – DaveRandom 2012-01-12 16:57:56

+0

@DaveRandom对,我的错。这也不是一个常量。 – hakre 2012-01-12 16:59:31

回答

5

你想要的数据实际上保存在$_SERVER['PHP_SELF']

如果您希望定义一个名为$PHP_SELF的变量进行定义,那么我认为您已经习惯于在启用了register_globals的服务器上工作,这种情况已不再是这种情况。如果是这种情况,您还应该注意通过$_GET$_POST传递的变量也不会被定义。

+0

DaveRandom - 非常感谢你。那正是我所期待的。我现在已经是一个在stackoverflow的成员约3个星期,我发布的每个问题都得到了有效的回答。你的帮助是最有价值的。再次感谢! – bcar 2012-01-12 17:18:37

+0

@DaveRandom这里可能值得一提的是众所周知的[PHP_SELF漏洞利用程序](http://www.phpro.org/tutorials/PHP-Security.html),因为那些使用PHP_SELF的新手可能没有意识到它容易受到XSS攻击,应该被消毒(例如通过调用htmlentities($ _ SERVER ['PHP_SELF']))。如果你只是搜索“PHP_SELF漏洞利用”,那么有很多这方面的信息。 – HexAndBugs 2012-04-22 11:21:40