PHP获取请求什么都不返回

时间:2014-12-08 06:22:05

标签: php get echo

使用window.location.hash(用于传入页面的ID)返回如下内容: 另外,对于那些问我为什么使用window.location.hash而不是window.location.href的人是因为window.location.href由于某种原因开始无限循环,而.hash则没有。我不认为这应该是一个大问题,但请告诉我,如果它是,我是否需要改变它。     http://website.com/NewPage.php#?name=1418019307305

[数字串实际上是时代系统时间]

当使用PHP尝试检索此变量时,它不会拾取文件中应该写入的任何文本。

<?php
$myfile = fopen("File1.txt","w");
echo $_GET['name'];
fwrite($myfile, $_GET['name']);
fclose($myfile);
?>

3 个答案:

答案 0 :(得分:1)

尝试打印 $ _ SERVER 变量,它会为您提供数组,并在所需的键中,您可以获取值。它可以帮助您在字符串中找到该变量。

答案 1 :(得分:0)

如果你想在哈希标记或锚之后得到这个值,那就不可能用&#34;标准&#34; HTTP,因为此值永远不会发送到服务器。但是,您可以使用parse_url()将URL解析为位,包括片段部分。

这应该可以解决问题:

<?php
    $name_query = parse_url("http://website.com/NewPage.php#?name=1418019307305");
    $get_name = substr($name_query['query'], strpos($name_query['query'], "=") + 1);    
    echo $get_name;
?>

工作示例:http://codepad.org/8sHYUuCS

然后您可以使用$get_name来存储&#34;名称&#34;文本文件中的值。

答案 2 :(得分:0)

散列标记是一个永远不会被服务器处理的片段,而是用户代理,即浏览器,因此JavaScript当然可以访问它。 (见http://tools.ietf.org/html/rfc3986#section-3.5)。 PHP允许您使用parse_url()操作包含哈希标记的URL。这是获取信息的另一种方式:

<?php
$parts = parse_url("http://website.com/NewPage.php#?name=1418019307305");
list(,$value) = explode("=",$parts['fragment']);
echo $value; // 1418019307305

在这种情况下,散列标记的放置会消除查询字符串,因此$ _SERVER ['QUERY_STRING']将显示一个空字符串。如果按照最佳实践重写URL,则查询字符串将位于散列标记和该标记之后的任何信息之前。在这种情况下,用于解析此类URL的脚本可以是前面的变体,如下所示:

<?php
$bestPracticeURL = "http://website.com/NewPage.php?name=1418019307305#more_data";
$parts = parse_url( $bestPracticeURL );
list(,$value) = explode("=", $parts['query']);
$hashData = $parts['fragment'];
echo "Value: $value, plus extra: $hashData";

// Value: 1418019307305, plus extra: more_data

请注意,在这种情况下,parse_url是如何捕获查询字符串以及哈希标记数据的。当然,如果查询字符串有多个键和值,那么您可能需要在'&amp;'上爆炸。进入一个数组,然后爆炸每个数组元素以提取值。