我想知道下面的代码是否正确,我一直有很多错误,但我不确定问题是否真的存在于此。代码如下:
用户将点击“退出组”。
<p class="logout"><a id="exit" name="logout" href="#">Exit Group</a></p>
单击“退出组”时应执行的代码如下:
if(isset($_GET['logout'])){
//CODE TO BE EXECUTED
}
但是,我试图在用户点击“退出组”时执行的代码甚至没有被执行。 大括号内的代码没有任何问题,因为很多人都检查了它。但我想知道我的问题是否可能出现在上面的代码中?谢谢。
答案 0 :(得分: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>
这里有name
属性,它将成为$_POST
数组中的关键字。但是在普通链接上分配它将无效。
您也可以使用链接,但通过这种方式获得GET请求:
<a id="exit" href="?logout=1">Exit Group</a>
<!-- ^-- parameter must be part of the URL, name has no effect -->
和
if(isset($_GET['logout'])){
//CODE TO BE EXECUTED
}
请注意,您必须在此处传递参数logout
。
您似乎混淆了GET
和POST
个请求。如果您有表单,则表单元素的name
将作为参数传输到服务器。这意味着给出了这种形式:
<form method="POST">
<input type="text" name="foo" value="" />
<input type="text" name="bar" value="" />
<input type="submit" name="send" value="Send" />
</form>
如果用户点击提交按钮,服务器端的$_POST
数组将具有密钥:
$_POST['foo']
$_POST['bar']
$_POST['send']
但这不适用于链接。点击链接会创建正常的GET
请求,此处参数必须是网址的一部分,附加在问号?
后面并用&符号&
分隔:< / p>
<a href="somePage.php?foo=1&bar=1&andMore=0"> Link </a>
将导致
$_GET['foo']
$_GET['bar']
$_GET['andMore']
您可能应该阅读HTTP protocol。
答案 1 :(得分:3)
您使用的是常规超链接,不会发布任何表单。你需要一个method="post"
形式的提交按钮才能做到这一点。常规链接只会产生GET请求,并且不会以任何方式发布。
编辑:添加简单示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Form test</title>
</head>
<body>
<?if ($_SERVER['REQUEST_METHOD'] == 'POST'):?>
<pre><? print_r($_POST)?></pre>
<?endif;?>
<? // $_SERVER['REQUEST_URI'] holds the current URL, so we know that ?>
<? // we'll end up back in this file when the form is submitted. ?>
<form method="post" action="<?= $_SERVER['REQUEST_URI']; ?>">
<input type="text" name="textbox"
value="<?= isset($_POST['textbox'])?$_POST['textbox']:'Type something' ?>" />
<input type="submit" name="submitbutton" value="Submit" />
</form>
</body>
</html>
答案 2 :(得分:3)
a
不是表单控件。如果它在表单中,则必须是input
或select
。
对于手动关联,请执行href="/page?logout"
答案 3 :(得分:1)
$_POST
的表单时才会填写 method=post
。
答案 4 :(得分:0)
是。 POST和GET是两回事;)
if(isset($_GET['logout']))
答案 5 :(得分:0)
此<a id="exit" name="logout" href="#">
应为<a id="exit" href="?logoff=true#">
。
然后logoff
将位于$_GET
数组中。