PHP我的页面在使用isset()后没有显示任何内容

PHP我的页面在使用isset()后没有显示任何内容,php,forms,class,Php,Forms,Class,我有一个index.php,它基本上显示HTML内容。一切都很顺利,直到我放了一个表单和一个if语句来检查是否按下了submit按钮 现在这一页完全是空白的。在浏览器中检查源代码,即使HTML标记也不存在。如果我删除的是设置部分,我会得到一个未定义的索引fname。。。错误 <?php require_once 'config/autoload.php'; if (isset($_POST['submit'])) { $fname = clean_data

我有一个index.php,它基本上显示HTML内容。一切都很顺利,直到我放了一个表单和一个if语句来检查是否按下了submit按钮

现在这一页完全是空白的。在浏览器中检查源代码,即使HTML标记也不存在。如果我删除的是设置部分,我会得到一个未定义的索引fname。。。错误

    <?php require_once 'config/autoload.php';

    if (isset($_POST['submit'])) {
        $fname = clean_data($_POST['fname']);
        $lname = clean_data($_POST['lname']);
        $your_question = clean_data($_POST['question']);

        try {
            $homepage = new Page;
            $author = new Author($fname, $lname);
            $question = new Question($your_question, $author);
        } catch (Exception $e) {
            echo $e->getMessage(), '<br>';
            exit;
        }

        $homepage->content = <<<_END
        <p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>

        <p>You ask: {$question->getQuestion()}</p>

        <form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
        <label for="fname">Enter your first name</label><br>
        <input type="text" id="fname" name="fname" size="30"><br>
        <label for="lname">Enter your last name</label><br>
        <input type="text" id="lname" name="lname" size="30"><br>
        <label for="question">What is your question?</label><br>
        <textarea id="question" name="question" rows="10" cols="70"></textarea><br>
        <input type="submit" name="submit" value="Submit">
        </form>
        _END;
        $homepage->display();
    }

    function clean_data($data)
    {
        $data = trim($data);
        $data = strip_tags($data);
        $data = addslashes($data);
        return $data;
    }

从我看到的情况来看,您希望将表单移到if子句之外,因为现在您正在询问表单是否已提交,然后执行一些操作,但由于您正在检查的表单位于if子句之内,因此它将永远不会显示。那就这样做吧

if(isset($_POST['submit'])){
 <php code>
}
 <INSERT FORM HERE>
if(isset($\u POST['submit'])){
}
更新2

一般的问题是,代码试图访问尚未设置的变量,因为看起来你们都试图显示用户的问题,并允许他提出问题,同时我会正确地执行类似的操作

$fname = isset($_POST['fname']) ? clean_data($_POST['fname']) : NULL;
$lname = isset($_POST['lname']) ? clean_data($_POST['lname']) : NULL;
$your_question = isset($_POST['question']) ? clean_data($_POST['question']) : NULL;


try {
   $homepage = new Page;
   $author = new Author($fname, $lname);
   $question = new Question($your_question, $author);
} catch (Exception $e) {
   echo $e->getMessage(), '<br>';
   exit;
}
$homepage->content = <<<_END
<p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>

<p>You ask: {$question->getQuestion()}</p>
<form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
<label for="fname">Enter your first name</label><br>
<input type="text" id="fname" name="fname" size="30"><br>
<label for="lname">Enter your last name</label><br>
<input type="text" id="lname" name="lname" size="30"><br>
<label for="question">What is your question?</label><br>
<text area id="question" name="question" rows="10" cols="70"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
 _END;
$homepage->display();
$fname=isset($\u POST['fname'])?清除数据($\u POST['fname']):空;
$lname=isset($\u POST['lname'])?清除数据($\u POST['lname']):空;
$your_question=isset($_POST['question'])?清理数据($_POST['question']):空;
试一试{
$homepage=新页面;
$author=新作者($fname,$lname);
$question=新问题($your_question,$author);
}捕获(例外$e){
echo$e->getMessage(),“
”; 出口 } $homepage->content=getQuestion()}

输入您的名字

输入您的姓氏

你的问题是什么?

_结束; $homepage->display();
将代码修改为:

