HTML的基本php进程

Chr*_*ney 5 html php

当对html表单使用这个php进程时,我只得到"Hello"的响应.这里是我上传文件的链接,也许这是我的终端break.hostoi.com上的问题,它自己的PHP代码

<?php
    $name = $_POST["$name"];
    echo "Hello, " . $name;
?>
Run Code Online (Sandbox Code Playgroud)

如果需要,这里是html

<html>
<head><title>Hello World</title></head>
<body>

<form action="process.php" method="post">
    Enter your name' <input name="name" type="text">
    <input type="submit">
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 14

更改

$name = $_POST["$name"];
Run Code Online (Sandbox Code Playgroud)

$name = $_POST["name"];
Run Code Online (Sandbox Code Playgroud)

美元符号不应该在那里

["$name"]
  ^-- // remove this
Run Code Online (Sandbox Code Playgroud)

在开始<?php标记后立即将错误报告添加到文件顶部

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of code
Run Code Online (Sandbox Code Playgroud)

完成此操作后,会抛出类似于此的错误:

注意:未定义的变量:第X行的...(文件路径)中的名称

要了解有关错误报告的更多信息,请访

另外,浏览PHP.net网站.http://php.net

您可以浏览他们的网站,其中显示了示例.没有比手册本身更好的启动方式了.

PHP.net上的PHP表单


脚注:

此外,您对XSS攻击(跨站点脚本)开放态度.

使用以下(PHP)过滤器功能: FILTER_SANITIZE_FULL_SPECIAL_CHARS

$name = filter_var($_POST['name'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
Run Code Online (Sandbox Code Playgroud)

相当于htmlspecialchars()使用ENT_QUOTESset 调用.可以通过设置禁用编码引号.


编辑:

根据Jeremy1026的评论:

"通过做$_POST["$name"]你基本上做的,$name = foo; $_POST['foo'];"

感谢您提供额外的评论,以便改进答案.