如何在网址中传输ask_question
之类的变量,以便根据给定的规则更改index.php的展望?
我的index.php
<a href="index.php?ask_question">Ask question</a>
然而这不起作用,因为我不知道如何引用URL中的ask_question -variable。如果我知道,我可以阅读它,然后根据URL中的名称自定义我的index.php。
我也可以创建以下链接,但这会导致我有很多重复数据,例如用于登录-form的PHP代码。
<a href="ask_question.php">Ask question</a>
我的ask_question.php -form
<form method="post" action="handlers/handler_question.php">
<p>Title:
<input name="title" type="text" cols="92" />
</p>
<p>Question:
<div id="wmd-container" class="resizable-textarea">
<textarea id="input" class="textarea" tabindex="101" rows="15" cols="92" name="body" /></textarea>
</div>
</p>
<p>Tags:
<input name="tags" type="text" cols="92" />
</p>
<input type="submit" value="OK" />
</form>
答案 0 :(得分:3)
if(isset($_GET['ask_question')) {
...do something...
}
更好的是,因为$ _GET超全局是一个数组:
if(array_key_exists('ask_question',$_GET)) {
...do something...
}
此外,手册说明了array_key_exists
与isset
的使用:
对于数组,isset()不返回TRUE 对应于NULL值的键, 虽然
rray_key_exists()
可以。
但是,您无法传递空值,它只会在PHP中显示为空字符串,因此isset
和array_key_exists
在此上下文中完全相同。
读取预定义变量:
答案 1 :(得分:1)
所有GET变量(URL中的变量)最终都在一个名为$ _GET的数组中。使用isset()
,您可以检查是否在URL中传递了特定变量。
if (isset($_GET['ask_question'])) {
// go...
}
答案 2 :(得分:1)
查询参数保存到$ _GET对象。您可以使用isset测试参数是否存在:
if(isset($_GET['ask_question'])){
}
如果您希望将变量传递为GET或POST,则可以使用$ _REQUEST超全局:
if(isset($_REQUEST['ask_question'])){
}
答案 3 :(得分:1)
您可以使用$ _GET超全局访问。
在这种情况下(因为你没有为ask_question定义一个值),你可以这样做:
if (array_key_exists('ask_question', $_GET) === true)
{
// do stuff
}
答案 4 :(得分:1)
使用isset($_GET['NAME_IN_URL'])
。这将返回true
或false
,您可以使用简单的if else语句对其进行评估。
示例:
if (isset($_GET['ask_question']) {
//Echo your form...
}
else {
//Echo the normal index.php
}
另请注意,在链接到查询字符串时,您只需执行<a href="?ask_question">
,这样,如果重命名该文件,它仍然有效。
答案 5 :(得分:1)
为什么不做类似
的事情<a href="index.php?query= ask_question"/>
你的HTML代码中的?
然后在index.php
脚本中,您可以按照以下命令检查query
是否为ask_question
:
if($_GET['query']=='ask_question')
// change the layout as you wish
else
// proceed with not changing the layout