if(isset($\u POST['submit'])){
$fname=清除数据($fnupost['fname']);
$lname=清除数据($U POST['lname']);
$your_question=clean_数据($_POST['question']);
}
试一试{
$homepage=新页面;
$author=新作者($fname,$lname);
$question=新问题($your_question,$author);
}捕获(例外$e){
echo$e->getMessage(),“
”; 出口 } $homepage->content=getQuestion()}

输入您的名字

输入您的姓氏

你的问题是什么?

_结束; $homepage->display(); 函数clean_data($data) { $data=修剪($data); $data=带标签($data); $data=addslashes($data); 返回$data; }
您需要将HEREDOC结束部分放在行的最开头,如文档所述:


$homepage->content=能否请您在if语句之前执行var\u转储($\u POST),并查看在没有显示任何内容的情况下,$\u POST['submit']的值是多少?可以将if的
}
移动到try块之后?var\u dump($\u POST);数组(size=0)为空-但为什么连html代码都不显示为like?可能使这更复杂的是,包括表单在内的所有内容都被分配给一个类属性。我应该重写我的代码吗?因为所有的输出都是由$homepage->display()处理的,并且它包含$content@Joey,这真的取决于你想要实现什么。但是从您提供的代码中我可以看到,$homepage->display将不会被调用,因为$U POST['submit']没有设置,php也不会在设置表单和$homepage的地方输入if子句。@Joey-您可以测试这是否是问题的一种方法是将isset($\U POST['submit'])更改为isset($\U GET['submit'])然后在调用页面时,将?submit=submit添加到url的末尾(例如:localhost/index.php?submit=submit..如果表单显示,则必须将表单移出,$homepage->display移出If子句您向我解释得很好。现在我明白了。@Joey很乐意帮忙,希望您看到我更新的解释:)结尾不是开头吗?问题中是缩进的。在结束标记之前不能有任何空白。
$fname = isset($_POST['fname']) ? clean_data($_POST['fname']) : NULL;
$lname = isset($_POST['lname']) ? clean_data($_POST['lname']) : NULL;
$your_question = isset($_POST['question']) ? clean_data($_POST['question']) : NULL;


try {
   $homepage = new Page;
   $author = new Author($fname, $lname);
   $question = new Question($your_question, $author);
} catch (Exception $e) {
   echo $e->getMessage(), '<br>';
   exit;
}
$homepage->content = <<<_END
<p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>

<p>You ask: {$question->getQuestion()}</p>
<form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
<label for="fname">Enter your first name</label><br>
<input type="text" id="fname" name="fname" size="30"><br>
<label for="lname">Enter your last name</label><br>
<input type="text" id="lname" name="lname" size="30"><br>
<label for="question">What is your question?</label><br>
<text area id="question" name="question" rows="10" cols="70"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
 _END;
$homepage->display();
if (isset($_POST['submit'])) {
    $fname = clean_data($_POST['fname']);
    $lname = clean_data($_POST['lname']);
    $your_question = clean_data($_POST['question']);
}
    try {
        $homepage = new Page;
        $author = new Author($fname, $lname);
        $question = new Question($your_question, $author);
    } catch (Exception $e) {
        echo $e->getMessage(), '<br>';
        exit;
    }

    $homepage->content = <<<_END
    <p>Hello {$author->getFirstName()} {$author->getLastName()}!</p><br>

    <p>You ask: {$question->getQuestion()}</p>

    <form action="{$_SERVER['PHP_SELF']}" method="post" role="form">
    <label for="fname">Enter your first name</label><br>
    <input type="text" id="fname" name="fname" size="30"><br>
    <label for="lname">Enter your last name</label><br>
    <input type="text" id="lname" name="lname" size="30"><br>
    <label for="question">What is your question?</label><br>
    <text area id="question" name="question" rows="10" cols="70"></textarea><br>
    <input type="submit" name="submit" value="Submit">
    </form>
    _END;
    $homepage->display();

function clean_data($data)
{
    $data = trim($data);
    $data = strip_tags($data);
    $data = addslashes($data);
    return $data;
}
    $homepage->content = <<<_END
    ...
    </form>
_END;