使用$ _REQUEST时的php空页

时间:2011-11-17 13:17:53

标签: php

我刚开始使用php。我在网页中有一个表单指向handle.php,如下所示:

<form action = "handle.php" method="post">
    <p><b>name:</b> <input type = "text" name = "name" size="20"/><p>
    <input type="submit" name="submit" value="submit my info">
</form>

在我的handle.php中,这就是我所拥有的:

<!DOCTYPE HTML>
<html>
    <head>
        <title> Hello! </title>
    </head>
    <body>
        <?php
        echo "<p>Name: $_REQUEST['name']<p>";
        ?>
        <p> Hi</p>
    </body>
</html>

此页面显示为完全空白。有趣的是,如果我删除$_REQUEST['name'],那么一切都很好。在我看来,调用$_REQUEST会使页面变空(我检查源代码并且没有任何内容)。

我做错了什么?感谢。

10 个答案:

答案 0 :(得分:5)

试试这个:

echo "<p>Name: " . $_REQUEST['name'] . "<p>";

您还可以启用错误报告,以避免出现这种情况。您可以在php.ini文件或PHP页面顶部执行此操作:error_reporting(-1)。

http://php.net/manual/en/function.error-reporting.php

答案 1 :(得分:4)

您有错误报告,并且您收到致命错误,这就是您没有看到任何内容的原因。内联变量不能按照您的方式使用,因此请尝试用以下内容替换回声:

echo "<p>Name: ".$_REQUEST['name']."<p>";

或者这个:

echo "<p>Name: {$_REQUEST['name']}<p>";

答案 2 :(得分:3)

正确的语法:

echo "<p>Name: ".$_REQUEST['name']."<p>";

echo "<p>Name: {$_REQUEST['name']}<p>";

我真的建议您阅读此文档:

答案 3 :(得分:2)

您应该将代码更改为:

echo "<p>Name: {$_REQUEST['name']}<p>";

您应该查看PHP Manual string page上的“复杂卷曲语法”部分。

你应该阅读如何enable error reporting

答案 4 :(得分:1)

echo "<p>Name: $_REQUEST[name]<p>";

答案 5 :(得分:1)

如果你想回应一个数组变量,你需要像它一样“逃避”:

<?php
    echo "<p>Name: {$_REQUEST['name']}<p>";
?>

另一种解决方案是:

<?php
    echo '<p>Name: '.$_REQUEST['name'].'<p>';
?>

查看'字符串与"

字符串之间的差异

答案 6 :(得分:1)

我猜你的脚本会抛出语法错误。

尝试替换此行

echo "<p>Name: $_REQUEST['name']<p>";

echo "<p>Name: {$_REQUEST['name']}<p>";

有关单引号和双引号字符串如何工作的信息,请参阅echo的手册。

一般情况下,在开发网站上启用错误报告通常是一个好主意,因此页面会显示这样的错误,而不仅仅是“抛出白色”。如果确实如此,请确保在生产站点上禁用显示错误(尽管您可能仍想记录错误)。

答案 7 :(得分:1)

可能发生的是你得到一个致命的错误,但是在error_reporting部分中php.ini的配置只是忽略它,这就是你得到一个白页的原因。将其更改为E_ALL或类似的东西,以便更容易开发!

如果您有明确的错误,如果仍未解决,请在此处发布。

答案 8 :(得分:0)

重新发布我之前的回答,删除了错误的位

您没有正确地将值包装在{}中。

<!DOCTYPE HTML>

<html>
    <head>
        <title> Hello! </title>
    </head>

    <body>

        <?php
        echo "<p>Name: {$_REQUEST['name']}<p>";
        ?>

        <p> Hi</p>
    </body>

</html>

您也不应该使用$_REQUEST,而是使用$_GET$_POST。养成使用$_REQUEST的习惯通常是一个坏主意,因为它可以打开CSRF(跨站点请求伪造)攻击。

我还建议在htmlspecialchars中包装您的用户变量,以防止他们将HTML或脚本注入您的网页:

    <?php
    $name = htmlspecialchars($_REQUEST['name']);
    echo "<p>Name: {$name}<p>";
    ?>

答案 9 :(得分:-5)

replace this 
echo "<p>Name: $_REQUEST['name']<p>";

to 

echo "<p>Name: $_REQUEST[name]<p>";