isset代码没有被执行PHP

New*_*_25 0 php isset

我想知道下面的代码是否正确,我一直有很多错误,但我不确定问题是否真的存在于此.代码如下:

用户将单击"退出组".

<p class="logout"><a id="exit" name="logout" href="#">Exit Group</a></p>
Run Code Online (Sandbox Code Playgroud)

单击"退出组"时应执行的代码如下:

if(isset($_GET['logout'])){ 

    //CODE TO BE EXECUTED        
                            } 
Run Code Online (Sandbox Code Playgroud)

但是,当用户单击"退出组"时,我尝试执行的代码甚至没有被执行.大括号内的代码没有任何问题,因为很多人都检查过它.但我想知道我的问题是否可能出现在上面的代码中?谢谢.

Fel*_*ing 5

如果单击该链接,则没有任何反应,因为URL仅包含片段标识符#.GET请求将被发出.

您通常使用此类链接跳转到页面内的元素(例如<a href="#top">Top</a>,跳转到具有ID的元素top).这完全在浏览器中处理.

如果你只把片段标识符放在那里,那么什么都不会发生.如果链接应该执行某些JavaScript并且实际上不应该链接到其他内容,则经常使用此方法.


您正在$_POST服务器端测试 阵列.但是,如果您POST通过表单发起请求,则此数组仅包含元素.这意味着您需要使用提交按钮创建表单,例如:

<form action="" method="POST">
    <input type="submit" name="logout" value="Exit Group" />
</form>
Run Code Online (Sandbox Code Playgroud)

这里出现了name属性,它将成为$_POST数组中的关键.但是在普通链接上分配它将不起作用.


您也可以使用链接,但通过这种方式获得GET请求:

<a id="exit" href="?logout=1">Exit Group</a>
<!--                 ^-- parameter must be part of the URL, name has no effect    -->
Run Code Online (Sandbox Code Playgroud)

if(isset($_GET['logout'])){    
    //CODE TO BE EXECUTED        
} 
Run Code Online (Sandbox Code Playgroud)

请注意,您必须在logout此处传递参数.


看来你混淆了GETPOST提出要求.如果您有表单,表单元素names 将作为参数传输到服务器.这意味着给出这种形式:

<form method="POST">
    <input type="text" name="foo" value="" />
    <input type="text" name="bar" value="" />
    <input type="submit" name="send" value="Send" />
</form>
Run Code Online (Sandbox Code Playgroud)

如果用户单击提交按钮,$_POST则服务器端的阵列将具有以下键:

$_POST['foo']
$_POST['bar']
$_POST['send']
Run Code Online (Sandbox Code Playgroud)

但这不适用于链接.单击链接将创建正常GET请求,此处,参数必须是URL的一部分,附加在问号后面?并用&符号分隔&:

<a href="somePage.php?foo=1&bar=1&andMore=0"> Link </a>
Run Code Online (Sandbox Code Playgroud)

会导致

$_GET['foo']
$_GET['bar']
$_GET['andMore']
Run Code Online (Sandbox Code Playgroud)

您可能应该阅读有关HTTP协议的信息.