PHP isset($ _ GET)未触发

时间:2014-01-04 18:38:40

标签: php

住在http://vivavidadesign.com/includes/content.php

我有PHP代码:

<?php
if (isset($_GET["#photo"])){
    print ("HELLOOOOOOO");    
} else {
    print ("Nothing Set");
}
?>

我正在使用此文件与AJAX一起返回文件。

以前转到http://vivavidadesign.com/includes/content.php#photo会触发(isset($_GET["#photo"]))。我可以使用?photo触发它,但我想知道如何触发使用哈希,即#photo

7 个答案:

答案 0 :(得分:1)

PHP不会获取哈希/锚。 Can I read the hash portion of the URL on my server-side application (PHP, Ruby, Python, etc.)?

你必须使用Javascript解析它,并可能通过ajax发送到你的php脚本。

答案 1 :(得分:1)

在请求数据时,浏览器永远不会向服务器发送哈希值。

你必须手动发送,即。使用jquery:

var hash = window.location.hash;
$.ajax({ url: 'content.php?photo=' + hash});

答案 2 :(得分:0)

这类似于this other question

您不是使用$ _GET,而是使用parse_url()

您要找的部分是fragment

Array
(
    [path] => includes/content.php
    [fragment] => photo
)

编辑以澄清:

如果此URL来自客户端,则您滥用/误解了主题标签在URL中的运行方式:http://en.wikipedia.org/wiki/Fragment_identifier。你必须通过javascript解析客户端。

答案 3 :(得分:0)

URL末尾的

#xxx不是页面的参数,而是页面中的锚点。所以PHP不会把它放在GET变量中。

要么使用 [码]  http://vivavidadesign.com/includes/content.php?%23photo [/代码]

如果你真的需要变量的名称是#photo,或者你可以像这样在经典的wat中传递变量 [码]  http://vivavidadesign.com/includes/content.php?photo=something [/代码]

答案 4 :(得分:0)

<?php

if(isset($_GET["photo"])) {
    echo $_GET["photo"];    
} else {
    echo "Nothing Set";
}

?>

并称之为:

 index.php?photo=file.jpg

顺便说一下。如果不需要,请不要使用打印,而是使用echo。

答案 5 :(得分:0)

How to get the value after the hash in "somepage.php#name"?

在问号后面的URL中包含get,例如。
    http://www.example.com/?photo=1
在主题标签之后的URL中包括锚,例如     http://www.example.com/#photo
永远不会从浏览器向服务器发送锚点,但您可以使用javascript找到它,并通过javascript将其传递给服务器。

如果您希望自己的变量为get,则需要将代码中的$_GET['#photo']更改为$_GET['photo'],并将URL中的#photo更改为?photo=something

答案 6 :(得分:0)

你必须选择一个php或javascript才能获得价值:

  1. <强> PHP

    $ ar = explode(“#”,$ _ SERVER ['REQUEST_URI']);

    的print_r($ AR [1]);

  2. 演示:https://eval.in/85871

    2 JS:

    var hash = window.location.hash;  
    document.location.href = '/content.php?photo='+hash;