我想知道下面的代码是否正确,我一直有很多错误,但我不确定问题是否真的存在于此.代码如下:
用户将单击"退出组".
<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)
但是,当用户单击"退出组"时,我尝试执行的代码甚至没有被执行.大括号内的代码没有任何问题,因为很多人都检查过它.但我想知道我的问题是否可能出现在上面的代码中?谢谢.
如果单击该链接,则没有任何反应,因为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此处传递参数.
看来你混淆了GET并POST提出要求.如果您有表单,表单元素的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协议的信息.